Package org.jgraph.graph
Class DefaultGraphModel
- java.lang.Object
-
- javax.swing.undo.UndoableEditSupport
-
- org.jgraph.graph.DefaultGraphModel
-
- All Implemented Interfaces:
java.io.Serializable,GraphModel
public class DefaultGraphModel extends javax.swing.undo.UndoableEditSupport implements java.io.Serializable, GraphModel
The default implementation of a graph model.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classDefaultGraphModel.EmptyIteratorclassDefaultGraphModel.GraphModelEditAn implementation of GraphModelChange that can be added to the model event.classDefaultGraphModel.GraphModelLayerEditAn implementation of GraphViewChange.
-
Field Summary
Fields Modifier and Type Field Description protected booleanasksAllowsChildrenIndicates whether isLeaf is based on a node's allowsChildren value.protected AttributeMapattributesThe model's own attributes as a map.protected java.util.IteratoremptyIteratorDefault instance of an empty iterator.protected javax.swing.event.EventListenerListlistenerListThe list of listeners that listen to the model.protected booleanremoveEmptyGroupsWhether or not to remove group cells from the model when all of their children are removedprotected java.util.ListrootsSet that contains all root cells of this model.protected java.util.SettransAddedCellsStores nested transaction added cellsprotected java.util.MaptransEditAttrsStores nested transaction transport attribute mapsprotected ConnectionSettransEditCSStores nested transaction connection setsprotected ParentMaptransEditPMStores nested transaction parent mapsprotected java.util.SettransRemovedCellsStores nested transaction removed cellsprotected intupdateLevelCounter for the depth of nested transactions.
-
Constructor Summary
Constructors Constructor Description DefaultGraphModel()Constructs a model that is not an attribute store.DefaultGraphModel(java.util.List roots, AttributeMap attributes)Constructs a model that is not an attribute store.DefaultGraphModel(java.util.List roots, AttributeMap attributes, ConnectionSet cs)Constructs a model using the specified information to construct the cells, attributes and connection data.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description booleanacceptsSource(java.lang.Object edge, java.lang.Object port)Returnstrueifportis a valid source foredge.booleanacceptsTarget(java.lang.Object edge, java.lang.Object port)Returnstrueifportis a valid target foredge.voidaddGraphModelListener(GraphModelListener l)Adds a listener for the GraphModelEvent posted after the graph changes.voidbeginUpdate()Indicates the start of one level of an executable changevoidcellsChanged(java.lang.Object[] cells)Invoke this method after you've changed how the cells are to be represented in the graph.protected java.lang.ObjectcloneCell(java.lang.Object cellObj)Creates a shallow copy of the cell including a copy of the user object.static java.lang.ObjectcloneCell(GraphModel model, java.lang.Object cell)Returns a deep clone of the specified cell, including all children.static java.lang.Object[]cloneCell(GraphModel model, java.lang.Object[] cells)Returns a deep clone of the specified cells, including all children.java.util.MapcloneCells(java.lang.Object[] cells)Returns a map of (cell, clone)-pairs for allcells.protected java.lang.ObjectcloneUserObject(java.lang.Object userObject)Clones the user object.protected voidconnect(java.lang.Object edge, java.lang.Object port, boolean isSource, boolean insert)Connects or disconnects the edge and port in this model based onremove.booleancontains(java.lang.Object node)Returnstrueifnodeor one of its ancestors is in the model.static booleancontainsEdgeBetween(GraphModel model, java.lang.Object v1, java.lang.Object v2)Returns true if the given vertices are conntected by a single edge in this document.protected DefaultGraphModel.GraphModelEditcreateEdit(java.lang.Object[] inserted, java.lang.Object[] removed, java.util.Map attributes, ConnectionSet cs, ParentMap pm, javax.swing.undo.UndoableEdit[] edits)protected DefaultGraphModel.GraphModelLayerEditcreateLayerEdit(java.lang.Object[] cells, int layer)protected DefaultGraphModel.GraphModelEditcreateRemoveEdit(java.lang.Object[] cells)Returns an edit that represents a remove.java.util.Iteratoredges(java.lang.Object port)Returns an iterator of the edges connected toport.voidedit(java.lang.Object[] inserted, java.lang.Object[] removed, java.util.Map attributes, ConnectionSet cs, ParentMap pm, javax.swing.undo.UndoableEdit[] edits)Appliesattributesand the connection changes to the model.voidedit(java.util.Map attributes, ConnectionSet cs, ParentMap pm, javax.swing.undo.UndoableEdit[] edits)Shortcut to the new edit method which allows inserts and removes to go along with an edit.voidendUpdate()Indicates the end of the current level of an executable changevoidexecute(ExecutableChange change)Executes the specified executable change on this graph modelprotected voidfireGraphChanged(java.lang.Object source, GraphModelEvent.GraphModelChange edit)static java.lang.Object[]getAll(GraphModel model)Returns all cells of the model in an array.java.util.MapgetAttributes()Returns the graph model's attribute.AttributeMapgetAttributes(java.lang.Object node)Returns aMapthat represents the attributes for the specified cell.java.lang.ObjectgetChild(java.lang.Object parent, int index)Returns the child of parent at index index in the parent's child array.intgetChildCount(java.lang.Object parent)Returns the number of children of parent .ConnectionSetgetConnectionSet()A shortcut method to create a connection set that represents the connections in this model.static java.util.ListgetDescendants(GraphModel model, java.lang.Object[] cells)Flattens the given array of root cells by adding the roots and their descandants.static java.util.SetgetEdges(GraphModel model, java.lang.Object[] cells)Returns the set of all connected edges tocellsor their descendants.static java.lang.Object[]getEdges(GraphModel model, java.lang.Object cell, boolean incoming)Returns the incoming or outgoing edges for cell.static java.lang.Object[]getEdgesBetween(GraphModel model, java.lang.Object cell1, java.lang.Object cell2, boolean directed)Returns the edges between two specified ports or two specified vertices.GraphModelListener[]getGraphModelListeners()Return an array of all GraphModelListeners that were added to this model.static java.lang.Object[]getIncomingEdges(GraphModel model, java.lang.Object cell)Returns the incoming edges for cell.intgetIndexOfChild(java.lang.Object parent, java.lang.Object child)Returns the index of child in parent.intgetIndexOfRoot(java.lang.Object root)Returns the index ofrootin the model.static java.lang.ObjectgetOpposite(GraphModel model, java.lang.Object edge, java.lang.Object cell)static java.lang.Object[]getOutgoingEdges(GraphModel model, java.lang.Object cell)Returns the outgoing edges for cell.java.lang.ObjectgetParent(java.lang.Object child)Returns the parent of child in the model.java.lang.ObjectgetRootAt(int index)Returns the root at index index in the model.intgetRootCount()Returns the number of roots in the model.java.util.ListgetRoots()static java.lang.Object[]getRoots(GraphModel model)Returns the roots of the specified model as an array.static java.lang.Object[]getRoots(GraphModel model, java.lang.Object[] cells)Returns the roots incellsby checking if their parent isnull.static java.util.CollectiongetRootsAsCollection(GraphModel model)Returns the roots of the specified model as a collection.java.lang.ObjectgetSource(java.lang.Object edge)Returns the source ofedge.static java.lang.ObjectgetSourceVertex(GraphModel model, java.lang.Object edge)Returns the source vertex of the edge by calling getParent on getSource on the specified model.java.lang.ObjectgetTarget(java.lang.Object edge)Returns the target ofedge.static java.lang.ObjectgetTargetVertex(GraphModel model, java.lang.Object edge)Returns the target vertex of the edge by calling getParent on getTarget on the specified model.static java.lang.Object[]getTopmostCells(GraphModel model, java.lang.Object[] cells)intgetUpdateLevel()static java.lang.ObjectgetUserObject(java.lang.Object cell)Deprecated.UseGraphModel.getValue(Object)instead.java.lang.ObjectgetValue(java.lang.Object cell)Returns the user object for the specified cell.protected java.util.MaphandleAttributes(java.util.Map attributes)Appliesattributesto the cells specified as keys.protected voidhandleConnection(ConnectionSet.Connection c, boolean establish)Inserts the specified connection into the model.protected ConnectionSethandleConnectionSet(ConnectionSet cs)AppliesconnectionSetto the model.protected java.lang.Object[]handleInsert(java.lang.Object[] cells)Insertscellsinto the model.protected ParentMaphandleParentMap(ParentMap parentMap)Appliescellsto the model.protected java.lang.Object[]handleRemove(java.lang.Object[] cells)Removescellsfrom the model.static booleanhasAncestorIn(GraphModel model, java.util.Set parents, java.lang.Object child)Returns true if the specified child has an ancestor in parents.voidinsert(java.lang.Object[] roots, java.util.Map attributes, ConnectionSet cs, ParentMap pm, javax.swing.undo.UndoableEdit[] edits)Inserts therootsand connections into the model.booleanisEdge(java.lang.Object edge)Returnstrueifedgeis a valid edge.static booleanisGroup(GraphModel model, java.lang.Object cell)Checks whether the cell has at least one child which is not a port.booleanisLeaf(java.lang.Object node)Returns whether the specified node is a leaf node.booleanisPort(java.lang.Object port)Returnstrueifportis a valid port, possibly supporting edge connection.booleanisRemoveEmptyGroups()static booleanisVertex(GraphModel model, java.lang.Object vertex)Returnstrueifvertexis a valid vertex.static java.lang.Object[]order(GraphModel model, java.lang.Object[] cells)Orders cells so that they reflect the model order.voidremove(java.lang.Object[] roots)Removescellsfrom the model.voidremoveGraphModelListener(GraphModelListener l)Removes a listener previously added with addGraphModelListener() .protected voidsetParent(java.lang.Object child, java.lang.Object parent)Sets the parent of the specified cell.voidsetRemoveEmptyGroups(boolean removeEmptyGroups)static voidsetSourcePort(GraphModel model, java.lang.Object edge, java.lang.Object port)Helper methods that connects the source ofedgetoportinmodel.static voidsetTargetPort(GraphModel model, java.lang.Object edge, java.lang.Object port)Helper methods that connects the source ofedgetoportinmodel.voidtoBack(java.lang.Object[] cells)Sendscellsto back.voidtoFront(java.lang.Object[] cells)Bringscellsto front.protected voidupdateTransaction(java.lang.Object[] inserted, java.lang.Object[] removed, java.util.Map attributes, ConnectionSet cs, ParentMap pm)Updates the current state of the various transaction datajava.lang.ObjectvalueForCellChanged(java.lang.Object cell, java.lang.Object newValue)Applies the new value to the specified cell.-
Methods inherited from class javax.swing.undo.UndoableEditSupport
_postEdit, addUndoableEditListener, createCompoundEdit, getUndoableEditListeners, postEdit, removeUndoableEditListener, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.jgraph.graph.GraphModel
addUndoableEditListener, removeUndoableEditListener
-
-
-
-
Field Detail
-
listenerList
protected transient javax.swing.event.EventListenerList listenerList
The list of listeners that listen to the model.
-
emptyIterator
protected transient java.util.Iterator emptyIterator
Default instance of an empty iterator.
-
roots
protected java.util.List roots
Set that contains all root cells of this model.
-
asksAllowsChildren
protected boolean asksAllowsChildren
Indicates whether isLeaf is based on a node's allowsChildren value.
-
removeEmptyGroups
protected boolean removeEmptyGroups
Whether or not to remove group cells from the model when all of their children are removed
-
attributes
protected AttributeMap attributes
The model's own attributes as a map. Defaults to an empty Hashtable.
-
updateLevel
protected transient int updateLevel
Counter for the depth of nested transactions. Each call to beginUpdate increments this counter and each call to endUpdate decrements it. When the counter reaches 0, the transaction is closed and applied to the model.
-
transAddedCells
protected transient java.util.Set transAddedCells
Stores nested transaction added cells
-
transRemovedCells
protected transient java.util.Set transRemovedCells
Stores nested transaction removed cells
-
transEditAttrs
protected transient java.util.Map transEditAttrs
Stores nested transaction transport attribute maps
-
transEditCS
protected transient ConnectionSet transEditCS
Stores nested transaction connection sets
-
transEditPM
protected transient ParentMap transEditPM
Stores nested transaction parent maps
-
-
Constructor Detail
-
DefaultGraphModel
public DefaultGraphModel()
Constructs a model that is not an attribute store.
-
DefaultGraphModel
public DefaultGraphModel(java.util.List roots, AttributeMap attributes)Constructs a model that is not an attribute store.
-
DefaultGraphModel
public DefaultGraphModel(java.util.List roots, AttributeMap attributes, ConnectionSet cs)Constructs a model using the specified information to construct the cells, attributes and connection data.
-
-
Method Detail
-
getRoots
public java.util.List getRoots()
-
getRootCount
public int getRootCount()
Returns the number of roots in the model. Returns 0 if the model is empty.- Specified by:
getRootCountin interfaceGraphModel- Returns:
- the number of roots in the model
-
getRootAt
public java.lang.Object getRootAt(int index)
Returns the root at index index in the model. This should not return null if index is a valid index for the model (that is index >= 0 && index < getRootCount()).- Specified by:
getRootAtin interfaceGraphModel- Returns:
- the root of at index index
-
getIndexOfRoot
public int getIndexOfRoot(java.lang.Object root)
Returns the index ofrootin the model. If root isnull, returns -1.- Specified by:
getIndexOfRootin interfaceGraphModel- Parameters:
root- a root in the model, obtained from this data source- Returns:
- the index of the root in the model, or -1 if the parent is
null
-
contains
public boolean contains(java.lang.Object node)
Returnstrueifnodeor one of its ancestors is in the model.- Specified by:
containsin interfaceGraphModel- Returns:
trueifnodeis in the model
-
getAttributes
public AttributeMap getAttributes(java.lang.Object node)
Returns aMapthat represents the attributes for the specified cell. This attributes have precedence over each view's attributes, regardless of isAttributeStore.- Specified by:
getAttributesin interfaceGraphModel- Returns:
- attributes of
nodeas aMap
-
getValue
public java.lang.Object getValue(java.lang.Object cell)
Description copied from interface:GraphModelReturns the user object for the specified cell.- Specified by:
getValuein interfaceGraphModel- Returns:
- Returns the user object of the given cell. This implementation checks if the cell is a default mutable tree node and returns it's user object.
-
getAttributes
public java.util.Map getAttributes()
Returns the graph model's attribute. Shortcut togetAttributes(null).- Returns:
- attributes of
nodeas aMap
-
getSource
public java.lang.Object getSource(java.lang.Object edge)
Returns the source ofedge. edge must be an object previously obtained from this data source.- Specified by:
getSourcein interfaceGraphModel- Returns:
Objectthat represents the source of edge
-
getTarget
public java.lang.Object getTarget(java.lang.Object edge)
Returns the target ofedge. edge must be an object previously obtained from this data source.- Specified by:
getTargetin interfaceGraphModel- Returns:
Objectthat represents the target of edge
-
acceptsSource
public boolean acceptsSource(java.lang.Object edge, java.lang.Object port)Returnstrueifportis a valid source foredge. edge and port must be objects previously obtained from this data source.- Specified by:
acceptsSourcein interfaceGraphModel- Returns:
trueifportis a valid source foredge.
-
acceptsTarget
public boolean acceptsTarget(java.lang.Object edge, java.lang.Object port)Returnstrueifportis a valid target foredge. edge and port must be objects previously obtained from this data source.- Specified by:
acceptsTargetin interfaceGraphModel- Returns:
trueifportis a valid target foredge.
-
edges
public java.util.Iterator edges(java.lang.Object port)
Returns an iterator of the edges connected toport. port must be a object previously obtained from this data source. This method never returns null.- Specified by:
edgesin interfaceGraphModel- Parameters:
port- a port in the graph, obtained from this data source- Returns:
Iteratorthat represents the connected edges
-
isEdge
public boolean isEdge(java.lang.Object edge)
Returnstrueifedgeis a valid edge.- Specified by:
isEdgein interfaceGraphModel- Returns:
trueifedgeis a valid edge.
-
isPort
public boolean isPort(java.lang.Object port)
Returnstrueifportis a valid port, possibly supporting edge connection.- Specified by:
isPortin interfaceGraphModel- Returns:
trueifportis a valid port.
-
getConnectionSet
public ConnectionSet getConnectionSet()
A shortcut method to create a connection set that represents the connections in this model. Useful for encoding to avoid writing redundant connection data stored in the cells.
-
cloneCells
public java.util.Map cloneCells(java.lang.Object[] cells)
Returns a map of (cell, clone)-pairs for allcells. In the new array, all references are replaced with references to the cloned cells (ie parent or anchor). This method does only include children which are incells. Use JGraph.getDescendants to get a complete list of all children.- Specified by:
cloneCellsin interfaceGraphModel
-
setParent
protected void setParent(java.lang.Object child, java.lang.Object parent)Sets the parent of the specified cell.
-
cloneCell
protected java.lang.Object cloneCell(java.lang.Object cellObj)
Creates a shallow copy of the cell including a copy of the user object. Subclassers can override the cloneUserObject to provide a custom user object cloning mechanism.
-
cloneUserObject
protected java.lang.Object cloneUserObject(java.lang.Object userObject)
Clones the user object. Helper method that is invoked from cloneCells. You must use cloneCells (or cloneCell for single cells) to get a deep copy of a clone. Subclassers must override this and valueForCellChanged to implement custom user objects. This implementation returnsobject.
-
getParent
public java.lang.Object getParent(java.lang.Object child)
Returns the parent of child in the model. child must be a node previously obtained from this data source. This returns null if child is a root in the model.- Specified by:
getParentin interfaceGraphModel- Parameters:
child- a node in the graph, obtained from this data source- Returns:
- the parent of child
-
getIndexOfChild
public int getIndexOfChild(java.lang.Object parent, java.lang.Object child)Returns the index of child in parent. If either the parent or child isnull, returns -1.- Specified by:
getIndexOfChildin interfaceGraphModel- Parameters:
parent- a note in the tree, obtained from this data sourcechild- the node we are interested in- Returns:
- the index of the child in the parent, or -1 if either the parent
or the child is
null
-
getChild
public java.lang.Object getChild(java.lang.Object parent, int index)Returns the child of parent at index index in the parent's child array. parent must be a node previously obtained from this data source. This should not return null if index is a valid index for parent (that is index >= 0 && index < getChildCount( parent )).- Specified by:
getChildin interfaceGraphModel- Parameters:
parent- a node in the tree, obtained from this data source- Returns:
- the child of parent at index index
-
getChildCount
public int getChildCount(java.lang.Object parent)
Returns the number of children of parent . Returns 0 if the node is a leaf or if it has no children. parent must be a node previously obtained from this data source.- Specified by:
getChildCountin interfaceGraphModel- Parameters:
parent- a node in the tree, obtained from this data source- Returns:
- the number of children of the node parent
-
isLeaf
public boolean isLeaf(java.lang.Object node)
Returns whether the specified node is a leaf node. The way the test is performed depends on the.- Specified by:
isLeafin interfaceGraphModel- Parameters:
node- the node to check- Returns:
- true if the node is a leaf node
-
insert
public void insert(java.lang.Object[] roots, java.util.Map attributes, ConnectionSet cs, ParentMap pm, javax.swing.undo.UndoableEdit[] edits)Inserts therootsand connections into the model. Notifies the model- and undo listeners of the change. The passed-in edits are executed if they implement theGraphModelEvent.ExecutableGraphChangeinterface in ascending array-order, after execution of the model change. Note: The passed-in propertyMap may containPortViews which must be turned intoPoints when stored in the model.- Specified by:
insertin interfaceGraphModel
-
remove
public void remove(java.lang.Object[] roots)
Removescellsfrom the model. Notifies the model- and undo listeners of the change.- Specified by:
removein interfaceGraphModel
-
edit
public void edit(java.util.Map attributes, ConnectionSet cs, ParentMap pm, javax.swing.undo.UndoableEdit[] edits)Shortcut to the new edit method which allows inserts and removes to go along with an edit.- Specified by:
editin interfaceGraphModel
-
edit
public void edit(java.lang.Object[] inserted, java.lang.Object[] removed, java.util.Map attributes, ConnectionSet cs, ParentMap pm, javax.swing.undo.UndoableEdit[] edits)Appliesattributesand the connection changes to the model. The initialeditsthat triggered the call are considered to be part of this transaction. The passed-in edits are executed if they implement theGraphModelEvent.ExecutableGraphChangeinterface in ascending array-order, after execution of the model change. Notifies the model- and undo listeners of the change. Note: If onlyeditsis non-null, the edits are directly passed to the UndoableEditListeners. Note: The passed-in propertyMap may contains PortViews which must be turned into Points when stored in the model.
-
execute
public void execute(ExecutableChange change)
Description copied from interface:GraphModelExecutes the specified executable change on this graph model- Specified by:
executein interfaceGraphModel- Parameters:
change- the change to be executed
-
getUpdateLevel
public int getUpdateLevel()
- Overrides:
getUpdateLevelin classjavax.swing.undo.UndoableEditSupport
-
beginUpdate
public void beginUpdate()
Description copied from interface:GraphModelIndicates the start of one level of an executable change- Specified by:
beginUpdatein interfaceGraphModel- Overrides:
beginUpdatein classjavax.swing.undo.UndoableEditSupport
-
endUpdate
public void endUpdate()
Description copied from interface:GraphModelIndicates the end of the current level of an executable change- Specified by:
endUpdatein interfaceGraphModel- Overrides:
endUpdatein classjavax.swing.undo.UndoableEditSupport
-
updateTransaction
protected void updateTransaction(java.lang.Object[] inserted, java.lang.Object[] removed, java.util.Map attributes, ConnectionSet cs, ParentMap pm)Updates the current state of the various transaction data- Parameters:
inserted- inserted cell to be added to the transactionremoved- removed cells to be removed from the transactionattributes- nested attribute maps to apply to the transactioncs- connection sets to add to the transactionpm- parent maps to add to the transaction
-
toBack
public void toBack(java.lang.Object[] cells)
Sendscellsto back.- Specified by:
toBackin interfaceGraphModel
-
toFront
public void toFront(java.lang.Object[] cells)
Bringscellsto front.- Specified by:
toFrontin interfaceGraphModel
-
createLayerEdit
protected DefaultGraphModel.GraphModelLayerEdit createLayerEdit(java.lang.Object[] cells, int layer)
-
createRemoveEdit
protected DefaultGraphModel.GraphModelEdit createRemoveEdit(java.lang.Object[] cells)
Returns an edit that represents a remove.
-
createEdit
protected DefaultGraphModel.GraphModelEdit createEdit(java.lang.Object[] inserted, java.lang.Object[] removed, java.util.Map attributes, ConnectionSet cs, ParentMap pm, javax.swing.undo.UndoableEdit[] edits)
-
handleInsert
protected java.lang.Object[] handleInsert(java.lang.Object[] cells)
Insertscellsinto the model. Returns the cells that were inserted (including descendants).
-
handleRemove
protected java.lang.Object[] handleRemove(java.lang.Object[] cells)
Removescellsfrom the model. Returns the cells that were removed as roots.
-
handleParentMap
protected ParentMap handleParentMap(ParentMap parentMap)
Appliescellsto the model. Returns a parent map that may be used to undo this change.
-
handleAttributes
protected java.util.Map handleAttributes(java.util.Map attributes)
Appliesattributesto the cells specified as keys. Returns theattributesto undo the change.
-
valueForCellChanged
public java.lang.Object valueForCellChanged(java.lang.Object cell, java.lang.Object newValue)Applies the new value to the specified cell. Unfortunately for cloning the user object you must still override the attribute map and provide a custom cloneUserObject method. This is because the cloning of a cell is local to the cell, which in turn has a reference to its attribute map.- Specified by:
valueForCellChangedin interfaceGraphModel- Parameters:
cell-newValue-- Returns:
- the old value for the cell, if any
-
handleConnectionSet
protected ConnectionSet handleConnectionSet(ConnectionSet cs)
AppliesconnectionSetto the model. Returns a connection set that may be used to undo this change.
-
handleConnection
protected void handleConnection(ConnectionSet.Connection c, boolean establish)
Inserts the specified connection into the model.
-
connect
protected void connect(java.lang.Object edge, java.lang.Object port, boolean isSource, boolean insert)Connects or disconnects the edge and port in this model based onremove. Subclassers should override this to update connectivity datastructures.
-
addGraphModelListener
public void addGraphModelListener(GraphModelListener l)
Adds a listener for the GraphModelEvent posted after the graph changes.- Specified by:
addGraphModelListenerin interfaceGraphModel- Parameters:
l- the listener to add- See Also:
removeGraphModelListener(org.jgraph.event.GraphModelListener)
-
removeGraphModelListener
public void removeGraphModelListener(GraphModelListener l)
Removes a listener previously added with addGraphModelListener() .- Specified by:
removeGraphModelListenerin interfaceGraphModel- Parameters:
l- the listener to remove- See Also:
addGraphModelListener(org.jgraph.event.GraphModelListener)
-
cellsChanged
public void cellsChanged(java.lang.Object[] cells)
Invoke this method after you've changed how the cells are to be represented in the graph.
-
fireGraphChanged
protected void fireGraphChanged(java.lang.Object source, GraphModelEvent.GraphModelChange edit)
-
getGraphModelListeners
public GraphModelListener[] getGraphModelListeners()
Return an array of all GraphModelListeners that were added to this model.
-
cloneCell
public static java.lang.Object cloneCell(GraphModel model, java.lang.Object cell)
Returns a deep clone of the specified cell, including all children.
-
cloneCell
public static java.lang.Object[] cloneCell(GraphModel model, java.lang.Object[] cells)
Returns a deep clone of the specified cells, including all children.
-
setSourcePort
public static void setSourcePort(GraphModel model, java.lang.Object edge, java.lang.Object port)
Helper methods that connects the source ofedgetoportinmodel.
-
setTargetPort
public static void setTargetPort(GraphModel model, java.lang.Object edge, java.lang.Object port)
Helper methods that connects the source ofedgetoportinmodel.
-
getSourceVertex
public static java.lang.Object getSourceVertex(GraphModel model, java.lang.Object edge)
Returns the source vertex of the edge by calling getParent on getSource on the specified model.
-
getTargetVertex
public static java.lang.Object getTargetVertex(GraphModel model, java.lang.Object edge)
Returns the target vertex of the edge by calling getParent on getTarget on the specified model.
-
getUserObject
public static java.lang.Object getUserObject(java.lang.Object cell)
Deprecated.UseGraphModel.getValue(Object)instead.- Returns:
- Returns the user object of the given cell. This implementation checks if the cell is a default mutable tree node and returns it's user object.
-
isGroup
public static boolean isGroup(GraphModel model, java.lang.Object cell)
Checks whether the cell has at least one child which is not a port. This implementation operates on the model, not taking into account visibility of cells. It returns true for groups regardless of their folded state.- Parameters:
cell- the cell to check for being a group- Returns:
- Returns true if the cell contains at least one cell which is not a port
-
getAll
public static java.lang.Object[] getAll(GraphModel model)
Returns all cells of the model in an array.- Returns:
- Returns all cells in the model including all descandants.
- See Also:
getDescendants(GraphModel, Object[])
-
getRoots
public static java.lang.Object[] getRoots(GraphModel model)
Returns the roots of the specified model as an array. This implementation uses the GraphModel interface in the general case, but if the model is aDefaultGraphModelthe performance can be improved to linear time.
-
getRootsAsCollection
public static java.util.Collection getRootsAsCollection(GraphModel model)
Returns the roots of the specified model as a collection. This implementation uses the GraphModel interface in the general case, but if the model is aDefaultGraphModelthe performance can be improved to linear time.
-
getRoots
public static java.lang.Object[] getRoots(GraphModel model, java.lang.Object[] cells)
Returns the roots incellsby checking if their parent isnull. This implementation only uses the GraphModel interface. This method never returns null.
-
getTopmostCells
public static java.lang.Object[] getTopmostCells(GraphModel model, java.lang.Object[] cells)
- Returns:
- Returns the roots of cells, eg. an array that contains no cell having an ancestor in cells.
-
hasAncestorIn
public static boolean hasAncestorIn(GraphModel model, java.util.Set parents, java.lang.Object child)
Returns true if the specified child has an ancestor in parents.
-
getDescendants
public static java.util.List getDescendants(GraphModel model, java.lang.Object[] cells)
Flattens the given array of root cells by adding the roots and their descandants. The resulting set contains all cells, which means it contains branches and leafs. Note: This is an iterative implementation. No recursion used.
Note: This returns a linked list, for frequent read operations you should turn this into an array, or at least an array list.
-
order
public static java.lang.Object[] order(GraphModel model, java.lang.Object[] cells)
Orders cells so that they reflect the model order.
-
getEdges
public static java.util.Set getEdges(GraphModel model, java.lang.Object[] cells)
Returns the set of all connected edges tocellsor their descendants. The passed-in cells are never returned as part of the result set. This can be used on vertices, edges and ports.
-
getOpposite
public static java.lang.Object getOpposite(GraphModel model, java.lang.Object edge, java.lang.Object cell)
- Returns:
- Returns the opposite port or vertex in
edge.
-
containsEdgeBetween
public static boolean containsEdgeBetween(GraphModel model, java.lang.Object v1, java.lang.Object v2)
Returns true if the given vertices are conntected by a single edge in this document.
-
getEdgesBetween
public static java.lang.Object[] getEdgesBetween(GraphModel model, java.lang.Object cell1, java.lang.Object cell2, boolean directed)
Returns the edges between two specified ports or two specified vertices. If directed is true thencell1must be the source of the returned edges. This method never returns null. If there are no edges between the specified cells, then an array of length 0 is returned.
-
getOutgoingEdges
public static java.lang.Object[] getOutgoingEdges(GraphModel model, java.lang.Object cell)
Returns the outgoing edges for cell. Cell should be a port or a vertex.
-
getIncomingEdges
public static java.lang.Object[] getIncomingEdges(GraphModel model, java.lang.Object cell)
Returns the incoming edges for cell. Cell should be a port or a vertex.
-
getEdges
public static java.lang.Object[] getEdges(GraphModel model, java.lang.Object cell, boolean incoming)
Returns the incoming or outgoing edges for cell. Cell should be a port or a vertex.
-
isVertex
public static boolean isVertex(GraphModel model, java.lang.Object vertex)
Returnstrueifvertexis a valid vertex.- Returns:
trueifvertexis a valid vertex.
-
isRemoveEmptyGroups
public boolean isRemoveEmptyGroups()
- Returns:
- the removeEmptyGroups
-
setRemoveEmptyGroups
public void setRemoveEmptyGroups(boolean removeEmptyGroups)
- Parameters:
removeEmptyGroups- the removeEmptyGroups to set
-
-