Class 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.

    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 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
    • 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
      • Fields inherited from class java.awt.Component

        accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
      • Fields inherited from interface java.awt.image.ImageObserver

        ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
    • 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.
      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.
      PlotScene<P,​A> getScene()
      Returns the PlotScene on which this component is based.
      void invalidate()  
      protected void paintComponent​(java.awt.Graphics g)  
      void removePointSelectionListener​(PointSelectionListener psl)
      Removes a previously added point selection listener.
      • 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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • 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​(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 Detail

      • 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 java.awt.Container
      • paintComponent

        protected void paintComponent​(java.awt.Graphics g)
        Overrides:
        paintComponent in class javax.swing.JComponent
      • 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 content
        surfFact - surface factory
        config - map containing surface profile, initial aspect and navigator configuration
        legend - legend icon, or null if none required
        legPos - 2-element array giving x,y fractional legend placement position within plot (elements in range 0..1), or null for external legend
        title - plot title, or null
        shadeFact - makes shader axis, or null if not required
        shadeFixSpan - fixed shader range, or null for auto-range where 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