org.jgraph.graph
public class DefaultGraphModel extends UndoableEditSupport implements Serializable, GraphModel
Nested Class Summary | |
---|---|
static class | DefaultGraphModel.EmptyIterator |
class | DefaultGraphModel.GraphModelEdit
An implementation of GraphModelChange that can be added to the model
event. |
class | DefaultGraphModel.GraphModelLayerEdit
An implementation of GraphViewChange. |
Field Summary | |
---|---|
protected boolean | asksAllowsChildren
Indicates whether isLeaf is based on a node's allowsChildren value. |
protected AttributeMap | attributes
The model's own attributes as a map. |
protected Iterator | emptyIterator
Default instance of an empty iterator. |
protected EventListenerList | listenerList
The list of listeners that listen to the model. |
protected boolean | removeEmptyGroups
Whether or not to remove group cells from the model when all of their
children are removed |
protected List | roots
Set that contains all root cells of this model. |
protected Set | transAddedCells
Stores nested transaction added cells |
protected Map | transEditAttrs
Stores nested transaction transport attribute maps |
protected ConnectionSet | transEditCS
Stores nested transaction connection sets |
protected ParentMap | transEditPM
Stores nested transaction parent maps |
protected Set | transRemovedCells
Stores nested transaction removed cells |
protected int | updateLevel
Counter for the depth of nested transactions. |
Constructor Summary | |
---|---|
DefaultGraphModel()
Constructs a model that is not an attribute store. | |
DefaultGraphModel(List roots, AttributeMap attributes)
Constructs a model that is not an attribute store. | |
DefaultGraphModel(List roots, AttributeMap attributes, ConnectionSet cs)
Constructs a model using the specified information to construct the
cells, attributes and connection data. |
Method Summary | |
---|---|
boolean | acceptsSource(Object edge, Object port)
Returns true if port is a valid source for
edge . |
boolean | acceptsTarget(Object edge, Object port)
Returns true if port is a valid target for
edge . |
void | addGraphModelListener(GraphModelListener l)
Adds a listener for the GraphModelEvent posted after the graph changes.
|
void | beginUpdate() |
void | cellsChanged(Object[] cells)
Invoke this method after you've changed how the cells are to be
represented in the graph. |
protected Object | cloneCell(Object cellObj)
Creates a shallow copy of the cell including a copy of the user object.
|
static Object | cloneCell(GraphModel model, Object cell)
Returns a deep clone of the specified cell, including all children. |
static Object[] | cloneCell(GraphModel model, Object[] cells)
Returns a deep clone of the specified cells, including all children. |
Map | cloneCells(Object[] cells)
Returns a map of (cell, clone)-pairs for all cells . |
protected Object | cloneUserObject(Object userObject)
Clones the user object. |
protected void | connect(Object edge, Object port, boolean isSource, boolean insert)
Connects or disconnects the edge and port in this model based on
remove . |
boolean | contains(Object node)
Returns true if node or one of its
ancestors is in the model.
|
static boolean | containsEdgeBetween(GraphModel model, Object v1, Object v2)
Returns true if the given vertices are conntected by a single edge in
this document. |
protected DefaultGraphModel.GraphModelEdit | createEdit(Object[] inserted, Object[] removed, Map attributes, ConnectionSet cs, ParentMap pm, UndoableEdit[] edits) |
protected DefaultGraphModel.GraphModelLayerEdit | createLayerEdit(Object[] cells, int layer) |
protected DefaultGraphModel.GraphModelEdit | createRemoveEdit(Object[] cells)
Returns an edit that represents a remove. |
Iterator | edges(Object port)
Returns an iterator of the edges connected to port .
|
void | edit(Map attributes, ConnectionSet cs, ParentMap pm, UndoableEdit[] edits)
Shortcut to the new edit method which allows inserts and removes to go
along with an edit. |
void | edit(Object[] inserted, Object[] removed, Map attributes, ConnectionSet cs, ParentMap pm, UndoableEdit[] edits)
Applies attributes and the connection changes to the
model. |
void | endUpdate() |
void | execute(ExecutableChange change) |
protected void | fireGraphChanged(Object source, GraphModelEvent.GraphModelChange edit) |
static Object[] | getAll(GraphModel model)
Returns all cells of the model in an array.
|
AttributeMap | getAttributes(Object node)
Returns a Map that represents the attributes for the
specified cell. |
Map | getAttributes()
Returns the graph model's attribute. |
Object | getChild(Object parent, int index)
Returns the child of parent at index index in the
parent's child array. |
int | getChildCount(Object parent)
Returns the number of children of parent . |
ConnectionSet | getConnectionSet()
A shortcut method to create a connection set that represents the
connections in this model. |
static List | getDescendants(GraphModel model, Object[] cells)
Flattens the given array of root cells by adding the roots and their
descandants. |
static Set | getEdges(GraphModel model, Object[] cells)
Returns the set of all connected edges to cells or their
descendants. |
static Object[] | getEdges(GraphModel model, Object cell, boolean incoming)
Returns the incoming or outgoing edges for cell. |
static Object[] | getEdgesBetween(GraphModel model, Object cell1, 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 Object[] | getIncomingEdges(GraphModel model, Object cell)
Returns the incoming edges for cell. |
int | getIndexOfChild(Object parent, Object child)
Returns the index of child in parent. |
int | getIndexOfRoot(Object root)
Returns the index of root in the model. |
static Object | getOpposite(GraphModel model, Object edge, Object cell) |
static Object[] | getOutgoingEdges(GraphModel model, Object cell)
Returns the outgoing edges for cell. |
Object | getParent(Object child)
Returns the parent of child in the model. |
Object | getRootAt(int index)
Returns the root at index index in the model. |
int | getRootCount()
Returns the number of roots in the model. |
List | getRoots() |
static Object[] | getRoots(GraphModel model)
Returns the roots of the specified model as an array. |
static Object[] | getRoots(GraphModel model, Object[] cells)
Returns the roots in cells by checking if their parent is
null . |
static Collection | getRootsAsCollection(GraphModel model)
Returns the roots of the specified model as a collection. |
Object | getSource(Object edge)
Returns the source of edge . |
static Object | getSourceVertex(GraphModel model, Object edge)
Returns the source vertex of the edge by calling getParent on getSource
on the specified model. |
Object | getTarget(Object edge)
Returns the target of edge . |
static Object | getTargetVertex(GraphModel model, Object edge)
Returns the target vertex of the edge by calling getParent on getTarget
on the specified model. |
static Object[] | getTopmostCells(GraphModel model, Object[] cells) |
int | getUpdateLevel() |
static Object | getUserObject(Object cell) |
Object | getValue(Object cell) |
protected Map | handleAttributes(Map attributes)
Applies attributes to the cells specified as keys. |
protected void | handleConnection(ConnectionSet.Connection c, boolean establish)
Inserts the specified connection into the model. |
protected ConnectionSet | handleConnectionSet(ConnectionSet cs)
Applies connectionSet to the model. |
protected Object[] | handleInsert(Object[] cells)
Inserts cells into the model. |
protected ParentMap | handleParentMap(ParentMap parentMap)
Applies cells to the model. |
protected Object[] | handleRemove(Object[] cells)
Removes cells from the model. |
static boolean | hasAncestorIn(GraphModel model, Set parents, Object child)
Returns true if the specified child has an ancestor in parents. |
void | insert(Object[] roots, Map attributes, ConnectionSet cs, ParentMap pm, UndoableEdit[] edits)
Inserts the roots and connections into the model. |
boolean | isEdge(Object edge)
Returns true if edge is a valid edge.
|
static boolean | isGroup(GraphModel model, Object cell)
Checks whether the cell has at least one child which is not a port. |
boolean | isLeaf(Object node)
Returns whether the specified node is a leaf node. |
boolean | isPort(Object port)
Returns true if port is a valid port,
possibly supporting edge connection.
|
boolean | isRemoveEmptyGroups() |
static boolean | isVertex(GraphModel model, Object vertex)
Returns true if vertex is a valid vertex.
|
static Object[] | order(GraphModel model, Object[] cells)
Orders cells so that they reflect the model order. |
void | remove(Object[] roots)
Removes cells from the model. |
void | removeGraphModelListener(GraphModelListener l)
Removes a listener previously added with addGraphModelListener() .
|
protected void | setParent(Object child, Object parent)
Sets the parent of the specified cell. |
void | setRemoveEmptyGroups(boolean removeEmptyGroups) |
static void | setSourcePort(GraphModel model, Object edge, Object port)
Helper methods that connects the source of edge to
port in model. |
static void | setTargetPort(GraphModel model, Object edge, Object port)
Helper methods that connects the source of edge to
port in model. |
void | toBack(Object[] cells)
Sends cells to back. |
void | toFront(Object[] cells)
Brings cells to front. |
protected void | updateTransaction(Object[] inserted, Object[] removed, Map attributes, ConnectionSet cs, ParentMap pm)
Updates the current state of the various transaction data |
Object | valueForCellChanged(Object cell, Object newValue)
Applies the new value to the specified cell. |
true
if port
is a valid source for
edge
. edge and port must be objects
previously obtained from this data source.
Returns: true
if port
is a valid source for
edge
.
true
if port
is a valid target for
edge
. edge and port must be objects
previously obtained from this data source.
Returns: true
if port
is a valid target for
edge
.
Parameters: l the listener to add
See Also: DefaultGraphModel
cells
. 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 in cells
. Use JGraph.getDescendants to get a complete
list of all children.object
.remove
. Subclassers should override this to update
connectivity datastructures.true
if node
or one of its
ancestors is in the model.
Returns: true
if node
is in the model
port
.
port must be a object previously obtained from this data source.
This method never returns null.
Parameters: port a port in the graph, obtained from this data source
Returns: Iterator
that represents the connected edges
attributes
and the connection changes to the
model. The initial edits
that triggered the call are
considered to be part of this transaction. The passed-in edits are
executed if they implement the
GraphModelEvent.ExecutableGraphChange
interface in
ascending array-order, after execution of the model change. Notifies the
model- and undo listeners of the change. Note: If only
edits
is 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.Returns: Returns all cells in the model including all descandants.
See Also: (GraphModel, Object[])
Map
that represents the attributes for the
specified cell. This attributes have precedence over each view's
attributes, regardless of isAttributeStore.
Returns: attributes of node
as a Map
getAttributes(null)
.
Returns: attributes of node
as a Map
Parameters: parent a node in the tree, obtained from this data source
Returns: the child of parent at index index
Parameters: parent a node in the tree, obtained from this data source
Returns: the number of children of the node parent
cells
or their
descendants. The passed-in cells are never returned as part of the result
set. This can be used on vertices, edges and ports.cell1
must 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.null
, returns -1.
Parameters: parent a note in the tree, obtained from this data source child 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
root
in the model. If root is
null
, returns -1.
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
Returns: Returns the opposite port or vertex in edge
.
Parameters: child a node in the graph, obtained from this data source
Returns: the parent of child
Returns: the root of at index index
Returns: the number of roots in the model
DefaultGraphModel
the performance can be improved to
linear time.cells
by checking if their parent is
null
. This implementation only uses the GraphModel
interface. This method never returns null.DefaultGraphModel
the performance can be improved to
linear time.edge
. edge must be an
object previously obtained from this data source.
Returns: Object
that represents the source of edge
edge
. edge must be an
object previously obtained from this data source.
Returns: Object
that represents the target of edge
Returns: Returns the roots of cells, eg. an array that contains no cell having an ancestor in cells.
Deprecated: Use getValue 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.
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.
attributes
to the cells specified as keys. Returns
the attributes
to undo the change.connectionSet
to the model. Returns a connection
set that may be used to undo this change.cells
into the model. Returns the cells that were
inserted (including descendants).cells
to the model. Returns a parent map that may
be used to undo this change.cells
from the model. Returns the cells that were
removed as roots.roots
and connections into the model. Notifies
the model- and undo listeners of the change. The passed-in edits are
executed if they implement the
GraphModelEvent.ExecutableGraphChange
interface in
ascending array-order, after execution of the model change. Note: The
passed-in propertyMap may contain PortView
s which must be
turned into Point
s when stored in the model.true
if edge
is a valid edge.
Returns: true
if edge
is a valid edge.
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
Parameters: node the node to check
Returns: true if the node is a leaf node
true
if port
is a valid port,
possibly supporting edge connection.
Returns: true
if port
is a valid port.
Returns: the removeEmptyGroups
true
if vertex
is a valid vertex.
Returns: true
if vertex
is a valid vertex.
cells
from the model. Notifies the model- and undo
listeners of the change.Parameters: l the listener to remove
See Also: DefaultGraphModel
Parameters: removeEmptyGroups the removeEmptyGroups to set
edge
to
port
in model.
edge
to
port
in model.
cells
to back.cells
to front.Parameters: inserted inserted cell to be added to the transaction removed removed cells to be removed from the transaction attributes nested attribute maps to apply to the transaction cs connection sets to add to the transaction pm parent maps to add to the transaction
Parameters: cell newValue
Returns: the old value for the cell, if any