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 classBasicVisualizationServer.VisualizationListenerVisualizationListener 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 ChangeEventSupportchangeSupportprotected booleandoubleBuffereduser-settable choice to use the offscreen image or not.protected VisualizationModel<V,E>modelholds the state of this Viewprotected java.awt.image.BufferedImageoffscreenan offscreen image to render the graph Used if doubleBuffered is set to trueprotected java.awt.Graphics2DoffscreenG2dgraphics context for the offscreen image Used if doubleBuffered is set to trueprotected PickedState<E>pickedEdgeStateholds the state of which edges of the graph are currently 'picked'protected PickedState<V>pickedVertexStateholds the state of which vertices of the graph are currently 'picked'protected java.awt.event.ItemListenerpickEventListenera listener used to cause pick events to result in repaints, even if they come from another viewprotected java.util.List<VisualizationServer.Paintable>postRenderersa collection of user-implementable functions to render over the topology (after the graph is rendered)protected java.util.List<VisualizationServer.Paintable>preRenderersa collection of user-implementable functions to render under the topology (before the graph is rendered)protected RenderContext<V,E>renderContextprotected Renderer<V,E>rendererhandles the actual drawing of graph elementsprotected java.util.Map<java.awt.RenderingHints.Key,java.lang.Object>renderingHintsrendering 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(Layout<V,E> layout)Create an instance with the specified Layout.BasicVisualizationServer(Layout<V,E> layout, java.awt.Dimension preferredSize)Create an instance with the specified Layout and view dimension.BasicVisualizationServer(VisualizationModel<V,E> model)Create an instance with the specified model and a default dimension (600x600).BasicVisualizationServer(VisualizationModel<V,E> model, java.awt.Dimension preferredSize)Create an instance with the specified model and view dimension.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddChangeListener(javax.swing.event.ChangeListener l)Adds aChangeListener.voidaddPostRenderPaintable(VisualizationServer.Paintable paintable)voidaddPreRenderPaintable(VisualizationServer.Paintable paintable)protected voidcheckOffscreenImage(java.awt.Dimension d)Ensure that, if doubleBuffering is enabled, the offscreen image buffer exists and is the correct size.voidfireStateChanged()Notifies all listeners that have registered interest for notification on this event type.java.awt.geom.Point2DgetCenter()javax.swing.event.ChangeListener[]getChangeListeners()Returns an array of all theChangeListeners added with addChangeListener().Layout<V,E>getGraphLayout()VisualizationModel<V,E>getModel()PickedState<E>getPickedEdgeState()PickedState<V>getPickedVertexState()GraphElementAccessor<V,E>getPickSupport()RenderContext<V,E>getRenderContext()Renderer<V,E>getRenderer()java.util.Map<java.awt.RenderingHints.Key,java.lang.Object>getRenderingHints()java.awt.DimensiongetSize()Always sanity-check getSize so that we don't use a value that is improbablebooleanisDoubleBuffered()Returns whether this class uses double buffering.protected voidpaintComponent(java.awt.Graphics g)voidprependPostRenderPaintable(VisualizationServer.Paintable paintable)voidprependPreRenderPaintable(VisualizationServer.Paintable paintable)voidremoveChangeListener(javax.swing.event.ChangeListener l)Removes a ChangeListener.voidremovePostRenderPaintable(VisualizationServer.Paintable paintable)voidremovePreRenderPaintable(VisualizationServer.Paintable paintable)protected voidrenderGraph(java.awt.Graphics2D g2d)voidscaleToLayout(ScalingControl scaler)voidsetDoubleBuffered(boolean doubleBuffered)Specify whether this class uses its offscreen image or not.voidsetGraphLayout(Layout<V,E> layout)Replaces the current graph layout withlayout.voidsetModel(VisualizationModel<V,E> model)voidsetPickedEdgeState(PickedState<E> pickedEdgeState)voidsetPickedVertexState(PickedState<V> pickedVertexState)voidsetPickSupport(GraphElementAccessor<V,E> pickSupport)voidsetRenderContext(RenderContext<V,E> renderContext)voidsetRenderer(Renderer<V,E> r)Sets the showing Renderer to be the input Renderer.voidsetRenderingHints(java.util.Map<java.awt.RenderingHints.Key,java.lang.Object> renderingHints)voidsetVisible(boolean aFlag)Makes the component visible ifaFlagis true, or invisible if false.voidstateChanged(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(Layout<V,E> layout)
Create an instance with the specified Layout.- Parameters:
layout- The Layout to apply, with its associated Graph
-
BasicVisualizationServer
public BasicVisualizationServer(Layout<V,E> layout, java.awt.Dimension preferredSize)
Create an instance with the specified Layout and view dimension.- Parameters:
layout- The Layout to apply, with its associated GraphpreferredSize- the preferred size of this View
-
BasicVisualizationServer
public BasicVisualizationServer(VisualizationModel<V,E> model)
Create an instance with the specified model and a default dimension (600x600).- Parameters:
model- the model to use
-
BasicVisualizationServer
public BasicVisualizationServer(VisualizationModel<V,E> model, java.awt.Dimension preferredSize)
Create an instance with the specified model and view dimension.- Parameters:
model- the model to usepreferredSize- initial preferred size of the view
-
-
Method Detail
-
setDoubleBuffered
public void setDoubleBuffered(boolean doubleBuffered)
Description copied from interface:VisualizationServerSpecify whether this class uses its offscreen image or not.- Specified by:
setDoubleBufferedin interfaceVisualizationServer<V,E>- Overrides:
setDoubleBufferedin classjavax.swing.JComponent- Parameters:
doubleBuffered- if true, then doubleBuffering in the superclass is set to 'false'
-
isDoubleBuffered
public boolean isDoubleBuffered()
Description copied from interface:VisualizationServerReturns whether this class uses double buffering. The superclass will be the opposite state.- Specified by:
isDoubleBufferedin interfaceVisualizationServer<V,E>- Overrides:
isDoubleBufferedin classjavax.swing.JComponent- Returns:
- the double buffered state
-
getSize
public java.awt.Dimension getSize()
Always sanity-check getSize so that we don't use a value that is improbable- Overrides:
getSizein 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- the expected Dimension of the offscreen buffer
-
getModel
public VisualizationModel<V,E> getModel()
- Specified by:
getModelin interfaceVisualizationServer<V,E>- Returns:
- the model.
-
setModel
public void setModel(VisualizationModel<V,E> model)
- Specified by:
setModelin interfaceVisualizationServer<V,E>- Parameters:
model- the model for this class to use
-
stateChanged
public void stateChanged(javax.swing.event.ChangeEvent e)
Description copied from interface:VisualizationServerIn 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:
stateChangedin interfacejavax.swing.event.ChangeListener- Specified by:
stateChangedin interfaceVisualizationServer<V,E>- Parameters:
e- the change event
-
setRenderer
public void setRenderer(Renderer<V,E> r)
Description copied from interface:VisualizationServerSets the showing Renderer to be the input Renderer. Also tells the Renderer to refer to this instance 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:
setRendererin interfaceVisualizationServer<V,E>- Parameters:
r- the renderer to use
-
getRenderer
public Renderer<V,E> getRenderer()
- Specified by:
getRendererin interfaceVisualizationServer<V,E>- Returns:
- the renderer used by this instance.
-
setGraphLayout
public void setGraphLayout(Layout<V,E> layout)
Description copied from interface:VisualizationServerReplaces the current graph layout withlayout.- Specified by:
setGraphLayoutin interfaceVisualizationServer<V,E>- Parameters:
layout- the new layout to set
-
scaleToLayout
public void scaleToLayout(ScalingControl scaler)
-
getGraphLayout
public Layout<V,E> getGraphLayout()
- Specified by:
getGraphLayoutin interfaceVisualizationServer<V,E>- Returns:
- the current graph layout.
-
setVisible
public void setVisible(boolean aFlag)
Description copied from interface:VisualizationServerMakes the component visible ifaFlagis true, or invisible if false.- Specified by:
setVisiblein interfaceVisualizationServer<V,E>- Overrides:
setVisiblein classjavax.swing.JComponent- Parameters:
aFlag- true iff the component should be visible- See Also:
JComponent.setVisible(boolean)
-
getRenderingHints
public java.util.Map<java.awt.RenderingHints.Key,java.lang.Object> getRenderingHints()
- Specified by:
getRenderingHintsin interfaceVisualizationServer<V,E>- Returns:
- the renderingHints
-
setRenderingHints
public void setRenderingHints(java.util.Map<java.awt.RenderingHints.Key,java.lang.Object> renderingHints)
- Specified by:
setRenderingHintsin interfaceVisualizationServer<V,E>- Parameters:
renderingHints- The renderingHints to set.
-
paintComponent
protected void paintComponent(java.awt.Graphics g)
- Overrides:
paintComponentin classjavax.swing.JComponent
-
renderGraph
protected void renderGraph(java.awt.Graphics2D g2d)
-
addPreRenderPaintable
public void addPreRenderPaintable(VisualizationServer.Paintable paintable)
- Specified by:
addPreRenderPaintablein 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:
removePreRenderPaintablein interfaceVisualizationServer<V,E>- Parameters:
paintable- The paintable to remove.
-
addPostRenderPaintable
public void addPostRenderPaintable(VisualizationServer.Paintable paintable)
- Specified by:
addPostRenderPaintablein 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:
removePostRenderPaintablein interfaceVisualizationServer<V,E>- Parameters:
paintable- The paintable to remove.
-
addChangeListener
public void addChangeListener(javax.swing.event.ChangeListener l)
Description copied from interface:VisualizationServerAdds aChangeListener.- Specified by:
addChangeListenerin interfaceChangeEventSupport- Specified by:
addChangeListenerin interfaceVisualizationServer<V,E>- Parameters:
l- the listener to be added
-
removeChangeListener
public void removeChangeListener(javax.swing.event.ChangeListener l)
Description copied from interface:ChangeEventSupportRemoves a ChangeListener.- Specified by:
removeChangeListenerin interfaceChangeEventSupport- Specified by:
removeChangeListenerin interfaceVisualizationServer<V,E>- Parameters:
l- the listener to be removed
-
getChangeListeners
public javax.swing.event.ChangeListener[] getChangeListeners()
Description copied from interface:ChangeEventSupportReturns an array of all theChangeListeners added with addChangeListener().- Specified by:
getChangeListenersin interfaceChangeEventSupport- Specified by:
getChangeListenersin interfaceVisualizationServer<V,E>- Returns:
- all of the
ChangeListeners added or an empty array if no listeners have been added
-
fireStateChanged
public void fireStateChanged()
Description copied from interface:VisualizationServerNotifies all listeners that have registered interest for notification on this event type. The event instance is lazily created.- Specified by:
fireStateChangedin interfaceChangeEventSupport- Specified by:
fireStateChangedin interfaceVisualizationServer<V,E>- See Also:
EventListenerList
-
getPickedVertexState
public PickedState<V> getPickedVertexState()
- Specified by:
getPickedVertexStatein interfaceVisualizationServer<V,E>- Returns:
- the vertex PickedState instance
-
getPickedEdgeState
public PickedState<E> getPickedEdgeState()
- Specified by:
getPickedEdgeStatein interfaceVisualizationServer<V,E>- Returns:
- the edge PickedState instance
-
setPickedVertexState
public void setPickedVertexState(PickedState<V> pickedVertexState)
- Specified by:
setPickedVertexStatein interfaceVisualizationServer<V,E>
-
setPickedEdgeState
public void setPickedEdgeState(PickedState<E> pickedEdgeState)
- Specified by:
setPickedEdgeStatein interfaceVisualizationServer<V,E>
-
getPickSupport
public GraphElementAccessor<V,E> getPickSupport()
- Specified by:
getPickSupportin interfaceVisualizationServer<V,E>- Returns:
- the GraphElementAccessor
-
setPickSupport
public void setPickSupport(GraphElementAccessor<V,E> pickSupport)
- Specified by:
setPickSupportin interfaceVisualizationServer<V,E>- Parameters:
pickSupport- The pickSupport to set.
-
getCenter
public java.awt.geom.Point2D getCenter()
- Specified by:
getCenterin interfaceVisualizationServer<V,E>
-
getRenderContext
public RenderContext<V,E> getRenderContext()
- Specified by:
getRenderContextin interfaceVisualizationServer<V,E>
-
setRenderContext
public void setRenderContext(RenderContext<V,E> renderContext)
- Specified by:
setRenderContextin interfaceVisualizationServer<V,E>
-
-