Package org.jgraph.graph
Class DefaultGraphSelectionModel
- java.lang.Object
-
- org.jgraph.graph.DefaultGraphSelectionModel
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,GraphSelectionModel
- Direct Known Subclasses:
JGraph.EmptySelectionModel
public class DefaultGraphSelectionModel extends java.lang.Object implements GraphSelectionModel, java.lang.Cloneable, java.io.Serializable
Default implementation of GraphSelectionModel. Listeners are notified- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
DefaultGraphSelectionModel.CellPlaceHolder
Holds a path and whether or not it is new.
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Map
cellStates
Maps the cells to their selection state.protected javax.swing.event.SwingPropertyChangeSupport
changeSupport
Used to message registered listeners.protected boolean
childrenSelectable
Boolean that indicates if the model allows stepping-into groups.protected JGraph
graph
Reference to the parent graph.protected javax.swing.event.EventListenerList
listenerList
Event listener list.static int
SELECTED
Value that represents selected state in cellStates.protected java.util.Set
selection
List that contains the selected items.static java.lang.String
SELECTION_MODE_PROPERTY
Property name for selectionMode.protected int
selectionMode
Mode for the selection, will be either SINGLE_TREE_SELECTION, CONTIGUOUS_TREE_SELECTION or DISCONTIGUOUS_TREE_SELECTION.static java.lang.Integer
UNSELECTED
Object value that represents the unselected state in cellStates.-
Fields inherited from interface org.jgraph.graph.GraphSelectionModel
MULTIPLE_GRAPH_SELECTION, SINGLE_GRAPH_SELECTION
-
-
Constructor Summary
Constructors Constructor Description DefaultGraphSelectionModel(JGraph graph)
Constructs a DefaultGraphSelectionModel for the specified graph.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addGraphSelectionListener(GraphSelectionListener x)
Adds x to the list of listeners that are notified each time the set of selected TreePaths changes.void
addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Adds a PropertyChangeListener to the listener list.void
addSelectionCell(java.lang.Object cell)
Adds the specified cell to the current selectionvoid
addSelectionCells(java.lang.Object[] cells)
Adds cells to the current selection.void
clearSelection()
Empties the current selection.java.lang.Object
clone()
Returns a clone of this object with the same selection.protected boolean
deselect(java.lang.Object cell)
Deselects a single cell and updates all datastructures.protected void
fireValueChanged(GraphSelectionEvent e)
Notifies all listeners that are registered for tree selection events on this object.java.util.EventListener[]
getListeners(java.lang.Class listenerType)
Returns an array of all the listeners of the given type that were added to this model.java.lang.Object[]
getSelectables()
Returns the cells that are currently selectable.protected int
getSelectedChildCount(java.lang.Object cell)
Returns the number of selected childs forcell
.java.lang.Object
getSelectionCell()
Returns the first cell in the selection.java.lang.Object[]
getSelectionCells()
Returns the cells in the selection.int
getSelectionCount()
Returns the number of paths that are selected.int
getSelectionMode()
Returns the selection mode, one ofSINGLE_TREE_SELECTION
,DISCONTIGUOUS_TREE_SELECTION
orCONTIGUOUS_TREE_SELECTION
.boolean
isCellSelected(java.lang.Object cell)
Returns true if the cell,cell
, is in the current selection.boolean
isChildrenSelectable()
Returns true if the selection model allows the selection of children.protected boolean
isChildrenSelectable(java.lang.Object cell)
Hook for subclassers for fine-grained control over stepping-into cells.boolean
isChildrenSelected(java.lang.Object cell)
Returns true if the cell,cell
, has selected children.boolean
isSelectionEmpty()
Returns true if the selection is currently empty.protected void
notifyCellChange(java.util.Vector changedCells)
Notifies listeners of a change in path.void
removeGraphSelectionListener(GraphSelectionListener x)
Removes x from the list of listeners that are notified each time the set of selected TreePaths changes.void
removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Removes a PropertyChangeListener from the listener list.void
removeSelectionCell(java.lang.Object cell)
Removes the specified cell from the selection.void
removeSelectionCells(java.lang.Object[] cells)
Removes the specified cells from the selection.protected boolean
select(java.util.Set set, java.lang.Object cell)
Selects a single cell and updates all datastructures.void
setChildrenSelectable(boolean flag)
Sets if the selection model allows the selection of children.protected void
setSelectedChildCount(java.lang.Object cell, int count)
Sets the number of selected childs forcell
tocount
.void
setSelectionCell(java.lang.Object cell)
Selects the specified cell.void
setSelectionCells(java.lang.Object[] cells)
Sets the selection tocells
.void
setSelectionMode(int mode)
Sets the selection mode, which must be one of SINGLE_TREE_SELECTION,
-
-
-
Field Detail
-
SELECTION_MODE_PROPERTY
public static final java.lang.String SELECTION_MODE_PROPERTY
Property name for selectionMode.- See Also:
- Constant Field Values
-
SELECTED
public static final int SELECTED
Value that represents selected state in cellStates.- See Also:
- Constant Field Values
-
UNSELECTED
public static final java.lang.Integer UNSELECTED
Object value that represents the unselected state in cellStates.
-
graph
protected JGraph graph
Reference to the parent graph. Used to find parents and childs.
-
changeSupport
protected javax.swing.event.SwingPropertyChangeSupport changeSupport
Used to message registered listeners.
-
listenerList
protected javax.swing.event.EventListenerList listenerList
Event listener list.
-
selectionMode
protected int selectionMode
Mode for the selection, will be either SINGLE_TREE_SELECTION, CONTIGUOUS_TREE_SELECTION or DISCONTIGUOUS_TREE_SELECTION.
-
childrenSelectable
protected boolean childrenSelectable
Boolean that indicates if the model allows stepping-into groups.
-
cellStates
protected java.util.Map cellStates
Maps the cells to their selection state.
-
selection
protected java.util.Set selection
List that contains the selected items.
-
-
Constructor Detail
-
DefaultGraphSelectionModel
public DefaultGraphSelectionModel(JGraph graph)
Constructs a DefaultGraphSelectionModel for the specified graph.
-
-
Method Detail
-
setSelectionMode
public void setSelectionMode(int mode)
Sets the selection mode, which must be one of SINGLE_TREE_SELECTION,- Specified by:
setSelectionMode
in interfaceGraphSelectionModel
-
getSelectionMode
public int getSelectionMode()
Returns the selection mode, one ofSINGLE_TREE_SELECTION
,DISCONTIGUOUS_TREE_SELECTION
orCONTIGUOUS_TREE_SELECTION
.- Specified by:
getSelectionMode
in interfaceGraphSelectionModel
-
setChildrenSelectable
public void setChildrenSelectable(boolean flag)
Sets if the selection model allows the selection of children.- Specified by:
setChildrenSelectable
in interfaceGraphSelectionModel
-
isChildrenSelectable
public boolean isChildrenSelectable()
Returns true if the selection model allows the selection of children.- Specified by:
isChildrenSelectable
in interfaceGraphSelectionModel
-
isChildrenSelectable
protected boolean isChildrenSelectable(java.lang.Object cell)
Hook for subclassers for fine-grained control over stepping-into cells. This implementation returnschildrenSelectable
&& isCellSelected.
-
setSelectionCell
public void setSelectionCell(java.lang.Object cell)
Selects the specified cell.- Specified by:
setSelectionCell
in interfaceGraphSelectionModel
- Parameters:
cell
- the cell to select
-
setSelectionCells
public void setSelectionCells(java.lang.Object[] cells)
Sets the selection tocells
. If this represents a change the GraphSelectionListeners are notified. Potentially paths will be held by this object; in other words don't change any of the objects in the array once passed in.- Specified by:
setSelectionCells
in interfaceGraphSelectionModel
- Parameters:
cells
- new selection
-
addSelectionCell
public void addSelectionCell(java.lang.Object cell)
Adds the specified cell to the current selection- Specified by:
addSelectionCell
in interfaceGraphSelectionModel
- Parameters:
cell
- the cell to add to the current selection
-
addSelectionCells
public void addSelectionCells(java.lang.Object[] cells)
Adds cells to the current selection.- Specified by:
addSelectionCells
in interfaceGraphSelectionModel
- Parameters:
cells
- the cells to be added to the current selection
-
removeSelectionCell
public void removeSelectionCell(java.lang.Object cell)
Removes the specified cell from the selection.- Specified by:
removeSelectionCell
in interfaceGraphSelectionModel
- Parameters:
cell
- the cell to remove from the current selection
-
removeSelectionCells
public void removeSelectionCells(java.lang.Object[] cells)
Removes the specified cells from the selection.- Specified by:
removeSelectionCells
in interfaceGraphSelectionModel
- Parameters:
cells
- the cells to remove from the current selection
-
getSelectables
public java.lang.Object[] getSelectables()
Returns the cells that are currently selectable. The array is ordered so that the top-most cell appears first.- Specified by:
getSelectables
in interfaceGraphSelectionModel
-
getSelectionCell
public java.lang.Object getSelectionCell()
Returns the first cell in the selection. This is useful if there if only one item currently selected.- Specified by:
getSelectionCell
in interfaceGraphSelectionModel
-
getSelectionCells
public java.lang.Object[] getSelectionCells()
Returns the cells in the selection. This will return null (or an empty array) if nothing is currently selected.- Specified by:
getSelectionCells
in interfaceGraphSelectionModel
-
getSelectionCount
public int getSelectionCount()
Returns the number of paths that are selected.- Specified by:
getSelectionCount
in interfaceGraphSelectionModel
-
isCellSelected
public boolean isCellSelected(java.lang.Object cell)
Returns true if the cell,cell
, is in the current selection.- Specified by:
isCellSelected
in interfaceGraphSelectionModel
-
isChildrenSelected
public boolean isChildrenSelected(java.lang.Object cell)
Returns true if the cell,cell
, has selected children.- Specified by:
isChildrenSelected
in interfaceGraphSelectionModel
-
isSelectionEmpty
public boolean isSelectionEmpty()
Returns true if the selection is currently empty.- Specified by:
isSelectionEmpty
in interfaceGraphSelectionModel
-
clearSelection
public void clearSelection()
Empties the current selection. If this represents a change in the current selection, the selection listeners are notified.- Specified by:
clearSelection
in interfaceGraphSelectionModel
-
getSelectedChildCount
protected int getSelectedChildCount(java.lang.Object cell)
Returns the number of selected childs forcell
.
-
setSelectedChildCount
protected void setSelectedChildCount(java.lang.Object cell, int count)
Sets the number of selected childs forcell
tocount
.
-
select
protected boolean select(java.util.Set set, java.lang.Object cell)
Selects a single cell and updates all datastructures. No listeners are notified. Override this method to control individual cell selection.
-
deselect
protected boolean deselect(java.lang.Object cell)
Deselects a single cell and updates all datastructures. No listeners are notified.
-
addGraphSelectionListener
public void addGraphSelectionListener(GraphSelectionListener x)
Adds x to the list of listeners that are notified each time the set of selected TreePaths changes.- Specified by:
addGraphSelectionListener
in interfaceGraphSelectionModel
- Parameters:
x
- the new listener to be added
-
removeGraphSelectionListener
public void removeGraphSelectionListener(GraphSelectionListener x)
Removes x from the list of listeners that are notified each time the set of selected TreePaths changes.- Specified by:
removeGraphSelectionListener
in interfaceGraphSelectionModel
- Parameters:
x
- the listener to remove
-
fireValueChanged
protected void fireValueChanged(GraphSelectionEvent e)
Notifies all listeners that are registered for tree selection events on this object.- See Also:
addGraphSelectionListener(org.jgraph.event.GraphSelectionListener)
,EventListenerList
-
getListeners
public java.util.EventListener[] getListeners(java.lang.Class listenerType)
Returns an array of all the listeners of the given type that were added to this model.- Returns:
- all of the objects receiving listenerType notifications from this model
- Since:
- 1.3
-
addPropertyChangeListener
public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Adds a PropertyChangeListener to the listener list. The listener is registered for all properties.A PropertyChangeEvent will get fired when the selection mode changes.
- Specified by:
addPropertyChangeListener
in interfaceGraphSelectionModel
- Parameters:
listener
- the PropertyChangeListener to be added
-
removePropertyChangeListener
public void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Removes a PropertyChangeListener from the listener list. This removes a PropertyChangeListener that was registered for all properties.- Specified by:
removePropertyChangeListener
in interfaceGraphSelectionModel
- Parameters:
listener
- the PropertyChangeListener to be removed
-
notifyCellChange
protected void notifyCellChange(java.util.Vector changedCells)
Notifies listeners of a change in path.changePaths
should contain instances of PathPlaceHolder.
-
clone
public java.lang.Object clone() throws java.lang.CloneNotSupportedException
Returns a clone of this object with the same selection. This method does not duplicate selection listeners and property listeners.- Overrides:
clone
in classjava.lang.Object
- Throws:
java.lang.CloneNotSupportedException
- never thrown by instances of this class
-
-