Package diva.graph
Class AbstractGraphController
- java.lang.Object
-
- diva.graph.AbstractGraphController
-
- All Implemented Interfaces:
GraphController
- Direct Known Subclasses:
BasicGraphController,SimpleGraphController
public abstract class AbstractGraphController extends java.lang.Object implements GraphController
An abstract implementation of the GraphController interface. Concrete subclasses must implement the getNodeController() and getEdgeController() methods, to return the correct controller for a given node or edge.- Version:
- $Id$
- Author:
- John Reekie, Michael Shilman, Steve Neuendorffer
- Pt.AcceptedRating:
- Red
-
-
Constructor Summary
Constructors Constructor Description AbstractGraphController()Construct a graph controller without a parent pane.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddEdge(java.lang.Object edge, java.lang.Object node, int end, double x, double y)Add an edge to this graph editor and render it from the given tail node to an autonomous site at the given location.voidaddEdge(java.lang.Object edge, java.lang.Object tail, java.lang.Object head)Add an edge to this graph between the given tail and head nodes.voidaddGraphViewListener(GraphViewListener l)voidaddNode(java.lang.Object node)Add the node to this graph editor and place it wherever convenient.voidaddNode(java.lang.Object node, double x, double y)Add the node to this graph editor and render it at the given location.voidaddNode(java.lang.Object node, java.lang.Object parent)Add the node to this graph editor, inside the given parent node at whatever position is convenientvoidaddNode(java.lang.Object node, java.lang.Object parent, double x, double y)Add the node to this graph editor, inside the given parent node and render it at the given location relative to its parent.voidclear()Remove all figures from the displayvoidclearEdge(java.lang.Object edge)Remove the figure for the given edge.voidclearNode(java.lang.Object node)Remove the figure for the given node.voiddispatch(GraphViewEvent e)Dispatch the given graph view event to all registered graph view listeners.FiguredrawEdge(java.lang.Object edge)Draw the given edge: create a figure, place it in the canvas, and associate the figure with the edge.FiguredrawNode(java.lang.Object node)Draw the given node: create a figure, place it in the canvas, and associate the figure with the node.FiguredrawNode(java.lang.Object node, java.lang.Object parent)Draw the given node: create a figure, place it in the figure of the given parent node, and associate the figure with the node.abstract EdgeControllergetEdgeController(java.lang.Object edge)Given an edge, return the controller associated with that edge.FiguregetFigure(java.lang.Object semanticObj)Return the figure associated with the given semantic object (node or edge), or null if there is no association.GraphModelgetGraphModel()Return the graph being viewed.GraphPanegetGraphPane()Return the graphics pane of this controller cast as a GraphPane.abstract NodeControllergetNodeController(java.lang.Object node)Given an node, return the controller associated with that node.SelectionModelgetSelectionModel()Get the default selection modelprotected abstract voidinitializeInteraction()Initialize all interaction on the graph pane.voidremoveEdge(java.lang.Object edge)Remove the given edge.voidremoveGraphViewListener(GraphViewListener l)Remove the given view listener.voidremoveNode(java.lang.Object node)Remove the given node.voidrerender()Render the current graph again by recreating the figures for all nodes and edges, but do not alter the connectivity in the graph.voidrerenderEdge(java.lang.Object edge)Rerender the given edge by replacing its figure with a new figure.voidrerenderNode(java.lang.Object node)Rerender the given node by replacing its figure with a new figure.voidsetFigure(java.lang.Object semanticObj, Figure f)Set the figure associated with the given semantic object (node or edge).voidsetGraphModel(GraphModel model)Set the graph being viewed.voidsetGraphPane(GraphPane pane)Set the graph pane.voidsetSelectionModel(SelectionModel m)Set the default selection model.
-
-
-
Method Detail
-
addEdge
public void addEdge(java.lang.Object edge, java.lang.Object node, int end, double x, double y)Add an edge to this graph editor and render it from the given tail node to an autonomous site at the given location. Give the new edge the given semanticObject. The "end" flag is either HEAD_END or TAIL_END, from diva.canvas.connector.ConnectorEvent.- Specified by:
addEdgein interfaceGraphController- Throws:
GraphException- If the connector target cannot return a valid site on the node's figure.
-
addEdge
public void addEdge(java.lang.Object edge, java.lang.Object tail, java.lang.Object head)Add an edge to this graph between the given tail and head nodes. Give the new edge the given semanticObject.- Specified by:
addEdgein interfaceGraphController
-
addGraphViewListener
public void addGraphViewListener(GraphViewListener l)
- Specified by:
addGraphViewListenerin interfaceGraphController
-
addNode
public void addNode(java.lang.Object node)
Add the node to this graph editor and place it wherever convenient.- Specified by:
addNodein interfaceGraphController
-
addNode
public void addNode(java.lang.Object node, double x, double y)Add the node to this graph editor and render it at the given location.- Specified by:
addNodein interfaceGraphController
-
addNode
public void addNode(java.lang.Object node, java.lang.Object parent)Add the node to this graph editor, inside the given parent node at whatever position is convenient- Specified by:
addNodein interfaceGraphController
-
addNode
public void addNode(java.lang.Object node, java.lang.Object parent, double x, double y)Add the node to this graph editor, inside the given parent node and render it at the given location relative to its parent.- Specified by:
addNodein interfaceGraphController
-
clear
public void clear()
Remove all figures from the display- Specified by:
clearin interfaceGraphController
-
clearEdge
public void clearEdge(java.lang.Object edge)
Remove the figure for the given edge.- Specified by:
clearEdgein interfaceGraphController
-
clearNode
public void clearNode(java.lang.Object node)
Remove the figure for the given node.- Specified by:
clearNodein interfaceGraphController
-
drawEdge
public Figure drawEdge(java.lang.Object edge)
Draw the given edge: create a figure, place it in the canvas, and associate the figure with the edge. This should only be called when the object is in the model but does not yet have a figure associated with it.- Specified by:
drawEdgein interfaceGraphController
-
drawNode
public Figure drawNode(java.lang.Object node)
Draw the given node: create a figure, place it in the canvas, and associate the figure with the node. This should only be called when the object is in the model but does not yet have a figure associated with it. The location of the figure should be set if some location is appropriate for it.- Specified by:
drawNodein interfaceGraphController
-
drawNode
public Figure drawNode(java.lang.Object node, java.lang.Object parent)
Draw the given node: create a figure, place it in the figure of the given parent node, and associate the figure with the node. This should only be called when the object is in the model but does not yet have a figure associated with it. The location of the figure should be set if some location is appropriate for it.- Specified by:
drawNodein interfaceGraphController
-
getEdgeController
public abstract EdgeController getEdgeController(java.lang.Object edge)
Given an edge, return the controller associated with that edge.- Specified by:
getEdgeControllerin interfaceGraphController
-
getNodeController
public abstract NodeController getNodeController(java.lang.Object node)
Given an node, return the controller associated with that node.- Specified by:
getNodeControllerin interfaceGraphController
-
getGraphModel
public GraphModel getGraphModel()
Return the graph being viewed.- Specified by:
getGraphModelin interfaceGraphController
-
getGraphPane
public GraphPane getGraphPane()
Return the graphics pane of this controller cast as a GraphPane.- Specified by:
getGraphPanein interfaceGraphController
-
getFigure
public Figure getFigure(java.lang.Object semanticObj)
Return the figure associated with the given semantic object (node or edge), or null if there is no association.- Specified by:
getFigurein interfaceGraphController
-
getSelectionModel
public SelectionModel getSelectionModel()
Get the default selection model- Specified by:
getSelectionModelin interfaceGraphController
-
removeEdge
public void removeEdge(java.lang.Object edge)
Remove the given edge. Find the edge controller associated with that edge and delegate to that edge controller.- Specified by:
removeEdgein interfaceGraphController
-
removeGraphViewListener
public void removeGraphViewListener(GraphViewListener l)
Remove the given view listener.- Specified by:
removeGraphViewListenerin interfaceGraphController
-
removeNode
public void removeNode(java.lang.Object node)
Remove the given node. Find the node controller associated with that node and delegate to that node controller.- Specified by:
removeNodein interfaceGraphController
-
rerender
public void rerender()
Render the current graph again by recreating the figures for all nodes and edges, but do not alter the connectivity in the graph. This should be called when changes to renderers are made.- Specified by:
rerenderin interfaceGraphController
-
rerenderEdge
public void rerenderEdge(java.lang.Object edge)
Rerender the given edge by replacing its figure with a new figure. This should be called if the state of the edge has changed in such a way that the rendering should change.- Specified by:
rerenderEdgein interfaceGraphController
-
rerenderNode
public void rerenderNode(java.lang.Object node)
Rerender the given node by replacing its figure with a new figure. This should be called if the state of the node has changed in such a way that the rendering should change.- Specified by:
rerenderNodein interfaceGraphController
-
setGraphModel
public void setGraphModel(GraphModel model)
Set the graph being viewed. If there is a graph already and it contains data, delete the figures of that graph's nodes and edges (but don't modify the graph itself).- Specified by:
setGraphModelin interfaceGraphController
-
setFigure
public void setFigure(java.lang.Object semanticObj, Figure f)Set the figure associated with the given semantic object (node or edge). A null figure clears the association.- Specified by:
setFigurein interfaceGraphController
-
setGraphPane
public void setGraphPane(GraphPane pane)
Set the graph pane. This is called by the GraphPane. FIXME: should this be package private?- Specified by:
setGraphPanein interfaceGraphController
-
setSelectionModel
public void setSelectionModel(SelectionModel m)
Set the default selection model. The caller is expected to ensure that the old model is empty before calling this.- Specified by:
setSelectionModelin interfaceGraphController
-
dispatch
public void dispatch(GraphViewEvent e)
Dispatch the given graph view event to all registered graph view listeners. This method is generally only called by subclasses and representatives of those subclasses, such as a node controller or an edge controller.- Specified by:
dispatchin interfaceGraphController
-
initializeInteraction
protected abstract void initializeInteraction()
Initialize all interaction on the graph pane. This method is called by the setGraphPane() method, and must be overridden by subclasses. This initialization cannot be done in the constructor because the controller does not yet have a reference to its pane at that time.
-
-