Class AbstractCatalogTree
- java.lang.Object
-
- javax.swing.tree.DefaultTreeModel
-
- jmri.jmrit.catalog.AbstractCatalogTree
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Comparable<NamedBean>
,javax.swing.tree.TreeModel
,PropertyChangeProvider
,CatalogTree
,NamedBean
- Direct Known Subclasses:
CatalogTreeFS
,CatalogTreeIndex
public abstract class AbstractCatalogTree extends javax.swing.tree.DefaultTreeModel implements CatalogTree
TreeModel used by CatalogPanel to create a tree of resources.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface jmri.NamedBean
NamedBean.BadNameException, NamedBean.BadSystemNameException, NamedBean.BadUserNameException, NamedBean.DisplayOptions, NamedBean.DuplicateSystemNameException
-
-
Field Summary
Fields Modifier and Type Field Description (package private) java.util.HashMap<java.beans.PropertyChangeListener,java.lang.String>
listenerRefs
protected java.lang.String
mSystemName
(package private) java.beans.PropertyChangeSupport
pcs
(package private) java.util.HashMap<java.beans.PropertyChangeListener,java.lang.String>
register
-
Fields inherited from class javax.swing.tree.DefaultTreeModel
asksAllowsChildren, listenerList, root
-
Fields inherited from interface jmri.NamedBean
DISPLAY_NAME_FORMAT, INCONSISTENT, PROPERTY_STATE, QUOTED_NAME_FORMAT, UNKNOWN
-
-
Constructor Summary
Constructors Constructor Description AbstractCatalogTree(java.lang.String sysname)
AbstractCatalogTree(java.lang.String sysname, java.lang.String username)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addDeleteLock(NamedBean lock)
void
addPropertyChangeListener(java.beans.PropertyChangeListener l)
Add aPropertyChangeListener
to the listener list.void
addPropertyChangeListener(java.beans.PropertyChangeListener l, java.lang.String beanRef, java.lang.String listenerRef)
Request a call-back when a bound property changes.void
addPropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
Add aPropertyChangeListener
for a specific property.void
addPropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener, java.lang.String beanRef, java.lang.String listenerRef)
Request a call-back when a bound property changes.int
compareSystemNameSuffix(java.lang.String suffix1, java.lang.String suffix2, NamedBean n)
Compare the suffix of this NamedBean's name with the suffix of the argument NamedBean's name for theNamedBean.compareTo(jmri.NamedBean)
operation.java.lang.String
describeState(int state)
Provide human-readable, localized version of state value.void
dispose()
Deactivate this object, so that it releases as many resources as possible and no longer effects others.protected void
firePropertyChange(java.lang.String p, java.lang.Object old, java.lang.Object n)
java.lang.String
getBeanType()
For instances in the code where we are dealing with just a bean and a message needs to be passed to the user or in a log.java.lang.String
getComment()
Get associated comment text.java.lang.String
getListenerRef(java.beans.PropertyChangeListener l)
Get the textual reference for the specific listenerjava.util.ArrayList<java.lang.String>
getListenerRefs()
Returns a list of all the listeners referencesint
getNumPropertyChangeListeners()
Number of current listeners.java.beans.PropertyChangeListener[]
getPropertyChangeListeners()
Get allPropertyChangeListener
s currently attached to this object.java.beans.PropertyChangeListener[]
getPropertyChangeListeners(java.lang.String propertyName)
Get allPropertyChangeListener
s currently listening to changes to the specified property.java.beans.PropertyChangeListener[]
getPropertyChangeListenersByReference(java.lang.String name)
Get a list of all the property change listeners that are registered using a specific nameCatalogTreeNode
getRoot()
Get the root element of the tree as a jmri.CatalogTreeNode object (Instead of Object, as parent swing.TreeModel provides).int
getState()
Provide generic access to internal state.java.lang.String
getSystemName()
Get a system-specific name.java.lang.String
getUserName()
User's identification for the item.void
insertNodes(java.lang.String pathToRoot)
Starting point to recursively add nodes to the tree by scanning a file directoryabstract void
insertNodes(java.lang.String pName, java.lang.String pPath, CatalogTreeNode pParent)
Recursively add nodes to the treeboolean
isDeleteAllowed()
void
removeDeleteLock(NamedBean lock)
void
removePropertyChangeListener(java.beans.PropertyChangeListener l)
Remove the specified listener from this object.void
removePropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
Remove the specified listener of the specified property from this object.void
setComment(java.lang.String comment)
Set associated comment text.void
setState(int s)
Provide generic access to internal state.void
setUserName(java.lang.String s)
Set the user name, normalizing it if needed.void
updateListenerRef(java.beans.PropertyChangeListener l, java.lang.String newName)
void
vetoableChange(java.beans.PropertyChangeEvent evt)
-
Methods inherited from class javax.swing.tree.DefaultTreeModel
addTreeModelListener, asksAllowsChildren, fireTreeNodesChanged, fireTreeNodesInserted, fireTreeNodesRemoved, fireTreeStructureChanged, getChild, getChildCount, getIndexOfChild, getListeners, getPathToRoot, getPathToRoot, getTreeModelListeners, insertNodeInto, isLeaf, nodeChanged, nodesChanged, nodeStructureChanged, nodesWereInserted, nodesWereRemoved, reload, reload, removeNodeFromParent, removeTreeModelListener, setAsksAllowsChildren, setRoot, valueForPathChanged
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface jmri.NamedBean
compareTo, getDisplayName, getDisplayName, getProperty, getPropertyKeys, getUsageReport, removeProperty, setProperty, toString
-
-
-
-
Field Detail
-
mSystemName
protected final java.lang.String mSystemName
-
pcs
java.beans.PropertyChangeSupport pcs
-
register
java.util.HashMap<java.beans.PropertyChangeListener,java.lang.String> register
-
listenerRefs
java.util.HashMap<java.beans.PropertyChangeListener,java.lang.String> listenerRefs
-
-
Constructor Detail
-
AbstractCatalogTree
public AbstractCatalogTree(java.lang.String sysname, java.lang.String username)
-
AbstractCatalogTree
public AbstractCatalogTree(java.lang.String sysname)
-
-
Method Detail
-
getBeanType
@CheckReturnValue public java.lang.String getBeanType()
Description copied from interface:NamedBean
For instances in the code where we are dealing with just a bean and a message needs to be passed to the user or in a log.- Specified by:
getBeanType
in interfaceNamedBean
- Returns:
- a string of the bean type, eg Turnout, Sensor etc
-
insertNodes
public abstract void insertNodes(java.lang.String pName, java.lang.String pPath, CatalogTreeNode pParent)
Recursively add nodes to the tree- Specified by:
insertNodes
in interfaceCatalogTree
- Parameters:
pName
- Name of the resource to be scanned; this is only used for the human-readable treepPath
- Path to this resource, including the pName partpParent
- Node for the parent of the resource to be scanned, e.g. where in the tree to insert it.
-
insertNodes
public void insertNodes(java.lang.String pathToRoot)
Starting point to recursively add nodes to the tree by scanning a file directory- Specified by:
insertNodes
in interfaceCatalogTree
- Parameters:
pathToRoot
- Path to Directory to be scanned
-
getRoot
@CheckReturnValue public CatalogTreeNode getRoot()
Get the root element of the tree as a jmri.CatalogTreeNode object (Instead of Object, as parent swing.TreeModel provides).- Specified by:
getRoot
in interfaceCatalogTree
- Specified by:
getRoot
in interfacejavax.swing.tree.TreeModel
- Overrides:
getRoot
in classjavax.swing.tree.DefaultTreeModel
- Returns:
- the root element
-
getComment
@CheckReturnValue public java.lang.String getComment()
Get associated comment text.- Specified by:
getComment
in interfaceNamedBean
- Returns:
- the comment or null
-
setComment
public void setComment(java.lang.String comment)
Set associated comment text.Comments can be any valid text.
- Specified by:
setComment
in interfaceNamedBean
- Parameters:
comment
- Null means no comment associated.
-
addPropertyChangeListener
public void addPropertyChangeListener(java.beans.PropertyChangeListener l)
Description copied from interface:PropertyChangeProvider
Add aPropertyChangeListener
to the listener list.- Specified by:
addPropertyChangeListener
in interfacePropertyChangeProvider
- Parameters:
l
- The PropertyChangeListener to be added
-
addPropertyChangeListener
public void addPropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
Description copied from interface:PropertyChangeProvider
Add aPropertyChangeListener
for a specific property.- Specified by:
addPropertyChangeListener
in interfacePropertyChangeProvider
- Parameters:
propertyName
- The name of the property to listen on.listener
- The PropertyChangeListener to be added
-
removePropertyChangeListener
public void removePropertyChangeListener(java.beans.PropertyChangeListener l)
Description copied from interface:PropertyChangeProvider
Remove the specified listener from this object.- Specified by:
removePropertyChangeListener
in interfacePropertyChangeProvider
- Parameters:
l
- ThePropertyChangeListener
to remove.
-
removePropertyChangeListener
public void removePropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener)
Description copied from interface:PropertyChangeProvider
Remove the specified listener of the specified property from this object.- Specified by:
removePropertyChangeListener
in interfacePropertyChangeProvider
- Parameters:
propertyName
- The name of the property to stop listening to.listener
- ThePropertyChangeListener
to remove.
-
getPropertyChangeListeners
public java.beans.PropertyChangeListener[] getPropertyChangeListeners()
Description copied from interface:PropertyChangeProvider
Get allPropertyChangeListener
s currently attached to this object.- Specified by:
getPropertyChangeListeners
in interfacePropertyChangeProvider
- Returns:
- An array of PropertyChangeListeners.
-
getPropertyChangeListeners
public java.beans.PropertyChangeListener[] getPropertyChangeListeners(java.lang.String propertyName)
Description copied from interface:PropertyChangeProvider
Get allPropertyChangeListener
s currently listening to changes to the specified property.- Specified by:
getPropertyChangeListeners
in interfacePropertyChangeProvider
- Parameters:
propertyName
- the name of the property of interest- Returns:
- an array of PropertyChangeListeners
-
getNumPropertyChangeListeners
@CheckReturnValue public int getNumPropertyChangeListeners()
Number of current listeners. May return -1 if the information is not available for some reason.- Specified by:
getNumPropertyChangeListeners
in interfaceNamedBean
- Returns:
- the number of listeners.
-
addPropertyChangeListener
public void addPropertyChangeListener(java.beans.PropertyChangeListener l, java.lang.String beanRef, java.lang.String listenerRef)
Description copied from interface:NamedBean
Request a call-back when a bound property changes. Bound properties are the known state, commanded state, user and system names.- Specified by:
addPropertyChangeListener
in interfaceNamedBean
- Parameters:
l
- The listener. This may change in the future to be a subclass of NamedProprtyChangeListener that carries the name and listenerRef values internallybeanRef
- The name (either system or user) that the listener uses for this namedBean, this parameter is used to help determine when which listeners should be moved when the username is moved from one bean to anotherlistenerRef
- A textual reference for the listener, that can be presented to the user when a delete is called
-
addPropertyChangeListener
public void addPropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener listener, java.lang.String beanRef, java.lang.String listenerRef)
Description copied from interface:NamedBean
Request a call-back when a bound property changes. Bound properties are the known state, commanded state, user and system names.- Specified by:
addPropertyChangeListener
in interfaceNamedBean
- Parameters:
propertyName
- The name of the property to listen tolistener
- The listener. This may change in the future to be a subclass of NamedProprtyChangeListener that carries the name and listenerRef values internallybeanRef
- The name (either system or user) that the listener uses for this namedBean, this parameter is used to help determine when which listeners should be moved when the username is moved from one bean to anotherlistenerRef
- A textual reference for the listener, that can be presented to the user when a delete is called
-
getPropertyChangeListenersByReference
@CheckReturnValue public java.beans.PropertyChangeListener[] getPropertyChangeListenersByReference(java.lang.String name)
Description copied from interface:NamedBean
Get a list of all the property change listeners that are registered using a specific name- Specified by:
getPropertyChangeListenersByReference
in interfaceNamedBean
- Parameters:
name
- The name (either system or user) that the listener has registered as referencing this namedBean- Returns:
- empty list if none
-
getListenerRefs
@CheckReturnValue public java.util.ArrayList<java.lang.String> getListenerRefs()
Description copied from interface:NamedBean
Returns a list of all the listeners references- Specified by:
getListenerRefs
in interfaceNamedBean
- Returns:
- a list of textual references
-
updateListenerRef
public void updateListenerRef(java.beans.PropertyChangeListener l, java.lang.String newName)
- Specified by:
updateListenerRef
in interfaceNamedBean
-
getListenerRef
@CheckReturnValue public java.lang.String getListenerRef(java.beans.PropertyChangeListener l)
Description copied from interface:NamedBean
Get the textual reference for the specific listener- Specified by:
getListenerRef
in interfaceNamedBean
- Parameters:
l
- the listener of interest- Returns:
- the textual reference
-
getSystemName
@CheckReturnValue public java.lang.String getSystemName()
Description copied from interface:NamedBean
Get a system-specific name. This encodes the hardware addressing information. Any given system name must be unique within the layout.- Specified by:
getSystemName
in interfaceNamedBean
- Returns:
- the system-specific name
-
getUserName
@CheckReturnValue public java.lang.String getUserName()
Description copied from interface:NamedBean
User's identification for the item. Bound parameter so manager(s) can listen to changes. Any given user name must be unique within the layout. Must not match the system name.- Specified by:
getUserName
in interfaceNamedBean
- Returns:
- null if not set
-
setUserName
public void setUserName(java.lang.String s)
Description copied from interface:NamedBean
Set the user name, normalizing it if needed.- Specified by:
setUserName
in interfaceNamedBean
- Parameters:
s
- the new user name
-
firePropertyChange
protected void firePropertyChange(java.lang.String p, java.lang.Object old, java.lang.Object n)
-
dispose
public void dispose()
Description copied from interface:NamedBean
Deactivate this object, so that it releases as many resources as possible and no longer effects others.For example, if this object has listeners, after a call to this method it should no longer notify those listeners. Any native or system-wide resources it maintains should be released, including threads, files, etc.
It is an error to invoke any other methods on this object once dispose() has been called. Note, however, that there is no guarantee about behavior in that case.
Afterwards, references to this object may still exist elsewhere, preventing its garbage collection. But it's formally dead, and shouldn't be keeping any other objects alive. Therefore, this method should null out any references to other objects that this NamedBean contained.
-
getState
@CheckReturnValue public int getState()
Description copied from interface:NamedBean
Provide generic access to internal state.This generally shouldn't be used by Java code; use the class-specific form instead (e.g. getCommandedState in Turnout). This is provided to make scripts easier to read.
-
describeState
@CheckReturnValue public java.lang.String describeState(int state)
Description copied from interface:NamedBean
Provide human-readable, localized version of state value.This method is intended for use when presenting to a human operator.
- Specified by:
describeState
in interfaceNamedBean
- Parameters:
state
- the state to describe- Returns:
- the state in localized form
-
setState
public void setState(int s) throws JmriException
Description copied from interface:NamedBean
Provide generic access to internal state.This generally shouldn't be used by Java code; use the class-specific form instead (e.g. setCommandedState in Turnout). This is provided to make scripts access easier to read.
- Specified by:
setState
in interfaceNamedBean
- Parameters:
s
- the state- Throws:
JmriException
- general error when setting the state fails
-
addDeleteLock
public void addDeleteLock(NamedBean lock)
-
removeDeleteLock
public void removeDeleteLock(NamedBean lock)
-
isDeleteAllowed
@CheckReturnValue public boolean isDeleteAllowed()
-
vetoableChange
public void vetoableChange(java.beans.PropertyChangeEvent evt) throws java.beans.PropertyVetoException
- Specified by:
vetoableChange
in interfaceNamedBean
- Throws:
java.beans.PropertyVetoException
-
compareSystemNameSuffix
@CheckReturnValue public int compareSystemNameSuffix(@Nonnull java.lang.String suffix1, @Nonnull java.lang.String suffix2, @Nonnull NamedBean n)
Compare the suffix of this NamedBean's name with the suffix of the argument NamedBean's name for theNamedBean.compareTo(jmri.NamedBean)
operation. This is intended to be a system-specific comparison that understands the various formats, etc. By default, does an alphanumeric-by-chunks comparison- Specified by:
compareSystemNameSuffix
in interfaceNamedBean
- Parameters:
suffix1
- The suffix for the 1st bean in the comparisonsuffix2
- The suffix for the 2nd bean in the comparisonn
- The other (second) NamedBean in the comparison- Returns:
- -1,0,+1 for ordering if the names are well-formed; may not provide proper ordering if the names are not well-formed.
-
-