Package uk.ac.starlink.ttools.plot2.task
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:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
public class PlotDisplay<P,A> extends javax.swing.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.This class can be used as-is, or as a template.
- Since:
- 1 Mar 2013
- Author:
- Mark Taylor
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ASPECTS_PROPERTY
Name of property that changes when plot Aspects are reset.-
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 PlotDisplay(Ganger<P,A> ganger, SurfaceFactory<P,A> surfFact, int nz, ZoneContent[] zoneContents, P[] profiles, A[] aspects, ShadeAxisFactory[] shadeFacts, Span[] shadeFixSpans, Navigator<A> navigator, PaperTypeSelector ptSel, Compositor compositor, DataStore dataStore, PlotCaching caching)
Constructs a PlotDisplay that shows multiple plot surfaces.PlotDisplay(SurfaceFactory<P,A> surfFact, PlotLayer[] layers, P profile, javax.swing.Icon legend, float[] legPos, java.lang.String title, A aspect, ShadeAxisFactory shadeFact, Span shadeFixSpan, Navigator<A> navigator, PaperTypeSelector ptSel, Compositor compositor, Padding padding, DataStore dataStore, PlotCaching caching)
Constructs a PlotDisplay that shows a single plot surface.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods 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.void
clearPlot()
Clears the current cached plot image, if any, so that regeneration of the image from the data is forced when the next paint operation is performed; otherwise it may be copied from a cached image.static <P,A>
PlotDisplay<P,A>createGangDisplay(Ganger<P,A> ganger, SurfaceFactory<P,A> surfFact, int nz, ZoneContent[] contents, P[] profiles, ConfigMap[] aspectConfigs, ShadeAxisFactory[] shadeFacts, Span[] shadeFixSpans, Navigator<A> navigator, PaperTypeSelector ptSel, Compositor compositor, DataStore dataStore, PlotCaching caching)
Utility method to construct a ganged PlotDisplay, with aspect obtained from a supplied config map.static <P,A>
PlotDisplay<P,A>createPlotDisplay(PlotLayer[] layers, SurfaceFactory<P,A> surfFact, ConfigMap config, javax.swing.Icon legend, float[] legPos, java.lang.String title, ShadeAxisFactory shadeFact, Span shadeFixSpan, 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.A[]
getAspects()
Returns the most recently set aspects.static java.util.Map<AuxScale,Span>
getAuxSpans(PlotLayer[] layers, Surface surface, Span shadeFixSpan, ShadeAxisFactory shadeFact, java.lang.Object[] plans, DataStore dataStore)
Gathers requested ranging information from data.Surface[]
getSurfaces()
Returns the current plot surfaces.void
invalidate()
protected void
paintComponent(java.awt.Graphics g)
void
removePointSelectionListener(PointSelectionListener psl)
Removes a previously added point selection listener.void
setAspects(A[] aspects)
Sets the aspects of the plot zones.-
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, 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 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, 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, 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
-
-
-
-
Field Detail
-
ASPECTS_PROPERTY
public static final java.lang.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 Detail
-
PlotDisplay
public PlotDisplay(Ganger<P,A> ganger, SurfaceFactory<P,A> surfFact, int nz, ZoneContent[] zoneContents, P[] profiles, A[] aspects, ShadeAxisFactory[] shadeFacts, Span[] shadeFixSpans, Navigator<A> navigator, PaperTypeSelector ptSel, Compositor compositor, DataStore dataStore, PlotCaching caching)
Constructs a PlotDisplay that shows multiple plot surfaces.- Parameters:
ganger
- defines plot surface groupingsurfFact
- surface factorynz
- number of plot zones in groupzoneContents
- plot content by zone (nz-element array)profiles
- plot surface profiles by zone (nz-element array)aspects
- plot surface aspects by zone (nz-element array)shadeFacts
- shader axis factories by zone (nz-element array), elements may be null if not requiredshadeFixSpans
- fixed shader ranges by zone (nz-element array) elements may be null for auto-range or if no shade axisnavigator
- user gesture navigation controller, or null for a non-interactive plotptSel
- paper type selectorcompositor
- compositor for pixel compositiondataStore
- data storage objectcaching
- plot caching policy
-
PlotDisplay
public PlotDisplay(SurfaceFactory<P,A> surfFact, PlotLayer[] layers, P profile, javax.swing.Icon legend, float[] legPos, java.lang.String title, A aspect, ShadeAxisFactory shadeFact, Span shadeFixSpan, Navigator<A> navigator, PaperTypeSelector ptSel, Compositor compositor, Padding padding, DataStore dataStore, PlotCaching caching)
Constructs a PlotDisplay that shows a single plot surface.- Parameters:
surfFact
- surface factorylayers
- plot layers to be paintedprofile
- surface profilelegend
- legend icon if required, or nulllegPos
- legend position if intenal legend is required; 2-element (x,y) array, each element in range 0-1title
- title text, or nullaspect
- plot surface aspectshadeFact
- shader axis factory, or null if not requiredshadeFixSpan
- fixed shader span, or null for auto-rangenavigator
- user gesture navigation controller, or null for a non-interactive plotptSel
- paper type selectorcompositor
- compositor for pixel compositionpadding
- user requirements for external spacedataStore
- data storage objectcaching
- plot caching policy
-
-
Method Detail
-
clearPlot
public void clearPlot()
Clears the current cached plot image, if any, so that regeneration of the image from the data is forced when the next paint operation is performed; otherwise it may be copied from a cached image. This method is called automatically byinvalidate()
, but may also be called manually, for instance if the data in the data store may have changed.
-
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 classjava.awt.Container
-
paintComponent
protected void paintComponent(java.awt.Graphics g)
- Overrides:
paintComponent
in classjavax.swing.JComponent
-
setAspects
public void setAspects(A[] aspects)
Sets the aspects of the plot zones. This triggers a repaint if required. Note this method does not test or adjust the supplied aspects for consistency with the ganger.- Parameters:
aspects
- per-zone array of required aspects
-
getAspects
public A[] getAspects()
Returns the most recently set aspects.- Returns:
- per-zone array of current aspects
-
getSurfaces
public Surface[] getSurfaces()
Returns the current plot surfaces. They will have been generated by this display's SurfaceFactory. Elements may be null if they are not currently up to date (plot is in process of being repainted).- Returns:
- per-zone surface array
-
createPlotDisplay
@Slow public static <P,A> PlotDisplay<P,A> createPlotDisplay(PlotLayer[] layers, SurfaceFactory<P,A> surfFact, ConfigMap config, javax.swing.Icon legend, float[] legPos, java.lang.String title, ShadeAxisFactory shadeFact, Span shadeFixSpan, 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 contentsurfFact
- surface factoryconfig
- map containing surface profile, initial aspect and navigator configurationlegend
- legend icon, or null if none requiredlegPos
- 2-element array giving x,y fractional legend placement position within plot (elements in range 0..1), or null for external legendtitle
- plot title, or nullshadeFact
- makes shader axis, or null if not requiredshadeFixSpan
- fixed shader range, or null for auto-range where requiredptSel
- paper type selectorcompositor
- compositor for pixel compositionpadding
- user requirements for external spacedataStore
- data storage objectnavigable
- true for an interactive plotcaching
- plot caching policy- Returns:
- new plot component
-
createGangDisplay
@Slow public static <P,A> PlotDisplay<P,A> createGangDisplay(Ganger<P,A> ganger, SurfaceFactory<P,A> surfFact, int nz, ZoneContent[] contents, P[] profiles, ConfigMap[] aspectConfigs, ShadeAxisFactory[] shadeFacts, Span[] shadeFixSpans, Navigator<A> navigator, PaperTypeSelector ptSel, Compositor compositor, DataStore dataStore, PlotCaching caching)
Utility method to construct a ganged PlotDisplay, with aspect 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:
ganger
- definses plot groupingsurfFact
- surface factorynz
- number of plot zones in groupcontents
- per-zone content information (nz-element array)profiles
- per-zone profiles (nz-element array)aspectConfigs
- per-zone config map providing entries for surf.getAspectKeys (nz-element arrays)shadeFacts
- shader axis factorys by zone (nz-element array), elements may be null if not requiredshadeFixSpans
- fixed shader ranges by zone (nz-element array) elements may be null for auto-range or if no shade axisnavigator
- user gesture navigation controller, or null for a non-interactive plotptSel
- paper type selectorcompositor
- compositor for pixel compositiondataStore
- data storage objectcaching
- plot caching policy on every repaint- Returns:
- new plot component
-
getAuxSpans
@Slow public static java.util.Map<AuxScale,Span> getAuxSpans(PlotLayer[] layers, Surface surface, Span shadeFixSpan, ShadeAxisFactory shadeFact, java.lang.Object[] plans, DataStore dataStore)
Gathers requested ranging information from data.- Parameters:
layers
- plot layerssurface
- plot surfaceshadeFixSpan
- fixed shade range limits, if anyshadeFact
- makes shader axis, or nullplans
- array of calculated plan objects, or nulldataStore
- data storage object- Returns:
- ranging information
-
-