Package ghidra.graph.viewer
Class VisualGraphView<V extends VisualVertex,E extends VisualEdge<V>,G extends VisualGraph<V,E>>
- java.lang.Object
 - 
- ghidra.graph.viewer.VisualGraphView<V,E,G>
 
 
- 
- Type Parameters:
 V- the vertex typeE- the edge typeG- the graph type
public class VisualGraphView<V extends VisualVertex,E extends VisualEdge<V>,G extends VisualGraph<V,E>> extends java.lang.ObjectA view object, where 'view' is used in the sense of the Model-View-Controller (MVC) pattern. This class will contain all UI widgets need to display and interact with a graph.Implementation Note:
- The graph of this component can be null, changing to non-null values over the lifetime of this view. This allows this view to be installed in a UI component, with the contents changing as needed.
 - 
        When the graph is 
set, the view portion of the class is recreated. - 
  At any given point in time there may not be a 
graphComponent. This means that this class must maintain settings state that it will apply when the component is created. This state is atypical and makes this class a bit harder to understand. 
 
- 
- 
Field Summary
Fields Modifier and Type Field Description protected GraphComponent<V,E,G>graphComponentprotected LayoutProvider<V,E,G>layoutProvider 
- 
Constructor Summary
Constructors Constructor Description VisualGraphView() 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanarePopupsEnabled()voidcleanup()Effectively clears this display.protected voiddisposeViewer()GraphPerspectiveInfo<V,E>generateGraphPerspective()VgetFocusedVertex()GraphComponent<V,E,G>getGraphComponent()LayoutProvider<V,E,G>getLayoutProvider()GraphViewer<V,E>getPrimaryGraphViewer()Returns the primary viewer of the graph (as opposed to the satellite viewer).SatelliteGraphViewer<V,E>getSatelliteViewer()java.util.Set<V>getSelectedVertices()javax.swing.JComponentgetUndockedSatelliteComponent()PathHighlightModegetVertexFocusPathHighlightMode()PathHighlightModegetVertexHoverPathHighlightMode()java.awt.PointgetVertexPointInViewSpace(V v)javax.swing.JComponentgetViewComponent()VisualGraphViewUpdater<V,E>getViewUpdater()GgetVisualGraph()protected <T> TgetWithBusyCursor(java.util.function.Supplier<T> s)protected voidinstallGraphViewer()booleanisSatelliteComponent(java.awt.Component c)booleanisSatelliteDocked()Returns whether the satellite intended to be docked.booleanisSatelliteVisible()Returns whether the satellite intended to be visible.booleanisScaledPastInteractionThreshold()protected voidmaybeTwinkleVertex(V twinkleVertex, boolean doTwinkle)voidoptionsChanged()Called when the options used by this graph view have changedprotected voidremoveSatellite()voidrepaint()voidrequestFocus()protected voidsetContent(java.awt.Component c)voidsetGraph(G graph)protected voidsetGraphComponent(GraphComponent<V,E,G> newComponent)voidsetGraphPerspective(GraphPerspectiveInfo<V,E> newPerspective)Sets the perspective for this viewvoidsetLayoutProvider(LayoutProvider<V,E,G> newLayoutProvider)Sets the given layout provider, but does not actually perform a layout.voidsetPopupsVisible(boolean visible)voidsetSatelliteDocked(boolean docked)voidsetSatelliteListener(GraphSatelliteListener l)voidsetSatelliteVisible(boolean visible)protected voidsetSouthComponent(javax.swing.JComponent component)voidsetStatusMessage(java.lang.String message)Sets a message to be painted on the viewer.voidsetTooltipProvider(VertexTooltipProvider<V,E> provider)voidsetVertexClickListener(VertexClickListener<V,E> l)Sets a listener that allows clients to be notified of vertex double-clicks.voidsetVertexFocusListener(VertexFocusListener<V> l)voidsetVertexFocusPathHighlightMode(PathHighlightMode mode)voidsetVertexHoverPathHighlightMode(PathHighlightMode mode)voidshowErrorView(java.lang.String errorMessage)java.awt.event.MouseEventtranslateMouseEventFromVertexToViewSpace(V v, java.awt.event.MouseEvent e)java.awt.PointtranslatePointFromVertexToViewSpace(V v, java.awt.Point p)java.awt.RectangletranslateRectangleFromVertexToViewSpace(V v, java.awt.Rectangle r)voidzoomInGraph()voidzoomOutGraph()voidzoomToVertex(V v)voidzoomToWindow() 
 - 
 
- 
- 
Field Detail
- 
graphComponent
protected GraphComponent<V extends VisualVertex,E extends VisualEdge<V>,G extends VisualGraph<V,E>> graphComponent
 
- 
layoutProvider
protected LayoutProvider<V extends VisualVertex,E extends VisualEdge<V>,G extends VisualGraph<V,E>> layoutProvider
 
 - 
 
- 
Method Detail
- 
getViewComponent
public javax.swing.JComponent getViewComponent()
 
- 
setSouthComponent
protected void setSouthComponent(javax.swing.JComponent component)
 
- 
removeSatellite
protected void removeSatellite()
 
- 
optionsChanged
public void optionsChanged()
Called when the options used by this graph view have changed 
- 
setLayoutProvider
public void setLayoutProvider(LayoutProvider<V,E,G> newLayoutProvider)
Sets the given layout provider, but does not actually perform a layout.- Parameters:
 newLayoutProvider- the new provider
 
- 
setGraph
public void setGraph(G graph)
 
- 
setSatelliteListener
public void setSatelliteListener(GraphSatelliteListener l)
 
- 
setVertexFocusListener
public void setVertexFocusListener(VertexFocusListener<V> l)
 
- 
setVertexClickListener
public void setVertexClickListener(VertexClickListener<V,E> l)
Sets a listener that allows clients to be notified of vertex double-clicks. Normal mouse processing is handled by theVisualGraphMousePluginclass. This is a convenience method so that clients do not have to deal with the mouse plugin.- Parameters:
 l- the listener
 
- 
installGraphViewer
protected void installGraphViewer()
 
- 
setGraphComponent
protected void setGraphComponent(GraphComponent<V,E,G> newComponent)
 
- 
setContent
protected void setContent(java.awt.Component c)
 
- 
getWithBusyCursor
protected <T> T getWithBusyCursor(java.util.function.Supplier<T> s)
 
- 
getVisualGraph
public G getVisualGraph()
 
- 
getPrimaryGraphViewer
public GraphViewer<V,E> getPrimaryGraphViewer()
Returns the primary viewer of the graph (as opposed to the satellite viewer). The viewer returned is responsible for maintaining view information for a given graph.- Returns:
 - the primary viewer
 
 
- 
getSatelliteViewer
public SatelliteGraphViewer<V,E> getSatelliteViewer()
 
- 
setGraphPerspective
public void setGraphPerspective(GraphPerspectiveInfo<V,E> newPerspective)
Sets the perspective for this view- Parameters:
 newPerspective- the new perspective
 
- 
generateGraphPerspective
public GraphPerspectiveInfo<V,E> generateGraphPerspective()
 
- 
showErrorView
public void showErrorView(java.lang.String errorMessage)
 
- 
setStatusMessage
public void setStatusMessage(java.lang.String message)
Sets a message to be painted on the viewer. This is useful to show a text message to the user. Passing null will clear the message.- Parameters:
 message- the status message
 
- 
getGraphComponent
public GraphComponent<V,E,G> getGraphComponent()
 
- 
isSatelliteVisible
public boolean isSatelliteVisible()
Returns whether the satellite intended to be visible. If this component is built, then a result of true means that the satellite is showing. If the component is not yet built, then a result of true means that the satellite will be made visible when the component is built.- Returns:
 - true if visible
 
 
- 
setSatelliteVisible
public void setSatelliteVisible(boolean visible)
 
- 
setSatelliteDocked
public void setSatelliteDocked(boolean docked)
 
- 
isSatelliteDocked
public boolean isSatelliteDocked()
Returns whether the satellite intended to be docked. If this component is built, then a result of true means that the satellite is docked. If the component is not yet built, then a result of true means that the satellite will be made docked when the component is built.- Returns:
 - true if visible
 
 
- 
setPopupsVisible
public void setPopupsVisible(boolean visible)
 
- 
arePopupsEnabled
public boolean arePopupsEnabled()
 
- 
getUndockedSatelliteComponent
public javax.swing.JComponent getUndockedSatelliteComponent()
 
- 
isSatelliteComponent
public boolean isSatelliteComponent(java.awt.Component c)
 
- 
setVertexHoverPathHighlightMode
public void setVertexHoverPathHighlightMode(PathHighlightMode mode)
 
- 
setVertexFocusPathHighlightMode
public void setVertexFocusPathHighlightMode(PathHighlightMode mode)
 
- 
getVertexFocusPathHighlightMode
public PathHighlightMode getVertexFocusPathHighlightMode()
 
- 
getVertexHoverPathHighlightMode
public PathHighlightMode getVertexHoverPathHighlightMode()
 
- 
setTooltipProvider
public void setTooltipProvider(VertexTooltipProvider<V,E> provider)
 
- 
zoomOutGraph
public void zoomOutGraph()
 
- 
zoomInGraph
public void zoomInGraph()
 
- 
zoomToVertex
public void zoomToVertex(V v)
 
- 
zoomToWindow
public void zoomToWindow()
 
- 
getViewUpdater
public VisualGraphViewUpdater<V,E> getViewUpdater()
 
- 
getVertexPointInViewSpace
public java.awt.Point getVertexPointInViewSpace(V v)
 
- 
translatePointFromVertexToViewSpace
public java.awt.Point translatePointFromVertexToViewSpace(V v, java.awt.Point p)
 
- 
translateRectangleFromVertexToViewSpace
public java.awt.Rectangle translateRectangleFromVertexToViewSpace(V v, java.awt.Rectangle r)
 
- 
translateMouseEventFromVertexToViewSpace
public java.awt.event.MouseEvent translateMouseEventFromVertexToViewSpace(V v, java.awt.event.MouseEvent e)
 
- 
isScaledPastInteractionThreshold
public boolean isScaledPastInteractionThreshold()
 
- 
maybeTwinkleVertex
protected void maybeTwinkleVertex(V twinkleVertex, boolean doTwinkle)
 
- 
requestFocus
public void requestFocus()
 
- 
repaint
public void repaint()
 
- 
getFocusedVertex
public V getFocusedVertex()
 
- 
getSelectedVertices
public java.util.Set<V> getSelectedVertices()
 
- 
getLayoutProvider
public LayoutProvider<V,E,G> getLayoutProvider()
 
- 
cleanup
public void cleanup()
Effectively clears this display. This method is not called dispose, as that implies the end of an object's lifecycle. This object can be re-used after this method is called. 
- 
disposeViewer
protected void disposeViewer()
 
 - 
 
 -