Class GraphScene<N,E>
- All Implemented Interfaces:
Accessible
,org.openide.util.Lookup.Provider
- Direct Known Subclasses:
GraphScene.StringGraph
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.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
This class is a particular GraphScene where nodes and edges are represented with String class.Nested classes/interfaces inherited from class org.netbeans.api.visual.widget.Scene
Scene.SceneListener
Nested classes/interfaces inherited from class org.netbeans.api.visual.widget.Widget
Widget.Dependency
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal Widget
Adds an edge.final Widget
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.final Collection
<E> findEdgesBetween
(N sourceNode, N targetNode) Returns a collection of edges that are between a specified source and target nodes.final Collection
<E> findNodeEdges
(N node, boolean allowOutputEdges, boolean allowInputEdges) Returns a collection of edges that are attached to a specified node.final Collection
<E> getEdges()
Returns a collection of all edges registered in the graph model.final N
getEdgeSource
(E edge) Returns an edge source.final N
getEdgeTarget
(E edge) Returns an edge target.final Collection
<N> getNodes()
Returns a collection of all nodes registered in the graph model.boolean
Checks whether an object is registered as a edge in the graph model.boolean
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.final void
removeEdge
(E edge) Removes an edge and detaches it from its source and target nodes.final void
removeNode
(N node) Removes a node.final void
removeNodeWithEdges
(N node) Removes a specified node with all edges that are attached to the node.final void
setEdgeSource
(E edge, N sourceNode) Sets an edge source.final void
setEdgeTarget
(E edge, N targetNode) Sets an edge target.Methods inherited from class org.netbeans.api.visual.model.ObjectScene
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
Methods inherited from class org.netbeans.api.visual.widget.Scene
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
Methods inherited from class org.netbeans.api.visual.widget.Widget
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
-
Constructor Details
-
GraphScene
public GraphScene()Creates a graph scene.
-
-
Method Details
-
addNode
Adds a node.- Parameters:
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 Widget- Returns:
- the widget that is created by attachNodeWidget; null if the node is non-visual
-
removeNode
Removes a node.- Parameters:
node
- the node to be removed; the node must not be null and must be already in the model
-
removeNodeWithEdges
Removes a specified node with all edges that are attached to the node.- Parameters:
node
- the node to be removed
-
getNodes
Returns a collection of all nodes registered in the graph model.- Returns:
- the collection of all nodes registered in the graph model
-
addEdge
Adds an edge.- Parameters:
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 Widget- Returns:
- the widget that is created by attachEdgeWidget; null if the edge is non-visual
-
removeEdge
Removes an edge and detaches it from its source and target nodes.- Parameters:
edge
- the edge to be removed; the edge must not be null and must be already in the model
-
getEdges
Returns a collection of all edges registered in the graph model.- Returns:
- the collection of all edges registered in the graph model
-
setEdgeSource
-
setEdgeTarget
-
getEdgeSource
-
getEdgeTarget
-
findNodeEdges
Returns a collection of edges that are attached to a specified node.- Parameters:
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 included- Returns:
- the collection of edges
-
findEdgesBetween
Returns a collection of edges that are between a specified source and target nodes.- Parameters:
sourceNode
- the source nodetargetNode
- the target node- Returns:
- the collection of edges with the specified source and target nodes
-
isNode
Checks whether an object is registered as a node in the graph model.- Parameters:
object
- the object; must not be a Widget- Returns:
- true, if the object is registered as a node
-
isEdge
Checks whether an object is registered as a edge in the graph model.- Parameters:
object
- the object; must not be a Widget- Returns:
- true, if the object is registered as a edge
-
notifyNodeAdded
-
notifyEdgeAdded
-
detachNodeWidget
Called by the removeNode method to notify that a node is removed from the graph model. The default implementation removes the node widget from its parent widget.- Parameters:
node
- the removed nodewidget
- the removed node widget; null if the node is non-visual
-
detachEdgeWidget
Called by the removeEdge method to notify that an edge is removed from the graph model. The default implementation removes the edge widget from its parent widget.- Parameters:
edge
- the removed edgewidget
- the removed edge widget; null if the edge is non-visual
-
attachNodeWidget
Called by the addNode method before the node is registered to acquire a widget that is going to represent the node in the scene. The method is responsible for creating the widget, adding it into the scene and returning it from the method.- Parameters:
node
- the node that is going to be added- Returns:
- the widget representing the node; null, if the node is non-visual
-
attachEdgeWidget
Called by the addEdge method before the edge is registered to acquire a widget that is going to represent the edge in the scene. The method is responsible for creating the widget, adding it into the scene and returning it from the method.- Parameters:
edge
- the edge that is going to be added- Returns:
- the widget representing the edge; null, if the edge is non-visual
-
attachEdgeSourceAnchor
Called by the setEdgeSource method to notify about the changing the edge source in the graph model. The method is responsible for attaching a new source node to the edge in the visual representation.Usually it is implemented as:
Widget sourceNodeWidget = findWidget (sourceNode); Anchor sourceAnchor = AnchorFactory.createRectangularAnchor (sourceNodeWidget) ConnectionWidget edgeWidget = (ConnectionWidget) findWidget (edge); edgeWidget.setSourceAnchor (sourceAnchor);
- Parameters:
edge
- the edge which source is changed in graph modeloldSourceNode
- the old source nodesourceNode
- the new source node
-
attachEdgeTargetAnchor
Called by the setEdgeTarget method to notify about the changing the edge target in the graph model. The method is responsible for attaching a new target node to the edge in the visual representation.Usually it is implemented as:
Widget targetNodeWidget = findWidget (targetNode); Anchor targetAnchor = AnchorFactory.createRectangularAnchor (targetNodeWidget) ConnectionWidget edgeWidget = (ConnectionWidget) findWidget (edge); edgeWidget.setTargetAnchor (targetAnchor);
- Parameters:
edge
- the edge which target is changed in graph modeloldTargetNode
- the old target nodetargetNode
- the new target node
-