# Class BasicDirectoryModel

java.lang.Object
javax.swing.AbstractListModel<Object>
javax.swing.plaf.basic.BasicDirectoryModel

All Implemented Interfaces:
  `PropertyChangeListener, Serializable, EventListener, ListModel<Object>`

public class BasicDirectoryModel extends AbstractListModel<Object> implements PropertyChangeListener
Basic implementation of a file list.

## Field Summary

### Fields declared in class AbstractListModel

`listenerList`

## Constructor Summary

Constructors
Constructor
Description
`BasicDirectoryModel(JFileChooser filechooser)`
Constructs a new instance of `BasicDirectoryModel`.

## Method Summary

Modifier and Type
Method
Description
`void`
`addPropertyChangeListener(PropertyChangeListener listener)`
Adds a PropertyChangeListener to the listener list.
`boolean`
`contains(Object o)`
Returns `true` if an element `o` is in file cache, otherwise, returns `false`.
`void`
`fireContentsChanged()`
Invoked when a content is changed.
`protected void`
`firePropertyChange(String propertyName, Object oldValue, Object newValue)`
Support for reporting bound property changes for boolean properties.
`Vector<File>`
`getDirectories()`
Returns a list of directories.
`Object`
`getElementAt(int index)`
Returns the value at the specified index.
`Vector<File>`
`getFiles()`
Returns a list of files.
`PropertyChangeListener[]`
`getPropertyChangeListeners()`
Returns an array of all the property change listeners registered on this component.
`int`
`getSize()`
Returns the length of the list.
`int`
`indexOf(Object o)`
Returns an index of element `o` in file cache.
`void`
`intervalAdded(ListDataEvent e)`
Deprecated, for removal: This API element is subject to removal in a future version.
Obsolete method, not used anymore.
`void`
`intervalRemoved(ListDataEvent e)`
Deprecated, for removal: This API element is subject to removal in a future version.
Obsolete method, not used anymore.
`void`
`invalidateFileCache()`
This method is used to interrupt file loading thread.
`protected boolean`
`lt(File a, File b)`
Deprecated, for removal: This API element is subject to removal in a future version.
Obsolete method, not used anymore.
`void`
`propertyChange(PropertyChangeEvent e)`
This method gets called when a bound property is changed.
`void`
`removePropertyChangeListener(PropertyChangeListener listener)`
Removes a PropertyChangeListener from the listener list.
`boolean`
`renameFile(File oldFile, File newFile)`
Renames a file in the underlying file system.
`protected void`
`sort(Vector<? extends File> v)`
Sorts a list of files.
`void`
`validateFileCache()`
Validates content of file cache.

### Methods declared in class AbstractListModel

`addListDataListener, fireContentsChanged, fireIntervalAdded, fireIntervalRemoved, getListDataListeners, getListeners, removeListDataListener`

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### BasicDirectoryModel

public BasicDirectoryModel(JFileChooser filechooser)
Constructs a new instance of `BasicDirectoryModel`.

Parameters:
  `filechooser` - an instance of {JFileChooser}

## Method Details

### propertyChange

public void propertyChange(PropertyChangeEvent e)
Description copied from interface: `PropertyChangeListener`
This method gets called when a bound property is changed.

Specified by:
  `propertyChange` in interface `PropertyChangeListener`
Parameters:
  `e` - A PropertyChangeEvent object describing the event source and the property that has changed.

### invalidateFileCache

public void invalidateFileCache()
This method is used to interrupt file loading thread.

### getDirectories

public Vector<File> getDirectories()
Returns a list of directories.

Returns:
  a list of directories

### getFiles

public Vector<File> getFiles()
Returns a list of files.

Returns:
  a list of files

### validateFileCache

public void validateFileCache()
Validates content of file cache.

### renameFile

public boolean renameFile(File oldFile, File newFile)
Renames a file in the underlying file system.

Parameters:
  `oldFile` - a `File` object representing the existing file
  `newFile` - a `File` object representing the desired new file name
Returns:
  `true` if rename succeeded, otherwise `false`
Since:
  1.4

### fireContentsChanged

public void fireContentsChanged()
Invoked when a content is changed.

### getSize

public int getSize()
Description copied from interface: `ListModel`
Returns the length of the list.

Specified by:
  `getSize` in interface `ListModel<Object>`
Returns:
  the length of the list

### contains

public boolean contains(Object o)
Returns `true` if an element `o` is in file cache, otherwise, returns `false`.

Parameters:
  `o` - an element
Returns:
  `true` if an element `o` is in file cache

### indexOf

public int indexOf(Object o)
Returns an index of element `o` in file cache.

Parameters:
  `o` - an element
Returns:
  an index of element `o` in file cache

### getElementAt

public Object getElementAt(int index)
Description copied from interface: `ListModel`
Returns the value at the specified index.

Specified by:
  `getElementAt` in interface `ListModel<Object>`
Parameters:
  `index` - the requested index
Returns:
  the value at `index`

### intervalAdded

@Deprecated(since="17", forRemoval=true) public void intervalAdded(ListDataEvent e)
Deprecated, for removal: This API element is subject to removal in a future version.
Obsolete method, not used anymore.
Obsolete - not used. This method is a no-op.

Parameters:
  `e` - list data event

### intervalRemoved

@Deprecated(since="17", forRemoval=true) public void intervalRemoved(ListDataEvent e)
Deprecated, for removal: This API element is subject to removal in a future version.
Obsolete method, not used anymore.
Obsolete - not used. This method is a no-op.

Parameters:
  `e` - list data event

### sort

protected void sort(Vector<? extends File> v)
Sorts a list of files.

Parameters:
  `v` - a list of files

### lt

@Deprecated(since="17", forRemoval=true) protected boolean lt(File a, File b)
Deprecated, for removal: This API element is subject to removal in a future version.
Obsolete method, not used anymore.
Obsolete - not used

Parameters:
  `a` - a file
  `b` - another file
Returns:
  a comparison of the file names

### addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener listener)
Adds a PropertyChangeListener to the listener list. The listener is registered for all bound properties of this class.

If `listener` is `null`, no exception is thrown and no action is performed.

Parameters:
  `listener` - the property change listener to be added
Since:
  1.6
See Also:
  - `removePropertyChangeListener(PropertyChangeListener)`
  - `getPropertyChangeListeners()`

### removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener listener)
Removes a PropertyChangeListener from the listener list.

If listener is null, no exception is thrown and no action is performed.

Parameters:
  `listener` - the PropertyChangeListener to be removed
Since:
  1.6
See Also:
  - `addPropertyChangeListener(PropertyChangeListener)`
  - `getPropertyChangeListeners()`

### getPropertyChangeListeners

public PropertyChangeListener[] getPropertyChangeListeners()
Returns an array of all the property change listeners registered on this component.

Returns:
  all of this component's `PropertyChangeListener`s or an empty array if no property change listeners are currently registered
Since:
  1.6
See Also:
  - `addPropertyChangeListener(PropertyChangeListener)`
  - `removePropertyChangeListener(PropertyChangeListener)`
  - `PropertyChangeSupport.getPropertyChangeListeners()`

### firePropertyChange

protected void firePropertyChange(String propertyName, Object oldValue, Object newValue)
Support for reporting bound property changes for boolean properties. This method can be called when a bound property has changed and it will send the appropriate PropertyChangeEvent to any registered PropertyChangeListeners.

Parameters:
  `propertyName` - the property whose value has changed
  `oldValue` - the property's previous value
  `newValue` - the property's new value
Since:
  1.6