public abstract class GraphPinScene<N,E,P> extends ObjectScene
In comparison with the GraphScene class, in this class the graph consists of nodes, edges and pins. Each pin is assigned to a node (the assigned cannot be change at any time. Each edge could be attach to a single source and target pin.
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, attachPinWidget, 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, MyPin> { ... }Since the type of nodes, edges and pins could be the same, all node, edge and pin instances have to be unique within the whole scene.
Modifier and Type | Class and Description |
---|---|
static class |
GraphPinScene.StringGraph
This class is a particular GraphPinScene where nodes, edges and pins are represented with String class.
|
Scene.SceneListener
Widget.Dependency
Constructor and Description |
---|
GraphPinScene()
Creates a graph scene.
|
Modifier and Type | Method and Description |
---|---|
Widget |
addEdge(E edge)
Adds an edge.
|
Widget |
addNode(N node)
Adds a node.
|
Widget |
addPin(N node,
P pin)
Adds a pin and assigns it to a specified node.
|
protected abstract void |
attachEdgeSourceAnchor(E edge,
P oldSourcePin,
P sourcePin)
Called by the setEdgeSource method to notify about the changing the edge source in the graph model.
|
protected abstract void |
attachEdgeTargetAnchor(E edge,
P oldTargetPin,
P targetPin)
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 abstract Widget |
attachPinWidget(N node,
P pin)
Called by the addPin method before the pin is registered to acquire a widget that is going to represent the pin 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.
|
protected void |
detachPinWidget(P pin,
Widget widget)
Called by the removePin method to notify that a pin is removed from the graph model.
|
Collection<E> |
findEdgesBetween(P sourcePin,
P targetPin)
Returns a collection of edges that are between a source and a target pin.
|
Collection<E> |
findPinEdges(P pin,
boolean allowOutputEdges,
boolean allowInputEdges)
Returns a collection of edges that are attached to a specified pin.
|
Collection<E> |
getEdges()
Returns a collection of all edges registered in the graph model.
|
P |
getEdgeSource(E edge)
Returns an edge source.
|
P |
getEdgeTarget(E edge)
Returns an edge target.
|
Collection<P> |
getNodePins(N node)
Returns a collection of pins that are assigned to a specified node
|
Collection<N> |
getNodes()
Returns a collection of all nodes registered in the graph model.
|
N |
getPinNode(P pin)
Returns a node where the pin assigned to.
|
Collection<P> |
getPins()
Returns all pins registered in the graph model.
|
boolean |
isEdge(Object object)
Checks whether an object is registered as an edge in the graph model.
|
boolean |
isNode(Object object)
Checks whether an object is registered as a node in the graph model.
|
boolean |
isPin(Object object)
Checks whether an object is registered as a pin 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.
|
protected void |
notifyPinAdded(N node,
P pin,
Widget widget)
Called by the addPin method to notify that a pin is added into the graph model.
|
void |
removeEdge(E edge)
Removes an edge and detaches it from its source and target pins.
|
void |
removeNode(N node)
Removes a node with all pins that are assigned to the node.
|
void |
removeNodeWithEdges(N node)
Removes a node with all pins that are assign to the node and with all edges that are connected to the pins.
|
void |
removePin(P pin)
Removes an pin and detaches all edges that are connected to it.
|
void |
removePinWithEdges(P pin)
Removes a pin with all edges that are connected to the pin.
|
void |
setEdgeSource(E edge,
P sourcePin)
Sets an edge source.
|
void |
setEdgeTarget(E edge,
P targetPin)
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, edge or pin 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 removed; the node must not be null and must be already in the modelpublic 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, edge or pin 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 Widget addPin(N node, P pin)
node
- the node where the pin is assigned topin
- the pin to be added; the pin must not be null, must not be already in the model, must be unique in the model
(means: there is no other node, edge or pin in the model has is equal to this pin)
and must not be a Widgetpublic final void removePin(P pin)
pin
- the pin to be removed; the pin must not be null and must be already in the modelpublic final void removePinWithEdges(P pin)
pin
- the pin to be removed; the pin must not be null and must be already in the modelpublic final N getPinNode(P pin)
pin
- the pinpublic final Collection<P> getPins()
public final Collection<P> getNodePins(N node)
node
- the nodepublic final void setEdgeSource(E edge, P sourcePin)
edge
- the edge which source is going to be changedsourcePin
- the source pin; if null, then the edge source will be detachedpublic final void setEdgeTarget(E edge, P targetPin)
edge
- the edge which target is going to be changedtargetPin
- the target pin; if null, then the edge target will be detachedpublic final P getEdgeSource(E edge)
edge
- the edgepublic final P getEdgeTarget(E edge)
edge
- the edgepublic final Collection<E> findPinEdges(P pin, boolean allowOutputEdges, boolean allowInputEdges)
pin
- the pin 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(P sourcePin, P targetPin)
sourcePin
- the source pintargetPin
- the target pinpublic boolean isNode(Object object)
object
- the object; must not be a Widgetpublic boolean isEdge(Object object)
object
- the object; must not be a Widgetpublic boolean isPin(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 notifyPinAdded(N node, P pin, Widget widget)
node
- the node where the pin is assigned topin
- the added pinwidget
- the widget created by the attachPinWidget method as a visual representation of the pinprotected 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 void detachPinWidget(P pin, Widget widget)
pin
- the removed pinwidget
- the removed pin widget; null if the pin 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 Widget attachPinWidget(N node, P pin)
node
- the node where the pin is assigned topin
- the pin that is going to be addedprotected abstract void attachEdgeSourceAnchor(E edge, P oldSourcePin, P sourcePin)
Usually it is implemented as:
Widget sourcePinWidget = findWidget (sourcePin); Anchor sourceAnchor = AnchorFactory.createRectangularAnchor (sourcePinWidget) ConnectionWidget edgeWidget = (ConnectionWidget) findWidget (edge); edgeWidget.setSourceAnchor (sourceAnchor);
edge
- the edge which source is changed in graph modeloldSourcePin
- the old source pinsourcePin
- the new source pinprotected abstract void attachEdgeTargetAnchor(E edge, P oldTargetPin, P targetPin)
Usually it is implemented as:
Widget targetPinWidget = findWidget (targetPin); Anchor targetAnchor = AnchorFactory.createRectangularAnchor (targetPinWidget) ConnectionWidget edgeWidget = (ConnectionWidget) findWidget (edge); edgeWidget.setTargetAnchor (targetAnchor);
edge
- the edge which target is changed in graph modeloldTargetPin
- the old target pintargetPin
- the new target pin