# Class PlotDisplay<P,A>

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
uk.ac.starlink.ttools.plot2.task.PlotDisplay<P,A>

All Implemented Interfaces:
  `ImageObserver, MenuContainer, Serializable`

public class PlotDisplay<P,A> extends JComponent
Graphical component which displays a gang of one or more plots. The plots are in general 'live', and may repaint themselves differently over the lifetime of the component according to user navigation actions, window size, and underlying data, depending on configuration.

Note: The paintComponent method of this class performs time-consuming operations, so it will tie up the Event Dispatch Thread. It is therefore not suitable as it stands for use as part of a general-purpose GUI application.

This class can be used as-is, or as a template.

Since:
  1 Mar 2013
Author:
  Mark Taylor
See Also:
  - Serialized Form

## Nested Class Summary

### Nested classes/interfaces inherited from class JComponent

`JComponent.AccessibleJComponent`

### Nested classes/interfaces inherited from class Container

`Container.AccessibleAWTContainer`

### Nested classes/interfaces inherited from class Component

`Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`ASPECTS_PROPERTY`
Name of property that changes when plot Aspects are reset.

### Fields inherited from class JComponent

`listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

### Fields inherited from class Component

`accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

### Fields inherited from interface ImageObserver

`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

## Constructor Summary

Constructors
Constructor
Description
`PlotDisplay(PlotScene<P,A> scene, Navigator<A> navigator, DataStore dataStore)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`addPointSelectionListener(PointSelectionListener psl)`
Adds a listener which will be notified when the user clicks on the plot region to select a point.
`static <P,A> PlotDisplay<P,A>`
`createPlotDisplay(PlotLayer[] layers, SurfaceFactory<P,A> surfFact, ConfigMap config, Trimming trimming, ShadeAxisKit shadeKit, PaperTypeSelector ptSel, Compositor compositor, Padding padding, DataStore dataStore, boolean navigable, PlotCaching caching)`
Utility method to construct a single-zoned PlotDisplay, with profile, aspect and navigator obtained from a supplied config map.
`PlotScene<P,A>`
`getScene()`
Returns the PlotScene on which this component is based.
`void`
`invalidate()`
`protected void`
`paintComponent(Graphics g)`
`void`
`removePointSelectionListener(PointSelectionListener psl)`
Removes a previously added point selection listener.

### Methods inherited from class 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, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, 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, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI`

### Methods inherited from class 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, 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 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, getAccessibleContext, 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, getSize, 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 Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### ASPECTS_PROPERTY

public static final String ASPECTS_PROPERTY
Name of property that changes when plot Aspects are reset. Can be monitored by use of a PropertyChangeListener. The property object type is an array of aspects, that is of this class's parameterised type A[].

See Also:
  - Constant Field Values

## Constructor Details

### PlotDisplay

public PlotDisplay(PlotScene<P,A> scene, Navigator<A> navigator, DataStore dataStore)
Constructor.

Parameters:
  `scene` - plot scene
  `navigator` - user gesture navigation controller, or null for a non-interactive plot
  `dataStore` - data storage object

## Method Details

### getScene

public PlotScene<P,A> getScene()
Returns the PlotScene on which this component is based.

Returns:
  scene

### addPointSelectionListener

public void addPointSelectionListener(PointSelectionListener psl)
Adds a listener which will be notified when the user clicks on the plot region to select a point.

Parameters:
  `psl` - listener to add

### removePointSelectionListener

public void removePointSelectionListener(PointSelectionListener psl)
Removes a previously added point selection listener.

Parameters:
  `psl` - listener to remove

### invalidate

public void invalidate()

Overrides:
  `invalidate` in class `Container`

### paintComponent

protected void paintComponent(Graphics g)

Overrides:
  `paintComponent` in class `JComponent`

### createPlotDisplay

@Slow public static <P,A> PlotDisplay<P,A> createPlotDisplay(PlotLayer[] layers, SurfaceFactory<P,A> surfFact, ConfigMap config, Trimming trimming, ShadeAxisKit shadeKit, PaperTypeSelector ptSel, Compositor compositor, Padding padding, DataStore dataStore, boolean navigable, PlotCaching caching)
Utility method to construct a single-zoned PlotDisplay, with profile, aspect and navigator obtained from a supplied config map. This will perform ranging from data if it is required; in that case, it may take time to execute.

Parameters:
  `layers` - layers constituting plot content
  `surfFact` - surface factory
  `config` - map containing surface profile, initial aspect and navigator configuration
  `trimming` - additional decoration specification, or null
  `shadeKit` - makes shader axis, or null if not required
  `ptSel` - paper type selector
  `compositor` - compositor for pixel composition
  `padding` - user requirements for external space
  `dataStore` - data storage object
  `navigable` - true for an interactive plot
  `caching` - plot caching policy
Returns:
  new plot component