public abstract class GraphScene<N,E> extends ObjectScene
In comparison with the GraphScene class, in this class the graph consists of nodes and edges. Each edge could be attach to a single source and target node.
The class is abstract and manages only data model and mapping with widgets. The graphics (widgets) has to be supplied by a developer by overriding the attachNodeWidget, attachEdgeWidget, attachEdgeSourceAnchor and attachEdgeTargetAnchor abstract methods.
This class is using generics and allows you to specify type representation for nodes and edges in the graph model. Example:
class MyGraph extends GraphScene<MyNode, MyEdge> { ... }Since the type of nodes and edges could be the same, all node and edge instances has to be unique within the whole scene.
Node and Edge should not be a Widget. It should work properly but in that case the ObjectScene class is loosing its purpose because there is no need to manage a mapping of an instance to the same instance.
Modifier and Type | Class and Description |
---|---|
static class |
GraphScene.StringGraph
This class is a particular GraphScene where nodes and edges are represented with String class.
|
Scene.SceneListener
Widget.Dependency
Constructor and Description |
---|
GraphScene()
Creates a graph scene.
|
Modifier and Type | Method and Description |
---|---|
Widget |
addEdge(E edge)
Adds an edge.
|
Widget |
addNode(N node)
Adds a node.
|
protected abstract void |
attachEdgeSourceAnchor(E edge,
N oldSourceNode,
N sourceNode)
Called by the setEdgeSource method to notify about the changing the edge source in the graph model.
|
protected abstract void |
attachEdgeTargetAnchor(E edge,
N oldTargetNode,
N targetNode)
Called by the setEdgeTarget method to notify about the changing the edge target in the graph model.
|
protected abstract Widget |
attachEdgeWidget(E edge)
Called by the addEdge method before the edge is registered to acquire a widget that is going to represent the edge in the scene.
|
protected abstract Widget |
attachNodeWidget(N node)
Called by the addNode method before the node is registered to acquire a widget that is going to represent the node in the scene.
|
protected void |
detachEdgeWidget(E edge,
Widget widget)
Called by the removeEdge method to notify that an edge is removed from the graph model.
|
protected void |
detachNodeWidget(N node,
Widget widget)
Called by the removeNode method to notify that a node is removed from the graph model.
|
Collection<E> |
findEdgesBetween(N sourceNode,
N targetNode)
Returns a collection of edges that are between a specified source and target nodes.
|
Collection<E> |
findNodeEdges(N node,
boolean allowOutputEdges,
boolean allowInputEdges)
Returns a collection of edges that are attached to a specified node.
|
Collection<E> |
getEdges()
Returns a collection of all edges registered in the graph model.
|
N |
getEdgeSource(E edge)
Returns an edge source.
|
N |
getEdgeTarget(E edge)
Returns an edge target.
|
Collection<N> |
getNodes()
Returns a collection of all nodes registered in the graph model.
|
boolean |
isEdge(Object object)
Checks whether an object is registered as a edge in the graph model.
|
boolean |
isNode(Object object)
Checks whether an object is registered as a node in the graph model.
|
protected void |
notifyEdgeAdded(E edge,
Widget widget)
Called by the addEdge method to notify that an edge is added into the graph model.
|
protected void |
notifyNodeAdded(N node,
Widget widget)
Called by the addNode method to notify that a node is added into the graph model.
|
void |
removeEdge(E edge)
Removes an edge and detaches it from its source and target nodes.
|
void |
removeNode(N node)
Removes a node.
|
void |
removeNodeWithEdges(N node)
Removes a specified node with all edges that are attached to the node.
|
void |
setEdgeSource(E edge,
N sourceNode)
Sets an edge source.
|
void |
setEdgeTarget(E edge,
N targetNode)
Sets an edge target.
|
addObject, addObjectSceneListener, clearObjectState, createObjectHoverAction, createSelectAction, findObject, findObjectState, findStoredObject, findWidget, findWidgets, getFocusedObject, getHighlightedObjects, getHoveredObject, getIdentityCode, getObjects, getObjectState, getSelectedObjects, isObject, removeObject, removeObjectMapping, removeObjectSceneListener, setFocusedObject, setHighlightedObjects, setHoveredObject, setSelectedObjects, userSelectionSuggested
addSceneListener, convertSceneToView, convertSceneToView, convertViewToScene, convertViewToScene, createBirdView, createSatelliteView, createView, createWidgetHoverAction, getActiveTool, getDefaultFont, getFocusedWidget, getGraphics, getInputBindings, getKeyEventProcessingType, getLookFeel, getMaximumBounds, getPriorActions, getResourceTable, getSceneAnimator, getView, getZoomFactor, isRepaintRequiredForRevalidating, isValidated, paint, removeSceneListener, setActiveTool, setFocusedWidget, setKeyEventProcessingType, setLookFeel, setMaximumBounds, setResourceTable, setZoomFactor, validate, validate
addChild, addChild, addChild, addChild, addChildren, addDependency, bringToBack, bringToFront, calculateClientArea, convertLocalToScene, convertLocalToScene, convertSceneToLocal, convertSceneToLocal, createActions, equals, getAccessibleContext, getActions, getActions, getBackground, getBorder, getBounds, getChildConstraint, getChildren, getClientArea, getCursor, getCursorAt, getDependencies, getFont, getForeground, getLayout, getLocation, getLookup, getMaximumSize, getMinimumSize, getParentWidget, getPreferredBounds, getPreferredLocation, getPreferredSize, getScene, getState, getToolTipText, hashCode, isCheckClipping, isEnabled, isHitAt, isOpaque, isPreferredBoundsSet, isVisible, notifyAdded, notifyBackgroundChanged, notifyFontChanged, notifyForegroundChanged, notifyRemoved, notifyStateChanged, paint, paintBackground, paintBorder, paintChildren, paintWidget, removeChild, removeChildren, removeChildren, removeDependency, removeFromParent, repaint, resolveBounds, revalidate, revalidate, setAccessibleContext, setBackground, setBackgroundFromResource, setBorder, setBorder, setCheckClipping, setChildConstraint, setCursor, setEnabled, setFont, setFontFromResource, setForeground, setForegroundFromResource, setLayout, setMaximumSize, setMinimumSize, setOpaque, setPreferredBounds, setPreferredLocation, setPreferredSize, setState, setToolTipText, setVisible, updateResources
public final Widget addNode(N node)
node
- the node to be added; the node must not be null, must not be already in the model, must be unique in the model
(means: there is no other node or edge in the model has is equal to this node)
and must not be a Widgetpublic final void removeNode(N node)
node
- the node to be removed; the node must not be null and must be already in the modelpublic final void removeNodeWithEdges(N node)
node
- the node to be removedpublic final Collection<N> getNodes()
public final Widget addEdge(E edge)
edge
- the edge to be added; the edge must not be null, must not be already in the model, must be unique in the model
(means: there is no other node or edge in the model has is equal to this edge)
and must not be a Widgetpublic final void removeEdge(E edge)
edge
- the edge to be removed; the edge must not be null and must be already in the modelpublic final Collection<E> getEdges()
public final void setEdgeSource(E edge, N sourceNode)
edge
- the edge which source is going to be changedsourceNode
- the source node; if null, then the edge source will be detachedpublic final void setEdgeTarget(E edge, N targetNode)
edge
- the edge which target is going to be changedtargetNode
- the target node; if null, then the edge target will be detachedpublic final N getEdgeSource(E edge)
edge
- the edgepublic final N getEdgeTarget(E edge)
edge
- the edgepublic final Collection<E> findNodeEdges(N node, boolean allowOutputEdges, boolean allowInputEdges)
node
- the node which edges connections are searched forallowOutputEdges
- if true, the output edges are included in the collection; if false, the output edges are not includedallowInputEdges
- if true, the input edges are included in the collection; if false, the input edges are not includedpublic final Collection<E> findEdgesBetween(N sourceNode, N targetNode)
sourceNode
- the source nodetargetNode
- the target nodepublic boolean isNode(Object object)
object
- the object; must not be a Widgetpublic boolean isEdge(Object object)
object
- the object; must not be a Widgetprotected void notifyNodeAdded(N node, Widget widget)
node
- the added nodewidget
- the widget created by the attachNodeWidget method as a visual representation of the nodeprotected void notifyEdgeAdded(E edge, Widget widget)
edge
- the added nodewidget
- the widget created by the attachEdgeWidget method as a visual representation of the edgeprotected void detachNodeWidget(N node, Widget widget)
node
- the removed nodewidget
- the removed node widget; null if the node is non-visualprotected void detachEdgeWidget(E edge, Widget widget)
edge
- the removed edgewidget
- the removed edge widget; null if the edge is non-visualprotected abstract Widget attachNodeWidget(N node)
node
- the node that is going to be addedprotected abstract Widget attachEdgeWidget(E edge)
edge
- the edge that is going to be addedprotected abstract void attachEdgeSourceAnchor(E edge, N oldSourceNode, N sourceNode)
Usually it is implemented as:
Widget sourceNodeWidget = findWidget (sourceNode); Anchor sourceAnchor = AnchorFactory.createRectangularAnchor (sourceNodeWidget) ConnectionWidget edgeWidget = (ConnectionWidget) findWidget (edge); edgeWidget.setSourceAnchor (sourceAnchor);
edge
- the edge which source is changed in graph modeloldSourceNode
- the old source nodesourceNode
- the new source nodeprotected abstract void attachEdgeTargetAnchor(E edge, N oldTargetNode, N targetNode)
Usually it is implemented as:
Widget targetNodeWidget = findWidget (targetNode); Anchor targetAnchor = AnchorFactory.createRectangularAnchor (targetNodeWidget) ConnectionWidget edgeWidget = (ConnectionWidget) findWidget (edge); edgeWidget.setTargetAnchor (targetAnchor);
edge
- the edge which target is changed in graph modeloldTargetNode
- the old target nodetargetNode
- the new target node