# 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`
  Modifier and Type
  Field
  Description
  `protected EventListenerList`
  `listenerList`
  The listener list.

- ## 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`
  Modifier and Type
  Method
  Description
  `void`
  `addListDataListener(ListDataListener l)`
  Adds a listener to the list that's notified each time a change to the data model occurs.
  `protected void`
  `fireContentsChanged(Object source, int index0, int index1)`
  `AbstractListModel` subclasses must call this method after one or more elements of the list change.
  `protected void`
  `fireIntervalAdded(Object source, int index0, int index1)`
  `AbstractListModel` subclasses must call this method after one or more elements are added to the model.
  `protected void`
  `fireIntervalRemoved(Object source, int index0, int index1)`
  `AbstractListModel` subclasses must call this method after one or more elements are removed from the model.
  `ListDataListener[]`
  `getListDataListeners()`
  Returns an array of all the list data listeners registered on this `AbstractListModel`.
  `<T extends EventListener>
  T[]`
  `getListeners(Class<T> listenerType)`
  Returns an array of all the objects currently registered as `FooListener`s upon this model.
  `void`
  `removeListDataListener(ListDataListener l)`
  Removes a listener from the list that's notified each time a change to the data model occurs.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## 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