Together Workflow Editor 3.0-1 API

org.enhydra.jawe.components.graph
Class JaWEGraphModel

java.lang.Object
  extended byjavax.swing.undo.UndoableEditSupport
      extended byorg.enhydra.jawe.components.graph.JaWEGraphModel
All Implemented Interfaces:
org.jgraph.graph.GraphModel, java.io.Serializable

public class JaWEGraphModel
extends javax.swing.undo.UndoableEditSupport
implements java.io.Serializable, org.jgraph.graph.GraphModel

A process editor implementation of a graph model.

Author:
Sasa Bojanic
See Also:
Serialized Form

Nested Class Summary
static class JaWEGraphModel.EmptyIterator
           
 class JaWEGraphModel.GraphModelEdit
          An implementation of GraphModelChange that can be added to the model event.
 class JaWEGraphModel.GraphModelLayerEdit
          An implementation of GraphViewChange.
 
Field Summary
protected  boolean asksAllowsChildren
          Indicates whether isLeaf is based on a node's allowsChildren value.
protected  java.util.Iterator emptyIterator
          Default instance of an empty iterator.
protected  javax.swing.event.EventListenerList listenerList
          The list of listeners that listen to the model.
protected  java.util.List roots
          Set that contains all root cells of this model.
 
Fields inherited from class javax.swing.undo.UndoableEditSupport
compoundEdit, listeners, realSource, updateLevel
 
Constructor Summary
JaWEGraphModel()
          Constructs a model that is not an attribute store.
 
Method Summary
 boolean acceptsSource(java.lang.Object edge, java.lang.Object port)
          Returns true if port is a valid source for edge.
 boolean acceptsTarget(java.lang.Object edge, java.lang.Object port)
          Returns true if port is a valid target for edge.
 void addGraphModelListener(org.jgraph.event.GraphModelListener l)
          Adds a listener for the GraphModelEvent posted after the graph changes.
 void cellsChanged(java.lang.Object[] cells)
           
static java.lang.Object cloneCell(org.jgraph.graph.GraphModel model, java.lang.Object cell)
          Returns a deep clone of the specified cell, including all children.
static java.lang.Object[] cloneCell(org.jgraph.graph.GraphModel model, java.lang.Object[] cells)
          Returns a deep clone of the specified cells, including all children.
protected  java.lang.Object cloneCell(java.lang.Object cellObj, java.lang.Object parent)
          Creates a shallow copy of the cell including a copy of the user object and a reference to the parent (which is a clone of the old parent or null).
 java.util.Map cloneCells(java.lang.Object[] cells)
          Returns a map of (cell, clone)-pairs for all cells and their children.
protected  java.lang.Object cloneUserObject(java.lang.Object userObject)
          Clones the user object.
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 on remove.
 boolean contains(java.lang.Object node)
          Returns true if node or one of its ancestors is in the model.
static boolean containsEdgeBetween(org.jgraph.graph.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  JaWEGraphModel.GraphModelEdit createCellEdit(java.util.Map attributes, org.jgraph.graph.ConnectionSet cs, org.jgraph.graph.ParentMap pm, javax.swing.undo.UndoableEdit[] edits, java.lang.String name)
          Returns an edit that represents a change.
protected  JaWEGraphModel.GraphModelEdit createEdit(java.lang.Object[] inserted, java.lang.Object[] removed, java.util.Map attributes, org.jgraph.graph.ConnectionSet cs, org.jgraph.graph.ParentMap pm, java.lang.String name)
           
protected  JaWEGraphModel.GraphModelEdit createInsertEdit(java.lang.Object[] cells, java.util.Map attributeMap, org.jgraph.graph.ConnectionSet cs, org.jgraph.graph.ParentMap pm, javax.swing.undo.UndoableEdit[] edits, java.lang.String name)
          Returns an edit that represents an insert.
protected  JaWEGraphModel.GraphModelLayerEdit createLayerEdit(java.lang.Object[] cells, int layer)
           
protected  JaWEGraphModel.GraphModelEdit createRemoveAndCellEdit(java.lang.Object[] cells, java.util.Map attributes, java.lang.String name)
          Returns an edit that represents a remove and a change.
protected  JaWEGraphModel.GraphModelEdit createRemoveEdit(java.lang.Object[] cells, java.lang.String name)
          Returns an edit that represents a remove.
 java.util.Iterator edges(java.lang.Object port)
          Returns an iterator of the edges connected to port.
 void edit(java.util.Map attributes, org.jgraph.graph.ConnectionSet cs, org.jgraph.graph.ParentMap pm, javax.swing.undo.UndoableEdit[] edits)
          Applies attributes and the connection changes to the model.
 void editFonts(java.util.Map attributes)
          Used for editing font sizes without haveing an undo action set.
protected  void fireGraphChanged(java.lang.Object source, org.jgraph.event.GraphModelEvent.GraphModelChange edit)
           
static java.lang.Object[] getAll(org.jgraph.graph.GraphModel model)
          Returns all cells of the model in an array.
static java.util.List getAllActivitiesInModel(org.jgraph.graph.GraphModel model)
          Gets all existing activities within model.
static java.util.List getAllBubblesInModel(org.jgraph.graph.GraphModel model)
          Gets all existing start/end bubbles within model.
static java.util.List getAllCellsInModel(org.jgraph.graph.GraphModel model)
          Gets all existing cells within model.
static java.util.List getAllParticipantsInModel(org.jgraph.graph.GraphModel model)
          Gets all existing participants within model.
static java.util.List getAllTransitionsInModel(org.jgraph.graph.GraphModel model)
          Gets all existing transitions within model.
 org.jgraph.graph.AttributeMap getAttributes(java.lang.Object node)
          Returns a Map that represents the attributes for the specified cell.
 java.lang.Object getChild(java.lang.Object parent, int index)
          Returns the child of parent at index index in the parent's child array.
 int getChildCount(java.lang.Object parent)
          Returns the number of children of parent.
static java.util.List getDescendantList(org.jgraph.graph.GraphModel model, java.lang.Object[] cells)
           
static java.util.List getEdges(org.jgraph.graph.GraphModel model, java.lang.Object[] cells)
          Returns the set of all connected edges to cells or their descendants.
static java.lang.Object[] getEdges(org.jgraph.graph.GraphModel model, java.lang.Object cell, boolean incoming)
          Returns the incoming or outgoing edges for cell.
static java.lang.Object[] getEdgesBetween(org.jgraph.graph.GraphModel model, java.lang.Object cell1, java.lang.Object cell2, boolean directed)
          Returns the edges between two specified ports or two specified vertices.
 org.jgraph.event.GraphModelListener[] getGraphModelListeners()
          Return an array of all GraphModelListeners that were added to this model.
static java.lang.Object[] getIncomingEdges(org.jgraph.graph.GraphModel model, java.lang.Object cell)
          Returns the incoming edges for cell.
 int getIndexOfChild(java.lang.Object parent, java.lang.Object child)
          Returns the index of child in parent.
 int getIndexOfRoot(java.lang.Object root)
          Returns the index of root in the model.
static java.lang.Object getOpposite(org.jgraph.graph.GraphModel model, java.lang.Object edge, java.lang.Object cell)
           
static java.lang.Object[] getOutgoingEdges(org.jgraph.graph.GraphModel model, java.lang.Object cell)
          Returns the outgoing edges for cell.
 java.lang.Object getParent(java.lang.Object child)
          Returns the parent of child in the model.
 java.lang.Object getRootAt(int index)
          Returns the root at index index in the model.
 int getRootCount()
          Returns the number of roots in the model.
static java.util.Set getRootParticipants(org.jgraph.graph.GraphModel model)
          Returns the root participants of the specified model as a set.
static java.lang.Object[] getRoots(org.jgraph.graph.GraphModel model)
          Returns the roots of the specified model as an array.
static java.lang.Object[] getRoots(org.jgraph.graph.GraphModel model, java.lang.Object[] cells)
          Returns the roots in cells by checking if their parent is null.
 java.lang.Object getSource(java.lang.Object edge)
          Returns the source of edge.
static java.lang.Object getSourceVertex(org.jgraph.graph.GraphModel model, java.lang.Object edge)
          Returns the source vertex of the edge by calling getParent on getSource on the specified model.
 java.lang.Object getTarget(java.lang.Object edge)
          Returns the target of edge.
static java.lang.Object getTargetVertex(org.jgraph.graph.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(org.jgraph.graph.GraphModel model, java.lang.Object[] cells)
           
static java.lang.Object getUserObject(java.lang.Object cell)
          Deprecated. Use GraphModel.getValue(Object) instead.
 java.lang.Object getValue(java.lang.Object cell)
           
protected  java.util.Map handleAttributes(java.util.Map attributes)
          Applies attributes to the cells specified as keys.
protected  void handleConnection(org.jgraph.graph.ConnectionSet.Connection c)
          Inserts the specified connection into the model.
protected  org.jgraph.graph.ConnectionSet handleConnectionSet(org.jgraph.graph.ConnectionSet cs)
          Applies connectionSet to the model.
protected  java.lang.Object[] handleInsert(java.lang.Object[] cells)
          Inserts cells into the model.
protected  org.jgraph.graph.ParentMap handleParentMap(org.jgraph.graph.ParentMap parentMap)
          Applies cells to the model.
protected  java.lang.Object[] handleRemove(java.lang.Object[] cells)
          Removes cells from the model.
static boolean hasAncestorIn(org.jgraph.graph.GraphModel model, java.util.Set parents, java.lang.Object child)
          Returns true if the specified child has an ancestor in parents.
 void insert(java.lang.Object[] pRoots, java.util.Map pAttributes, org.jgraph.graph.ConnectionSet pCs, org.jgraph.graph.ParentMap pPm, javax.swing.undo.UndoableEdit[] pEdits)
          Inserts the roots and connections into the model.
 void insertAndEdit(java.lang.Object[] pRoots, java.util.Map pAttributes, org.jgraph.graph.ConnectionSet pCs, org.jgraph.graph.ParentMap pPm, javax.swing.undo.UndoableEdit[] pEdits, java.lang.String pUndoMsg)
          Inserts the roots and connections into the model.
 boolean isEdge(java.lang.Object edge)
          Returns true if edge is a valid edge.
static boolean isGroup(org.jgraph.graph.GraphModel model, java.lang.Object cell)
          Checks whether the cell has at least one child which is not a port.
 boolean isLeaf(java.lang.Object node)
          Returns whether the specified node is a leaf node.
 boolean isPort(java.lang.Object port)
          Returns true if port is a valid port, possibly supporting edge connection.
static java.lang.Object[] order(org.jgraph.graph.GraphModel model, java.lang.Object[] cells)
          Orders cells so that they reflect the model order.
private  void readObject(java.io.ObjectInputStream s)
           
 void remove(java.lang.Object[] pRoots)
          Removes cells from the model.
 void removeAndEdit(java.lang.Object[] pRoots, java.util.Map pAttributes, java.lang.String pName)
          Removes cells from the model and edits cells given in a propertyMap.
 void removeBubbles(java.lang.Object[] bubbles, org.jgraph.event.GraphModelListener gml)
          Used for editing font sizes without haveing an undo action set.
 void removeGraphModelListener(org.jgraph.event.GraphModelListener l)
          Removes a listener previously added with addGraphModelListener().
static void setSourcePort(org.jgraph.graph.GraphModel model, java.lang.Object edge, java.lang.Object port)
          Helper methods that connects the source of edge to port in model.
static void setTargetPort(org.jgraph.graph.GraphModel model, java.lang.Object edge, java.lang.Object port)
          Helper methods that connects the source of edge to port in model.
 void toBack(java.lang.Object[] cells)
          Sends cells to back.
 void toFront(java.lang.Object[] cells)
          Brings cells to front.
 java.lang.Object valueForCellChanged(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, beginUpdate, createCompoundEdit, endUpdate, getUndoableEditListeners, getUpdateLevel, 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.

Constructor Detail

JaWEGraphModel

public JaWEGraphModel()
Constructs a model that is not an attribute store.

Method Detail

getRootCount

public int getRootCount()
Returns the number of roots in the model. Returns 0 if the model is empty.

Specified by:
getRootCount in interface org.jgraph.graph.GraphModel
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:
getRootAt in interface org.jgraph.graph.GraphModel
Returns:
the root of at index index

getIndexOfRoot

public int getIndexOfRoot(java.lang.Object root)
Returns the index of root in the model. If root is null, returns -1.

Specified by:
getIndexOfRoot in interface org.jgraph.graph.GraphModel
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)
Returns true if node or one of its ancestors is in the model.

Specified by:
contains in interface org.jgraph.graph.GraphModel
Returns:
true if node is in the model

getAttributes

public org.jgraph.graph.AttributeMap getAttributes(java.lang.Object node)
Returns a Map that represents the attributes for the specified cell. This attributes have precedence over each view's attributes, regardless of isAttributeStore.

Specified by:
getAttributes in interface org.jgraph.graph.GraphModel
Returns:
attributes of node as a Map

getValue

public java.lang.Object getValue(java.lang.Object cell)
Specified by:
getValue in interface org.jgraph.graph.GraphModel
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.

getSource

public java.lang.Object getSource(java.lang.Object edge)
Returns the source of edge. edge must be an object previously obtained from this data source.

Specified by:
getSource in interface org.jgraph.graph.GraphModel
Returns:
Object that represents the source of edge

getTarget

public java.lang.Object getTarget(java.lang.Object edge)
Returns the target of edge. edge must be an object previously obtained from this data source.

Specified by:
getTarget in interface org.jgraph.graph.GraphModel
Returns:
Object that represents the target of edge

acceptsSource

public boolean acceptsSource(java.lang.Object edge,
                             java.lang.Object port)
Returns true if port is a valid source for edge. edge and port must be objects previously obtained from this data source.

Specified by:
acceptsSource in interface org.jgraph.graph.GraphModel
Returns:
true if port is a valid source for edge.

acceptsTarget

public boolean acceptsTarget(java.lang.Object edge,
                             java.lang.Object port)
Returns true if port is a valid target for edge. edge and port must be objects previously obtained from this data source.

Specified by:
acceptsTarget in interface org.jgraph.graph.GraphModel
Returns:
true if port is a valid target for edge.

edges

public java.util.Iterator edges(java.lang.Object port)
Returns an iterator of the edges connected to port. port must be a object previously obtained from this data source. This method never returns null.

Specified by:
edges in interface org.jgraph.graph.GraphModel
Parameters:
port - a port in the graph, obtained from this data source
Returns:
Iterator that represents the connected edges

isEdge

public boolean isEdge(java.lang.Object edge)
Returns true if edge is a valid edge.

Specified by:
isEdge in interface org.jgraph.graph.GraphModel
Returns:
true if edge is a valid edge.

isPort

public boolean isPort(java.lang.Object port)
Returns true if port is a valid port, possibly supporting edge connection.

Specified by:
isPort in interface org.jgraph.graph.GraphModel
Returns:
true if port is a valid port.

cloneCells

public java.util.Map cloneCells(java.lang.Object[] cells)
Returns a map of (cell, clone)-pairs for all cells and their children. Special care is taken to replace the anchor references between ports. (Iterative implementation.)

Specified by:
cloneCells in interface org.jgraph.graph.GraphModel

cloneCell

protected java.lang.Object cloneCell(java.lang.Object cellObj,
                                     java.lang.Object parent)
Creates a shallow copy of the cell including a copy of the user object and a reference to the parent (which is a clone of the old parent or null). 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 returns object.


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:
getParent in interface org.jgraph.graph.GraphModel
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 is null, returns -1.

Specified by:
getIndexOfChild in interface org.jgraph.graph.GraphModel
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

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:
getChild in interface org.jgraph.graph.GraphModel
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:
getChildCount in interface org.jgraph.graph.GraphModel
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:
isLeaf in interface org.jgraph.graph.GraphModel
Parameters:
node - the node to check
Returns:
true if the node is a leaf node

insert

public void insert(java.lang.Object[] pRoots,
                   java.util.Map pAttributes,
                   org.jgraph.graph.ConnectionSet pCs,
                   org.jgraph.graph.ParentMap pPm,
                   javax.swing.undo.UndoableEdit[] pEdits)
Inserts the 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 external order is important in a special case: After insertion on a partial view, ie. one that does not display all cells of the model, the cell is made visible after it is inserted into the model. This requires the inserting view to be able to add the cell to the visible set before it is inserted into the model.) Note: The passed-in propertyMap may contains PortViews which must be turned into Points when stored in the model.

Specified by:
insert in interface org.jgraph.graph.GraphModel

remove

public void remove(java.lang.Object[] pRoots)
Removes cells from the model. Notifies the model- and undo listeners of the change.

Specified by:
remove in interface org.jgraph.graph.GraphModel

edit

public void edit(java.util.Map attributes,
                 org.jgraph.graph.ConnectionSet cs,
                 org.jgraph.graph.ParentMap pm,
                 javax.swing.undo.UndoableEdit[] edits)
Applies 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.

Specified by:
edit in interface org.jgraph.graph.GraphModel

editFonts

public void editFonts(java.util.Map attributes)
Used for editing font sizes without haveing an undo action set.


removeBubbles

public void removeBubbles(java.lang.Object[] bubbles,
                          org.jgraph.event.GraphModelListener gml)
Used for editing font sizes without haveing an undo action set.


insertAndEdit

public void insertAndEdit(java.lang.Object[] pRoots,
                          java.util.Map pAttributes,
                          org.jgraph.graph.ConnectionSet pCs,
                          org.jgraph.graph.ParentMap pPm,
                          javax.swing.undo.UndoableEdit[] pEdits,
                          java.lang.String pUndoMsg)
Inserts the 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 external order is important in a special case: After insertion on a partial view, ie. one that does not display all cells of the model, the cell is made visible after it is inserted into the model. This requires the inserting view to be able to add the cell to the visible set before it is inserted into the model.) Note: The passed-in propertyMap may contains PortViews which must be turned into Points when stored in the model.


removeAndEdit

public void removeAndEdit(java.lang.Object[] pRoots,
                          java.util.Map pAttributes,
                          java.lang.String pName)
Removes cells from the model and edits cells given in a propertyMap. If removeChildren is true, the children are also removed. Notifies the model- and undo listeners of the change.


toBack

public void toBack(java.lang.Object[] cells)
Sends cells to back.

Specified by:
toBack in interface org.jgraph.graph.GraphModel

toFront

public void toFront(java.lang.Object[] cells)
Brings cells to front.

Specified by:
toFront in interface org.jgraph.graph.GraphModel

createLayerEdit

protected JaWEGraphModel.GraphModelLayerEdit createLayerEdit(java.lang.Object[] cells,
                                                             int layer)

createInsertEdit

protected JaWEGraphModel.GraphModelEdit createInsertEdit(java.lang.Object[] cells,
                                                         java.util.Map attributeMap,
                                                         org.jgraph.graph.ConnectionSet cs,
                                                         org.jgraph.graph.ParentMap pm,
                                                         javax.swing.undo.UndoableEdit[] edits,
                                                         java.lang.String name)
Returns an edit that represents an insert.


createRemoveEdit

protected JaWEGraphModel.GraphModelEdit createRemoveEdit(java.lang.Object[] cells,
                                                         java.lang.String name)
Returns an edit that represents a remove.


createCellEdit

protected JaWEGraphModel.GraphModelEdit createCellEdit(java.util.Map attributes,
                                                       org.jgraph.graph.ConnectionSet cs,
                                                       org.jgraph.graph.ParentMap pm,
                                                       javax.swing.undo.UndoableEdit[] edits,
                                                       java.lang.String name)
Returns an edit that represents a change.


createEdit

protected JaWEGraphModel.GraphModelEdit createEdit(java.lang.Object[] inserted,
                                                   java.lang.Object[] removed,
                                                   java.util.Map attributes,
                                                   org.jgraph.graph.ConnectionSet cs,
                                                   org.jgraph.graph.ParentMap pm,
                                                   java.lang.String name)

createRemoveAndCellEdit

protected JaWEGraphModel.GraphModelEdit createRemoveAndCellEdit(java.lang.Object[] cells,
                                                                java.util.Map attributes,
                                                                java.lang.String name)
Returns an edit that represents a remove and a change.


handleInsert

protected java.lang.Object[] handleInsert(java.lang.Object[] cells)
Inserts cells into the model. Returns the cells that were inserted (including descendants).


handleRemove

protected java.lang.Object[] handleRemove(java.lang.Object[] cells)
Removes cells from the model. Returns the cells that were removed as roots.


handleParentMap

protected org.jgraph.graph.ParentMap handleParentMap(org.jgraph.graph.ParentMap parentMap)
Applies cells to the model. Returns a parent map that may be used to undo this change.


handleAttributes

protected java.util.Map handleAttributes(java.util.Map attributes)
Applies attributes to the cells specified as keys. Returns the attributes to 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:
valueForCellChanged in interface org.jgraph.graph.GraphModel
Parameters:
cell -
newValue -
Returns:
the old value for the cell, if any

handleConnectionSet

protected org.jgraph.graph.ConnectionSet handleConnectionSet(org.jgraph.graph.ConnectionSet cs)
Applies connectionSet to the model. Returns a connection set that may be used to undo this change.


handleConnection

protected void handleConnection(org.jgraph.graph.ConnectionSet.Connection c)
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 on remove. Subclassers should override this to update connectivity datastructures.


addGraphModelListener

public void addGraphModelListener(org.jgraph.event.GraphModelListener l)
Adds a listener for the GraphModelEvent posted after the graph changes.

Specified by:
addGraphModelListener in interface org.jgraph.graph.GraphModel
Parameters:
l - the listener to add
See Also:
removeGraphModelListener(org.jgraph.event.GraphModelListener)

removeGraphModelListener

public void removeGraphModelListener(org.jgraph.event.GraphModelListener l)
Removes a listener previously added with addGraphModelListener().

Specified by:
removeGraphModelListener in interface org.jgraph.graph.GraphModel
Parameters:
l - the listener to remove
See Also:
addGraphModelListener(org.jgraph.event.GraphModelListener)

cellsChanged

public void cellsChanged(java.lang.Object[] cells)

fireGraphChanged

protected void fireGraphChanged(java.lang.Object source,
                                org.jgraph.event.GraphModelEvent.GraphModelChange edit)

getGraphModelListeners

public org.jgraph.event.GraphModelListener[] getGraphModelListeners()
Return an array of all GraphModelListeners that were added to this model.


cloneCell

public static java.lang.Object cloneCell(org.jgraph.graph.GraphModel model,
                                         java.lang.Object cell)
Returns a deep clone of the specified cell, including all children.


cloneCell

public static java.lang.Object[] cloneCell(org.jgraph.graph.GraphModel model,
                                           java.lang.Object[] cells)
Returns a deep clone of the specified cells, including all children.


setSourcePort

public static void setSourcePort(org.jgraph.graph.GraphModel model,
                                 java.lang.Object edge,
                                 java.lang.Object port)
Helper methods that connects the source of edge to port in model.


setTargetPort

public static void setTargetPort(org.jgraph.graph.GraphModel model,
                                 java.lang.Object edge,
                                 java.lang.Object port)
Helper methods that connects the source of edge to port in model.


getSourceVertex

public static java.lang.Object getSourceVertex(org.jgraph.graph.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(org.jgraph.graph.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. Use GraphModel.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(org.jgraph.graph.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(org.jgraph.graph.GraphModel model)
Returns all cells of the model in an array.

Returns:
Returns all cells in the model including all descandants.

getRoots

public static java.lang.Object[] getRoots(org.jgraph.graph.GraphModel model)
Returns the roots of the specified model as an array.


getRootParticipants

public static java.util.Set getRootParticipants(org.jgraph.graph.GraphModel model)
Returns the root participants of the specified model as a set.


getRoots

public static java.lang.Object[] getRoots(org.jgraph.graph.GraphModel model,
                                          java.lang.Object[] cells)
Returns the roots in cells by checking if their parent is null. This implementation only uses the GraphModel interface. This method never returns null.


getTopmostCells

public static java.lang.Object[] getTopmostCells(org.jgraph.graph.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(org.jgraph.graph.GraphModel model,
                                    java.util.Set parents,
                                    java.lang.Object child)
Returns true if the specified child has an ancestor in parents.


getDescendantList

public static java.util.List getDescendantList(org.jgraph.graph.GraphModel model,
                                               java.lang.Object[] cells)

getAllCellsInModel

public static java.util.List getAllCellsInModel(org.jgraph.graph.GraphModel model)
Gets all existing cells within model.


getAllParticipantsInModel

public static java.util.List getAllParticipantsInModel(org.jgraph.graph.GraphModel model)
Gets all existing participants within model.


getAllActivitiesInModel

public static java.util.List getAllActivitiesInModel(org.jgraph.graph.GraphModel model)
Gets all existing activities within model.


getAllBubblesInModel

public static java.util.List getAllBubblesInModel(org.jgraph.graph.GraphModel model)
Gets all existing start/end bubbles within model.


getAllTransitionsInModel

public static java.util.List getAllTransitionsInModel(org.jgraph.graph.GraphModel model)
Gets all existing transitions within model.


order

public static java.lang.Object[] order(org.jgraph.graph.GraphModel model,
                                       java.lang.Object[] cells)
Orders cells so that they reflect the model order.


getEdges

public static java.util.List getEdges(org.jgraph.graph.GraphModel model,
                                      java.lang.Object[] cells)
Returns the set of all connected edges to 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.


getOpposite

public static java.lang.Object getOpposite(org.jgraph.graph.GraphModel model,
                                           java.lang.Object edge,
                                           java.lang.Object cell)
Returns:
Returns the opposite port or vertex in edge.

containsEdgeBetween

public static boolean containsEdgeBetween(org.jgraph.graph.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(org.jgraph.graph.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 then cell1 must be the source of the returned edges.


getOutgoingEdges

public static java.lang.Object[] getOutgoingEdges(org.jgraph.graph.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(org.jgraph.graph.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(org.jgraph.graph.GraphModel model,
                                          java.lang.Object cell,
                                          boolean incoming)
Returns the incoming or outgoing edges for cell. Cell should be a port or a vertex.


readObject

private void readObject(java.io.ObjectInputStream s)
                 throws java.io.IOException,
                        java.lang.ClassNotFoundException
Throws:
java.io.IOException
java.lang.ClassNotFoundException

Together Workflow Editor 3.0-1 API