Package edu.uci.ics.jung.visualization
Class BasicVisualizationServer<V,E>
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- edu.uci.ics.jung.visualization.BasicVisualizationServer<V,E>
-
- All Implemented Interfaces:
ChangeEventSupport
,VisualizationServer<V,E>
,java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,java.util.EventListener
,javax.accessibility.Accessible
,javax.swing.event.ChangeListener
- Direct Known Subclasses:
VisualizationImageServer
,VisualizationViewer
public class BasicVisualizationServer<V,E> extends javax.swing.JPanel implements javax.swing.event.ChangeListener, ChangeEventSupport, VisualizationServer<V,E>
A class that maintains many of the details necessary for creating visualizations of graphs. This is the old VisualizationViewer without tooltips and mouse behaviors. Its purpose is to be a base class that can also be used on the server side of a multi-tiered application.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
BasicVisualizationServer.VisualizationListener
VisualizationListener reacts to changes in the size of the VisualizationViewer.-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
-
Nested classes/interfaces inherited from interface edu.uci.ics.jung.visualization.VisualizationServer
VisualizationServer.Paintable
-
-
Field Summary
Fields Modifier and Type Field Description protected ChangeEventSupport
changeSupport
protected boolean
doubleBuffered
user-settable choice to use the offscreen image or not.protected VisualizationModel<V,E>
model
holds the state of this Viewprotected java.awt.image.BufferedImage
offscreen
an offscreen image to render the graph Used if doubleBuffered is set to trueprotected java.awt.Graphics2D
offscreenG2d
graphics context for the offscreen image Used if doubleBuffered is set to trueprotected PickedState<E>
pickedEdgeState
holds the state of which edges of the graph are currently 'picked'protected PickedState<V>
pickedVertexState
holds the state of which vertices of the graph are currently 'picked'protected java.awt.event.ItemListener
pickEventListener
a listener used to cause pick events to result in repaints, even if they come from another viewprotected java.util.List<VisualizationServer.Paintable>
postRenderers
a collection of user-implementable functions to render over the topology (after the graph is rendered)protected java.util.List<VisualizationServer.Paintable>
preRenderers
a collection of user-implementable functions to render under the topology (before the graph is rendered)protected RenderContext<V,E>
renderContext
protected Renderer<V,E>
renderer
handles the actual drawing of graph elementsprotected java.util.Map<java.awt.RenderingHints.Key,java.lang.Object>
renderingHints
rendering hints used in drawing.-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description BasicVisualizationServer(edu.uci.ics.jung.algorithms.layout.Layout<V,E> layout)
Create an instance with passed parameters.BasicVisualizationServer(edu.uci.ics.jung.algorithms.layout.Layout<V,E> layout, java.awt.Dimension preferredSize)
Create an instance with passed parameters.BasicVisualizationServer(VisualizationModel<V,E> model)
Create an instance with passed parameters.BasicVisualizationServer(VisualizationModel<V,E> model, java.awt.Dimension preferredSize)
Create an instance with passed parameters.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addChangeListener(javax.swing.event.ChangeListener l)
Adds aChangeListener
.void
addPostRenderPaintable(VisualizationServer.Paintable paintable)
void
addPreRenderPaintable(VisualizationServer.Paintable paintable)
protected void
checkOffscreenImage(java.awt.Dimension d)
Ensure that, if doubleBuffering is enabled, the offscreen image buffer exists and is the correct size.void
fireStateChanged()
Notifies all listeners that have registered interest for notification on this event type.java.awt.geom.Point2D
getCenter()
javax.swing.event.ChangeListener[]
getChangeListeners()
Returns an array of all theChangeListener
s added with addChangeListener().edu.uci.ics.jung.algorithms.layout.Layout<V,E>
getGraphLayout()
Returns the current graph layout.VisualizationModel<V,E>
getModel()
PickedState<E>
getPickedEdgeState()
PickedState<V>
getPickedVertexState()
edu.uci.ics.jung.algorithms.layout.GraphElementAccessor<V,E>
getPickSupport()
RenderContext<V,E>
getRenderContext()
Renderer<V,E>
getRenderer()
Returns the renderer used by this instance.java.util.Map<java.awt.RenderingHints.Key,java.lang.Object>
getRenderingHints()
java.awt.Dimension
getSize()
Always sanity-check getSize so that we don't use a value that is improbableboolean
isDoubleBuffered()
whether this class uses double buffering.protected void
paintComponent(java.awt.Graphics g)
void
prependPostRenderPaintable(VisualizationServer.Paintable paintable)
void
prependPreRenderPaintable(VisualizationServer.Paintable paintable)
void
removeChangeListener(javax.swing.event.ChangeListener l)
Removes a ChangeListener.void
removePostRenderPaintable(VisualizationServer.Paintable paintable)
void
removePreRenderPaintable(VisualizationServer.Paintable paintable)
protected void
renderGraph(java.awt.Graphics2D g2d)
void
scaleToLayout(ScalingControl scaler)
void
setDoubleBuffered(boolean doubleBuffered)
set whether this class uses its offscreen image or not.void
setGraphLayout(edu.uci.ics.jung.algorithms.layout.Layout<V,E> layout)
Removes the current graph layout, and adds a new one.void
setModel(VisualizationModel<V,E> model)
void
setPickedEdgeState(PickedState<E> pickedEdgeState)
void
setPickedVertexState(PickedState<V> pickedVertexState)
void
setPickSupport(edu.uci.ics.jung.algorithms.layout.GraphElementAccessor<V,E> pickSupport)
void
setRenderContext(RenderContext<V,E> renderContext)
void
setRenderer(Renderer<V,E> r)
Sets the showing Renderer to be the input Renderer.void
setRenderingHints(java.util.Map<java.awt.RenderingHints.Key,java.lang.Object> renderingHints)
void
setVisible(boolean aFlag)
void
stateChanged(javax.swing.event.ChangeEvent e)
In response to changes from the model, repaint the view, then fire an event to any listeners.-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface edu.uci.ics.jung.visualization.VisualizationServer
repaint
-
-
-
-
Field Detail
-
changeSupport
protected ChangeEventSupport changeSupport
-
model
protected VisualizationModel<V,E> model
holds the state of this View
-
renderingHints
protected java.util.Map<java.awt.RenderingHints.Key,java.lang.Object> renderingHints
rendering hints used in drawing. Anti-aliasing is on by default
-
pickedVertexState
protected PickedState<V> pickedVertexState
holds the state of which vertices of the graph are currently 'picked'
-
pickedEdgeState
protected PickedState<E> pickedEdgeState
holds the state of which edges of the graph are currently 'picked'
-
pickEventListener
protected java.awt.event.ItemListener pickEventListener
a listener used to cause pick events to result in repaints, even if they come from another view
-
offscreen
protected java.awt.image.BufferedImage offscreen
an offscreen image to render the graph Used if doubleBuffered is set to true
-
offscreenG2d
protected java.awt.Graphics2D offscreenG2d
graphics context for the offscreen image Used if doubleBuffered is set to true
-
doubleBuffered
protected boolean doubleBuffered
user-settable choice to use the offscreen image or not. 'false' by default
-
preRenderers
protected java.util.List<VisualizationServer.Paintable> preRenderers
a collection of user-implementable functions to render under the topology (before the graph is rendered)
-
postRenderers
protected java.util.List<VisualizationServer.Paintable> postRenderers
a collection of user-implementable functions to render over the topology (after the graph is rendered)
-
renderContext
protected RenderContext<V,E> renderContext
-
-
Constructor Detail
-
BasicVisualizationServer
public BasicVisualizationServer(edu.uci.ics.jung.algorithms.layout.Layout<V,E> layout)
Create an instance with passed parameters.- Parameters:
layout
- The Layout to apply, with its associated Graphrenderer
- The Renderer to draw it with
-
BasicVisualizationServer
public BasicVisualizationServer(edu.uci.ics.jung.algorithms.layout.Layout<V,E> layout, java.awt.Dimension preferredSize)
Create an instance with passed parameters.- Parameters:
layout
- The Layout to apply, with its associated Graphrenderer
- The Renderer to draw it withpreferredSize
- the preferred size of this View
-
BasicVisualizationServer
public BasicVisualizationServer(VisualizationModel<V,E> model)
Create an instance with passed parameters.- Parameters:
model
-renderer
-
-
BasicVisualizationServer
public BasicVisualizationServer(VisualizationModel<V,E> model, java.awt.Dimension preferredSize)
Create an instance with passed parameters.- Parameters:
model
-renderer
-preferredSize
- initial preferred size of the view
-
-
Method Detail
-
setDoubleBuffered
public void setDoubleBuffered(boolean doubleBuffered)
Description copied from interface:VisualizationServer
set whether this class uses its offscreen image or not. If true, then doubleBuffering in the superclass is set to 'false'- Specified by:
setDoubleBuffered
in interfaceVisualizationServer<V,E>
- Overrides:
setDoubleBuffered
in classjavax.swing.JComponent
-
isDoubleBuffered
public boolean isDoubleBuffered()
Description copied from interface:VisualizationServer
whether this class uses double buffering. The superclass will be the opposite state.- Specified by:
isDoubleBuffered
in interfaceVisualizationServer<V,E>
- Overrides:
isDoubleBuffered
in classjavax.swing.JComponent
-
getSize
public java.awt.Dimension getSize()
Always sanity-check getSize so that we don't use a value that is improbable- Overrides:
getSize
in classjava.awt.Component
- See Also:
Component.getSize()
-
checkOffscreenImage
protected void checkOffscreenImage(java.awt.Dimension d)
Ensure that, if doubleBuffering is enabled, the offscreen image buffer exists and is the correct size.- Parameters:
d
-
-
getModel
public VisualizationModel<V,E> getModel()
- Specified by:
getModel
in interfaceVisualizationServer<V,E>
- Returns:
- Returns the model.
-
setModel
public void setModel(VisualizationModel<V,E> model)
- Specified by:
setModel
in interfaceVisualizationServer<V,E>
- Parameters:
model
- The model to set.
-
stateChanged
public void stateChanged(javax.swing.event.ChangeEvent e)
Description copied from interface:VisualizationServer
In response to changes from the model, repaint the view, then fire an event to any listeners. Examples of listeners are the GraphZoomScrollPane and the BirdsEyeVisualizationViewer- Specified by:
stateChanged
in interfacejavax.swing.event.ChangeListener
- Specified by:
stateChanged
in interfaceVisualizationServer<V,E>
-
setRenderer
public void setRenderer(Renderer<V,E> r)
Description copied from interface:VisualizationServer
Sets the showing Renderer to be the input Renderer. Also tells the Renderer to refer to this visualizationviewer as a PickedKey. (Because Renderers maintain a small amount of state, such as the PickedKey, it is important to create a separate instance for each VV instance.)- Specified by:
setRenderer
in interfaceVisualizationServer<V,E>
-
getRenderer
public Renderer<V,E> getRenderer()
Description copied from interface:VisualizationServer
Returns the renderer used by this instance.- Specified by:
getRenderer
in interfaceVisualizationServer<V,E>
-
setGraphLayout
public void setGraphLayout(edu.uci.ics.jung.algorithms.layout.Layout<V,E> layout)
Description copied from interface:VisualizationServer
Removes the current graph layout, and adds a new one.- Specified by:
setGraphLayout
in interfaceVisualizationServer<V,E>
- Parameters:
layout
- the new layout to set
-
scaleToLayout
public void scaleToLayout(ScalingControl scaler)
-
getGraphLayout
public edu.uci.ics.jung.algorithms.layout.Layout<V,E> getGraphLayout()
Description copied from interface:VisualizationServer
Returns the current graph layout. Passes thru to the model- Specified by:
getGraphLayout
in interfaceVisualizationServer<V,E>
-
setVisible
public void setVisible(boolean aFlag)
- Specified by:
setVisible
in interfaceVisualizationServer<V,E>
- Overrides:
setVisible
in classjavax.swing.JComponent
- See Also:
JComponent.setVisible(boolean)
-
getRenderingHints
public java.util.Map<java.awt.RenderingHints.Key,java.lang.Object> getRenderingHints()
- Specified by:
getRenderingHints
in interfaceVisualizationServer<V,E>
- Returns:
- Returns the renderingHints.
-
setRenderingHints
public void setRenderingHints(java.util.Map<java.awt.RenderingHints.Key,java.lang.Object> renderingHints)
- Specified by:
setRenderingHints
in interfaceVisualizationServer<V,E>
- Parameters:
renderingHints
- The renderingHints to set.
-
paintComponent
protected void paintComponent(java.awt.Graphics g)
- Overrides:
paintComponent
in classjavax.swing.JComponent
-
renderGraph
protected void renderGraph(java.awt.Graphics2D g2d)
-
addPreRenderPaintable
public void addPreRenderPaintable(VisualizationServer.Paintable paintable)
- Specified by:
addPreRenderPaintable
in interfaceVisualizationServer<V,E>
- Parameters:
paintable
- The paintable to add.
-
prependPreRenderPaintable
public void prependPreRenderPaintable(VisualizationServer.Paintable paintable)
-
removePreRenderPaintable
public void removePreRenderPaintable(VisualizationServer.Paintable paintable)
- Specified by:
removePreRenderPaintable
in interfaceVisualizationServer<V,E>
- Parameters:
paintable
- The paintable to remove.
-
addPostRenderPaintable
public void addPostRenderPaintable(VisualizationServer.Paintable paintable)
- Specified by:
addPostRenderPaintable
in interfaceVisualizationServer<V,E>
- Parameters:
paintable
- The paintable to add.
-
prependPostRenderPaintable
public void prependPostRenderPaintable(VisualizationServer.Paintable paintable)
-
removePostRenderPaintable
public void removePostRenderPaintable(VisualizationServer.Paintable paintable)
- Specified by:
removePostRenderPaintable
in interfaceVisualizationServer<V,E>
- Parameters:
paintable
- The paintable to remove.
-
addChangeListener
public void addChangeListener(javax.swing.event.ChangeListener l)
Description copied from interface:VisualizationServer
Adds aChangeListener
.- Specified by:
addChangeListener
in interfaceChangeEventSupport
- Specified by:
addChangeListener
in interfaceVisualizationServer<V,E>
- Parameters:
l
- the listener to be added
-
removeChangeListener
public void removeChangeListener(javax.swing.event.ChangeListener l)
Description copied from interface:ChangeEventSupport
Removes a ChangeListener.- Specified by:
removeChangeListener
in interfaceChangeEventSupport
- Specified by:
removeChangeListener
in interfaceVisualizationServer<V,E>
- Parameters:
l
- the listener to be removed
-
getChangeListeners
public javax.swing.event.ChangeListener[] getChangeListeners()
Description copied from interface:ChangeEventSupport
Returns an array of all theChangeListener
s added with addChangeListener().- Specified by:
getChangeListeners
in interfaceChangeEventSupport
- Specified by:
getChangeListeners
in interfaceVisualizationServer<V,E>
- Returns:
- all of the
ChangeListener
s added or an empty array if no listeners have been added
-
fireStateChanged
public void fireStateChanged()
Description copied from interface:VisualizationServer
Notifies all listeners that have registered interest for notification on this event type. The event instance is lazily created.- Specified by:
fireStateChanged
in interfaceChangeEventSupport
- Specified by:
fireStateChanged
in interfaceVisualizationServer<V,E>
- See Also:
EventListenerList
-
getPickedVertexState
public PickedState<V> getPickedVertexState()
- Specified by:
getPickedVertexState
in interfaceVisualizationServer<V,E>
- Returns:
- Returns the pickedState.
-
getPickedEdgeState
public PickedState<E> getPickedEdgeState()
- Specified by:
getPickedEdgeState
in interfaceVisualizationServer<V,E>
- Returns:
- Returns the pickedState.
-
setPickedVertexState
public void setPickedVertexState(PickedState<V> pickedVertexState)
- Specified by:
setPickedVertexState
in interfaceVisualizationServer<V,E>
-
setPickedEdgeState
public void setPickedEdgeState(PickedState<E> pickedEdgeState)
- Specified by:
setPickedEdgeState
in interfaceVisualizationServer<V,E>
-
getPickSupport
public edu.uci.ics.jung.algorithms.layout.GraphElementAccessor<V,E> getPickSupport()
- Specified by:
getPickSupport
in interfaceVisualizationServer<V,E>
- Returns:
- Returns the GraphElementAccessor.
-
setPickSupport
public void setPickSupport(edu.uci.ics.jung.algorithms.layout.GraphElementAccessor<V,E> pickSupport)
- Specified by:
setPickSupport
in interfaceVisualizationServer<V,E>
- Parameters:
pickSupport
- The pickSupport to set.
-
getCenter
public java.awt.geom.Point2D getCenter()
- Specified by:
getCenter
in interfaceVisualizationServer<V,E>
-
getRenderContext
public RenderContext<V,E> getRenderContext()
- Specified by:
getRenderContext
in interfaceVisualizationServer<V,E>
-
setRenderContext
public void setRenderContext(RenderContext<V,E> renderContext)
- Specified by:
setRenderContext
in interfaceVisualizationServer<V,E>
-
-