Package org.jgraph.plaf.basic
Class BasicGraphUI
java.lang.Object
javax.swing.plaf.ComponentUI
org.jgraph.plaf.GraphUI
org.jgraph.plaf.basic.BasicGraphUI
- All Implemented Interfaces:
Serializable
The basic Linvalid input: '&F' for a graph data structure.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclass
Listener responsible for getting cell editing events and updating the graph accordingly.class
Updates the preferred size when scrolling (if necessary).class
Graph Drop Target Listenerclass
GraphIncrementAction is used to handle up/down actions.class
Listens for changes in the graph view and updates the size accordingly.class
Listens for changes in the graph model and updates the view accordingly.class
Listens for changes in the selection model and updates the display accordingly.class
This is used to get mutliple key down events to appropriately generate events.class
TreeMouseListener is responsible for updating the selection based on mouse events.class
MouseInputHandler handles passing all mouse events, including mouse motion events, until the mouse is released to the destination it is constructed with.class
PropertyChangeListener for the graph.class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected GraphCellEditor
Current editor for the graph.protected CellEditorListener
Listens for CellEditor events.protected ComponentListener
Listens for Component events.protected BasicGraphUI.GraphDropTargetListener
The default DropTargetListener.protected TransferHandler
The default TransferHandler.static final boolean
Controls live-preview in dragEnabled mode.protected int
Needed to exchange information between DropTargetHandler and TransferHandler.protected DropTarget
The drop target where the default listener was last installed.protected Object
Path that is being edited.protected Component
When editing, this will be the Component that is doing the actual editing.protected boolean
Set to true if the editor has a different size than the renderer.protected CellView
The focused cell under the mousepointer and the last focused cell.protected JGraph
Component that we're going to be drawing into.protected GraphLayoutCache
Reference to the graph's view (geometric pattern).protected GraphLayoutCacheListener
Updates the display when the view has changed.protected GraphModel
Used to determine what to display.protected GraphModelListener
Is responsible for updating the view based on model events.protected GraphSelectionListener
Updates the display when the selection changes.protected GraphSelectionModel
Model maintaining the selection.protected CellHandle
Handle that we are going to use.protected Point
Needed to exchange information between Transfer- and MouseListener.protected KeyListener
Listens for KeyListener events.protected CellView
The focused cell under the mousepointer and the last focused cell.protected BasicMarqueeHandler
Marquee that we are going to use.static int
The maximum number of cells to paint when dragging.static int
Maximum number of cells to compute clipping bounds for.static int
The maximum number of handles to paint individually.protected MouseListener
Listens for Mouse events.protected Dimension
Minimum preferred size.protected Dimension
Size needed to completely display all the cells.protected PropertyChangeListener
Listens for JGraph property changes and updates display.protected CellRendererPane
Used to paint the CellRenderer.static int
Border in pixels to scroll if marquee or dragging are active.static float
Multiplicator for width and height when autoscrolling (=stepsize).protected boolean
If ture, a the view under mousepointer will be snapped to the grid lines during a drag operation.protected boolean
Set to false when editing and shouldSelectCell() returns true meaning the node should be selected before editing, used in completeEditing.protected boolean
Is the preferredSize valid? -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void
autoscroll
(JGraph graph, Point p) Scroll the graph for an event atp
.void
cancelEditing
(JGraph graph) Cancels all current editing sessions.protected void
Messages to stop the editing session.protected void
completeEditing
(boolean messageStop, boolean messageCancel, boolean messageGraph) Stops the editing session.protected void
Invoked from installUI after all the defaults/listeners have been installed.protected void
protected CellEditorListener
Creates a listener to handle events from the current editor.protected CellRendererPane
Returns the renderer pane that renderer components are placed in.protected ComponentListener
Creates and returns a new ComponentHandler.protected GraphContext
createContext
(JGraph graph, Object[] cells) protected GraphLayoutCacheListener
Returns a listener that can update the graph when the view changes.protected GraphModelListener
Returns a listener that can update the graph when the model changes.protected GraphSelectionListener
Creates the listener that updates the display based on selection change methods.createHandle
(GraphContext context) Constructs the "root handle" forcontext
.protected KeyListener
Creates the listener reponsible for getting key events from the graph.protected MouseListener
Creates the listener responsible for calling the correct handlers based on mouse events, and to select invidual cells.protected PropertyChangeListener
Creates a listener that is responsible to update the UI based on how the graph's bounds properties change.protected TransferHandler
Creates an instance of TransferHandler.static ComponentUI
void
drawGraph
(Graphics g, Rectangle2D clipBounds) Draws the graph to the specified graphics object within the specified clip bounds, if anyint
Returns the current drop action.getEditingCell
(JGraph graph) Returns the element that is being edited.protected Point2D
getEditorLocation
(Object cell, Dimension2D editorSize, Point2D pt) Subclassers may override this to provide a better location for the in-place editing of edges (if you do not inherit from the EdgeRenderer class).protected Object
Returns the cell that has the focus.Returns the handle that is currently active, or null, if no handle is currently active.Returns the current location of the Drag-and-Drop activity.Returns the maximum size for this component, which will be the preferred size if the instance is currently in a JGraph, or 0, 0.Returns the minimum size for this component.Returns the minimum preferred size.Returns the preferred size to properly display the graph.getPreferredSize
(JGraph graph, CellView view) Get the preferred Size for a cell view.protected void
Intalls the subcomponents of the graph, which is the renderer pane.protected void
Invoked as part from the boilerplate install block.protected void
Invoked as part from the boilerplate install block.protected void
Invoked as part from the boilerplate install block.void
boolean
Returning true signifies that cells are added to the selection.boolean
isConstrainedMoveEvent
(MouseEvent event) Returning true signifies a move should only be applied to one direction.boolean
Returns true if the graph is being edited.boolean
isForceMarqueeEvent
(MouseEvent event) Returning true signifies the marquee handler has precedence over other handlers, and is receiving subsequent mouse events.boolean
boolean
Returning true signifies a mouse event on the cell should toggle the selection of only the cell under mouse.void
paint
(Graphics g, JComponent c) Main painting routine.protected void
Paint the background of this graph.protected void
paintBackgroundComponent
(Graphics g, Component component) Requests that the component responsible for painting the background paint itselfprotected void
paintBackgroundComponent
(Graphics g, Component component, Rectangle clip) Requests that the component responsible for painting the background paint itselfprotected void
paintBackgroundImage
(Graphics g, Rectangle clip) Hook for subclassers to paint the background image.void
paintCell
(Graphics g, CellView view, Rectangle2D bounds, boolean preview) Paints the renderer ofview
tog
atbounds
.protected void
paintCells
(Graphics g, Rectangle2D realClipBounds) Hook method to allow subclassers to alter just the cell painting functionalityprotected void
Paint the foreground of this graph.protected void
paintGrid
(double gs, Graphics g, Rectangle2D clipBounds) Paint the grid.protected void
Hook method to paints the overlayvoid
paintPorts
(Graphics g, CellView[] ports) Paintports
.protected void
Invoked after thegraph
instance variable has been set, but before any defaults/listeners have been installed.void
selectCellForEvent
(Object cell, MouseEvent event) Messaged to update the selection based on a MouseEvent over a particular cell.void
selectCellsForEvent
(Object[] cells, MouseEvent event) Messaged to update the selection based on a MouseEvent for a group of cells.void
selectCellsForEvent
(JGraph graph, Object[] cells, MouseEvent event) From GraphUI interface.protected void
Sets the GraphLayoutCache (geometric pattern).void
Sets the current location for Drag-and-Drop activity.protected void
setMarquee
(BasicMarqueeHandler marqueeHandler) Sets the marquee handler.protected void
setModel
(GraphModel model) Sets the GraphModel.void
setPreferredMinSize
(Dimension newSize) Sets the preferred minimum size.protected void
setSelectionModel
(GraphSelectionModel newLSM) Resets the selection model.void
setSnapSelectedView
(boolean snapSelectedView) Sets the mode of the snapSelectedView drag operation.protected boolean
startEditing
(Object cell, MouseEvent event) Will start editing for cell if there is a cellEditor and shouldSelectCell returns true.void
startEditingAtCell
(JGraph graph, Object cell) Selects the cell and tries to edit it.boolean
stopEditing
(JGraph graph) Stops the current editing session.protected void
toggleSelectionCellForEvent
(Object cell, MouseEvent event) Messaged to update the selection based on a toggle selection event, which means the cell's selection state is inverted.protected void
Uninstalls the renderer pane.protected void
protected void
void
protected void
Updates thepreferredSize
instance variable, which is returned fromgetPreferredSize()
.void
Update the handle using createHandle.void
Messages the Graph withgraphDidChange
.Methods inherited from class javax.swing.plaf.ComponentUI
contains, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior, update
-
Field Details
-
DNDPREVIEW
public static final boolean DNDPREVIEWControls live-preview in dragEnabled mode. This is used to disable live-preview in dragEnabled mode on Java 1.4.0 to workaround a bug that cause the VM to hang during concurrent DnD and repaints. Is this still required? -
SCROLLBORDER
public static int SCROLLBORDERBorder in pixels to scroll if marquee or dragging are active. -
SCROLLSTEP
public static float SCROLLSTEPMultiplicator for width and height when autoscrolling (=stepsize). -
MAXCELLS
public static int MAXCELLSThe maximum number of cells to paint when dragging. -
MAXHANDLES
public static int MAXHANDLESThe maximum number of handles to paint individually. -
MAXCLIPCELLS
public static int MAXCLIPCELLSMaximum number of cells to compute clipping bounds for. -
preferredMinSize
Minimum preferred size. -
graph
Component that we're going to be drawing into. -
graphLayoutCache
Reference to the graph's view (geometric pattern). -
cellEditor
Current editor for the graph. -
stopEditingInCompleteEditing
protected boolean stopEditingInCompleteEditingSet to false when editing and shouldSelectCell() returns true meaning the node should be selected before editing, used in completeEditing. -
rendererPane
Used to paint the CellRenderer. -
preferredSize
Size needed to completely display all the cells. -
validCachedPreferredSize
protected boolean validCachedPreferredSizeIs the preferredSize valid? -
graphModel
Used to determine what to display. -
graphSelectionModel
Model maintaining the selection. -
handle
Handle that we are going to use. -
marquee
Marquee that we are going to use. -
editingComponent
When editing, this will be the Component that is doing the actual editing. -
focus
The focused cell under the mousepointer and the last focused cell. -
lastFocus
The focused cell under the mousepointer and the last focused cell. -
editingCell
Path that is being edited. -
editorHasDifferentSize
protected boolean editorHasDifferentSizeSet to true if the editor has a different size than the renderer. -
insertionLocation
Needed to exchange information between Transfer- and MouseListener. -
dropAction
protected int dropActionNeeded to exchange information between DropTargetHandler and TransferHandler. -
snapSelectedView
protected boolean snapSelectedViewIf ture, a the view under mousepointer will be snapped to the grid lines during a drag operation. If snap-to-grid mode is disabled, views are moved by a snap increment. -
propertyChangeListener
Listens for JGraph property changes and updates display. -
mouseListener
Listens for Mouse events. -
keyListener
Listens for KeyListener events. -
componentListener
Listens for Component events. -
cellEditorListener
Listens for CellEditor events. -
graphSelectionListener
Updates the display when the selection changes. -
graphModelListener
Is responsible for updating the view based on model events. -
graphLayoutCacheListener
Updates the display when the view has changed. -
defaultTransferHandler
The default TransferHandler. -
defaultDropTargetListener
The default DropTargetListener. -
dropTarget
The drop target where the default listener was last installed.
-
-
Constructor Details
-
BasicGraphUI
public BasicGraphUI()
-
-
Method Details
-
createUI
-
setModel
Sets the GraphModel. This invokesupdateSize
. -
setGraphLayoutCache
Sets the GraphLayoutCache (geometric pattern). This invokesupdateSize
. -
setMarquee
Sets the marquee handler. -
setSelectionModel
Resets the selection model. The appropriate listeners are installed on the model. -
getHandle
Returns the handle that is currently active, or null, if no handle is currently active. Typically, the returned objects are instances of the RootHandle inner class. -
getDropAction
public int getDropAction()Returns the current drop action.- Specified by:
getDropAction
in classGraphUI
-
getFocusedCell
Returns the cell that has the focus. -
getPreferredSize
Get the preferred Size for a cell view.- Specified by:
getPreferredSize
in classGraphUI
-
getInsertionLocation
Returns the current location of the Drag-and-Drop activity.- Specified by:
getInsertionLocation
in classGraphUI
-
setInsertionLocation
Sets the current location for Drag-and-Drop activity. Should be set to null after a drop. Used from within DropTargetListener.- Specified by:
setInsertionLocation
in classGraphUI
-
selectCellsForEvent
From GraphUI interface.- Specified by:
selectCellsForEvent
in classGraphUI
-
selectCellsForEvent
Messaged to update the selection based on a MouseEvent for a group of cells. If the event is a toggle selection event, the cells are either selected, or deselected. Otherwise the cells are selected. -
selectCellForEvent
Messaged to update the selection based on a MouseEvent over a particular cell. If the event is a toggle selection event, the cell is either selected, or deselected. Otherwise the cell is selected. -
toggleSelectionCellForEvent
Messaged to update the selection based on a toggle selection event, which means the cell's selection state is inverted. -
isAddToSelectionEvent
Returning true signifies that cells are added to the selection. -
isToggleSelectionEvent
Returning true signifies a mouse event on the cell should toggle the selection of only the cell under mouse. -
isForceMarqueeEvent
Returning true signifies the marquee handler has precedence over other handlers, and is receiving subsequent mouse events. -
isConstrainedMoveEvent
Returning true signifies a move should only be applied to one direction. -
isEditing
Returns true if the graph is being edited. The item that is being edited can be returned by getEditingPath(). -
stopEditing
Stops the current editing session. This has no effect if the graph isn't being edited. Returns true if the editor allows the editing session to stop.- Specified by:
stopEditing
in classGraphUI
-
cancelEditing
Cancels all current editing sessions.- Specified by:
cancelEditing
in classGraphUI
-
startEditingAtCell
Selects the cell and tries to edit it. Editing will fail if the CellEditor won't allow it for the selected item.- Specified by:
startEditingAtCell
in classGraphUI
-
getEditingCell
Returns the element that is being edited.- Specified by:
getEditingCell
in classGraphUI
-
installUI
- Overrides:
installUI
in classComponentUI
-
prepareForUIInstall
protected void prepareForUIInstall()Invoked after thegraph
instance variable has been set, but before any defaults/listeners have been installed. -
completeUIInstall
protected void completeUIInstall()Invoked from installUI after all the defaults/listeners have been installed. -
installDefaults
protected void installDefaults()Invoked as part from the boilerplate install block. This sets the look and feel specific variables in JGraph. -
installListeners
protected void installListeners()Invoked as part from the boilerplate install block. This installs the listeners from BasicGraphUI in the graph. -
installKeyboardActions
protected void installKeyboardActions()Invoked as part from the boilerplate install block. -
installComponents
protected void installComponents()Intalls the subcomponents of the graph, which is the renderer pane. -
createTransferHandler
Creates an instance of TransferHandler. Used for subclassers to provide different TransferHandler. -
createPropertyChangeListener
Creates a listener that is responsible to update the UI based on how the graph's bounds properties change. -
createMouseListener
Creates the listener responsible for calling the correct handlers based on mouse events, and to select invidual cells. -
createKeyListener
Creates the listener reponsible for getting key events from the graph. -
createGraphSelectionListener
Creates the listener that updates the display based on selection change methods. -
createCellEditorListener
Creates a listener to handle events from the current editor. -
createComponentListener
Creates and returns a new ComponentHandler. -
createCellRendererPane
Returns the renderer pane that renderer components are placed in. -
createGraphLayoutCacheListener
Returns a listener that can update the graph when the view changes. -
createGraphModelListener
Returns a listener that can update the graph when the model changes. -
uninstallUI
- Overrides:
uninstallUI
in classComponentUI
-
completeUIUninstall
protected void completeUIUninstall() -
uninstallListeners
protected void uninstallListeners() -
uninstallKeyboardActions
protected void uninstallKeyboardActions() -
uninstallComponents
protected void uninstallComponents()Uninstalls the renderer pane. -
paint
Main painting routine.- Overrides:
paint
in classComponentUI
-
paintOverlay
Hook method to paints the overlay- Parameters:
g
- the graphics object to paint the overlay to
-
drawGraph
Draws the graph to the specified graphics object within the specified clip bounds, if any- Parameters:
g
- the graphics object to draw the graph toclipBounds
- the bounds within graph cells must intersect to be redrawn
-
paintCells
Hook method to allow subclassers to alter just the cell painting functionality- Parameters:
g
- the graphics object to paint torealClipBounds
- the bounds of the region being repainted
-
paintCell
Paints the renderer ofview
tog
atbounds
. Recursive implementation that paints the children first.The reciever should NOT modify
clipBounds
, orinsets
. Thepreview
flag is passed to the renderer, and is not used here. -
paintBackground
Paint the background of this graph. Calls paintGrid. -
paintBackgroundImage
Hook for subclassers to paint the background image.- Parameters:
g
- The graphics object to paint the image on.clip
- The clipping region to draw into
-
paintBackgroundComponent
Requests that the component responsible for painting the background paint itself- Parameters:
g
- The graphics object to paint the image on.component
- the component to be painted onto the background image
-
paintBackgroundComponent
Requests that the component responsible for painting the background paint itself- Parameters:
g
- The graphics object to paint the image on.component
- the component to be painted onto the background imageclip
- The clipping region to draw into
-
paintGrid
Paint the grid. -
paintForeground
Paint the foreground of this graph. Calls paintPorts. -
paintPorts
Paintports
.- Specified by:
paintPorts
in classGraphUI
-
updateHandle
public void updateHandle()Update the handle using createHandle.- Specified by:
updateHandle
in classGraphUI
-
createContext
-
createHandle
Constructs the "root handle" forcontext
.- Parameters:
context
- reference to the context of the current selection.
-
updateSize
public void updateSize()Messages the Graph withgraphDidChange
. -
updateCachedPreferredSize
protected void updateCachedPreferredSize()Updates thepreferredSize
instance variable, which is returned fromgetPreferredSize()
. -
setPreferredMinSize
Sets the preferred minimum size. -
getPreferredMinSize
Returns the minimum preferred size. -
getPreferredSize
Returns the preferred size to properly display the graph.- Overrides:
getPreferredSize
in classComponentUI
-
getMinimumSize
Returns the minimum size for this component. Which will be the min preferred size or 0, 0.- Overrides:
getMinimumSize
in classComponentUI
-
getMaximumSize
Returns the maximum size for this component, which will be the preferred size if the instance is currently in a JGraph, or 0, 0.- Overrides:
getMaximumSize
in classComponentUI
-
completeEditing
protected void completeEditing()Messages to stop the editing session. If the UI the receiver is providing the look and feel for returns true fromgetInvokesStopCellEditing
, stopCellEditing will invoked on the current editor. Then completeEditing will be messaged with false, true, false to cancel any lingering editing. -
completeEditing
protected void completeEditing(boolean messageStop, boolean messageCancel, boolean messageGraph) Stops the editing session. If messageStop is true the editor is messaged with stopEditing, if messageCancel is true the editor is messaged with cancelEditing. If messageGraph is true the graphModel is messaged with valueForCellChanged. -
startEditing
Will start editing for cell if there is a cellEditor and shouldSelectCell returns true.This assumes that cell is valid and visible.
-
getEditorLocation
Subclassers may override this to provide a better location for the in-place editing of edges (if you do not inherit from the EdgeRenderer class). -
autoscroll
Scroll the graph for an event atp
. -
isSnapSelectedView
public boolean isSnapSelectedView()- Returns:
- true if snapSelectedView mode is enabled during the drag
operation. If it is enabled, the view, that is returned by the
findViewForPoint(Point pt), will be snapped to the grid lines.
By default, findViewForPoint() returns the first view from the GraphContext whose bounds intersect with snap proximity of a mouse pointer. If snap-to-grid mode is disabled, views are moved by a snap increment.
-
setSnapSelectedView
public void setSnapSelectedView(boolean snapSelectedView) Sets the mode of the snapSelectedView drag operation.- Parameters:
snapSelectedView
- specifies if the snap-to-grid mode should be applied during a drag operation. If it is enabled, the view, that is returned by the findViewForPoint(Point pt), will be snapped to the grid lines.
By default, findViewForPoint() returns the first view from the GraphContext whose bounds intersect with snap proximity of a mouse pointer. If snap-to-grid mode is disabled, views are moved by a snap increment.
-