src.com.ibm.as400.vaccess.IFSList Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400-jdk8 Show documentation
Show all versions of jt400-jdk8 Show documentation
The Open Source version of the IBM Toolbox for Java
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: IFSList.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2000 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.vaccess;
import java.awt.*;
import java.util.*;
import java.beans.*;
import com.ibm.as400.access.*;
import java.io.IOException;
/**
* The IFSList class represents a
* AWT list class extension that can display a list of files, directories
* or both from a server.
*
* Error events are generated if errors are encountered.
*
* @see com.ibm.as400.vaccess.ErrorEvent
* @see com.ibm.as400.vaccess.ErrorListener
* @see com.ibm.as400.access.IFSFile
* @see com.ibm.as400.access.IFSFileFilter
* @see java.awt.List
**/
class IFSList extends java.awt.List
implements IFSFileFilter
{
private static final String copyright = "Copyright (C) 1997-2000 International Business Machines Corporation and others.";
private AS400 sys_;
private String path_ = "/";
private String filter_ = "*";
private boolean sort_ = true;
private IFSFile ifsFile_;
private int directory_ = DIRECTORYONLY;
private Vector fList;
private Vector actionEventList = new Vector();
private Vector errorEventList = new Vector();
private PropertyChangeSupport propertyList = new PropertyChangeSupport(this);
/**
* Display directory only.
**/
public static final int DIRECTORYONLY = 1;
/**
* Display files only.
**/
public static final int FILEONLY = 2;
/**
* Display files and directories.
**/
public static final int BOTH = 3;
/**
* Constructs an IFSList object. It is a default list object. If the system is not set,
* the user will be prompted for system name and signon information.
**/
public IFSList()
{
super();
}
/**
* Receives file information from the file classes
* during processing.
*
* This method should not be called by the application.
* @param file The file to process.
* @return true if the file should be added to the list; false otherwise.
**/
public boolean accept(IFSFile file)
{
boolean fAccept = false;
int i;
try
{
switch (directory_)
{
case 1:
if (file.isDirectory())
{
fAccept = true;
}
else
{
fAccept = false;
}
break;
case 2:
if (file.isFile())
{
fAccept = true;
}
else
{
fAccept = false;
}
break;
case 3:
fAccept = true;
break;
default:
fAccept = false;
break;
}
}
catch (IOException e)
{
// fire error event
fireError(e, "accept");
return false;
}
if (fAccept)
{
if (sort_)
{
String temp;
for (i=0; i 0)
{
fList.insertElementAt(file.getName(), i);
break;
}
}
if (i == fList.size())
{
fList.addElement(file.getName());
}
}
else
{
add(file.getName());
}
}
return fAccept;
}
/**
*Adds a listener to the action completed event list.
*
*@param listener The listener object.
**/
public synchronized void addActionCompletedListener(ActionCompletedListener listener)
{
actionEventList.addElement(listener);
}
/**
*Adds a listener to the error event list.
*
*@param listener The listener object.
**/
public synchronized void addErrorListener(ErrorListener listener)
{
errorEventList.addElement(listener);
}
/**
*Adds a property changed listener to the list
*
*@param listener The listener to add.
**/
public synchronized void addPropertyChangeListener(PropertyChangeListener listener)
{
propertyList.addPropertyChangeListener(listener);
}
private void fireAction(String sourceMethod)
{
Vector targets;
synchronized (this)
{
targets = (Vector) actionEventList.clone();
}
ActionCompletedEvent actionEvt = new ActionCompletedEvent(this);
for (int i = 0; i < targets.size(); i++)
{
ActionCompletedListener target = (ActionCompletedListener)targets.elementAt(i);
target.actionCompleted(actionEvt);
}
}
private void fireError(Exception e, String sourceMethod)
{
Vector targets;
synchronized (this)
{
targets = (Vector) errorEventList.clone();
}
ErrorEvent errorEvt = new ErrorEvent(this, e);
for (int i = 0; i < targets.size(); i++)
{
ErrorListener target = (ErrorListener)targets.elementAt(i);
target.errorOccurred(errorEvt);
}
}
/**
* Returns the filter to be used with the list.
* @return The filter to use for the list.
**/
public String getFilter()
{
return filter_;
}
/**
* Returns the directory to be displayed.
* @return The directory path to be displayed.
**/
public String getPath()
{
return path_;
}
/**
* Returns if sorting is done for the list.
* @return true if list should be sorted; false otherwise.
**/
public boolean isSort()
{
return sort_;
}
/**
* Returns what should be displayed in the list: File only, directory
* only or both.
* @return The value that represents the list property.
**/
public int getListType()
{
return directory_;
}
/**
* Returns the system object that represents the server to list.
* @return The system object that represents the server to list.
**/
public AS400 getSystem()
{
return sys_;
}
/**
* Fills the list with the requested information. If the system or
* system name is not set, the user will be prompted for it. The
* list is cleared and repopulated each time this method is called.
* @throws IOException
*
*
**/
public void populateList()
throws IOException
{
setVisible(false);
removeAll();
setVisible(true);
if (sys_ == null)
{
sys_ = new AS400();
}
if (ifsFile_ == null)
{
ifsFile_ = new IFSFile(sys_, path_);
}
// try
// {
if ((directory_ == DIRECTORYONLY) || (directory_ == BOTH))
{
add(".");
add("..");
}
fList = new Vector();
if (filter_ != null)
{
ifsFile_.list(this, filter_);
}
else
{
ifsFile_.list(this);
}
for (int i=0; i