# Class StackPlotWindow<P,A>

java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
uk.ac.starlink.topcat.AuxWindow
uk.ac.starlink.topcat.plot2.StackPlotWindow<P,A>

All Implemented Interfaces:
  `ImageObserver, MenuContainer, Serializable, Accessible, RootPaneContainer, WindowConstants`

Direct Known Subclasses:
  `CubePlotWindow, HistogramPlotWindow, MatrixPlotWindow, PlanePlotWindow, SkyPlotWindow, SpherePlotWindow, TimePlotWindow`

public class StackPlotWindow<P,A> extends AuxWindow
Window for all plots. This is generic and currently not expected to have much behaviour implemented by subclasses; plot-type-specific behaviour is defined by supplied PlotType and PlotTypeGui objects. It uses a PlotPanel to do the actual plotting work; this class handles placing the PlotPanel, gathering and supplying user configuration information to it, invoking replots at appropriate times, and managing other user interactions.

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

## Nested Class Summary

### Nested classes/interfaces inherited from class JFrame

`JFrame.AccessibleJFrame`

### Nested classes/interfaces inherited from class Frame

`Frame.AccessibleAWTFrame`

### Nested classes/interfaces inherited from class Window

`Window.AccessibleAWTWindow, Window.Type`

### 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 inherited from class JFrame

`accessibleContext, rootPane, rootPaneCheckingEnabled`

### Fields inherited from class Frame

`CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR`

### Fields inherited from class Component

`BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

### Fields inherited from interface ImageObserver

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

### Fields inherited from interface WindowConstants

`DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE`

## Constructor Summary

Constructors
Constructor
Description
`StackPlotWindow(String name, Component parent, uk.ac.starlink.ttools.plot2.PlotType<P,A> plotType, PlotTypeGui<P,A> plotTypeGui, ListModel<TopcatModel> tablesModel)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`dispose()`
`ControlManager`
`getControlManager()`
Returns the manager object that controls this window's stack.
`ControlStack`
`getControlStack()`
Returns the stack containing controls which define what this window is displaying.
`JMenu`
`getExportMenu()`
Returns this window's Export menu.
`FrameControl`
`getFrameControl()`
Returns the control used for configuring the external plot frame.
`LegendControl`
`getLegendControl()`
Returns the control used for configuring legend display.
`PlotPanel<P,A>`
`getPlotPanel()`
Returns this window's PlotPanel.
`PlotTypeGui<P,A>`
`getPlotTypeGui()`
Returns the plot type used by this window.
`ToggleButtonModel`
`getSketchModel()`
Returns the button model controlling whether intermediate plots are shown while assembling large/slow plots.
`ZoneController<P,A>`
`getZoneController(int iz)`
Returns the ZoneController for a given zone.
`static boolean`
`hasShadedLayers(uk.ac.starlink.ttools.plot2.PlotLayer[] layers)`
Indicates whether any of the submitted list of plot layers makes use of a colour scale.
`void`
`insertRescaleAction(Action act)`
Adds an action that is logically associated with rescaling the plot.

### Methods inherited from class AuxWindow

`addHelp, beep, confirm, createImportTableAction, createSaveTableAction, getBodyPanel, getControlPanel, getHelpMenu, getIconImage, getMainArea, getSponsorLogos, getToolBar, getWindowMenu, makeTitledBorder, makeVisible, placeProgressBar, positionAfter, recursiveSetEnabled, setBusy, setCloseIsExit, setMainHeading, setVisible`

### Methods inherited from class JFrame

`addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update`

### Methods inherited from class Frame

`addNotify, getCursorType, getExtendedState, getFrames, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated`

### Methods inherited from class Window

`addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, show, toBack, toFront`

### Methods inherited from class Container

`add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree`

### Methods inherited from class Component

`action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

### Methods inherited from class Object

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

### Methods inherited from interface MenuContainer

`getFont, postEvent`

## Constructor Details

### StackPlotWindow

public StackPlotWindow(String name, Component parent, uk.ac.starlink.ttools.plot2.PlotType<P,A> plotType, PlotTypeGui<P,A> plotTypeGui, ListModel<TopcatModel> tablesModel)
Constructor.

Parameters:
  `name` - window name
  `parent` - parent component
  `plotType` - defines basic plot type characteristics
  `plotTypeGui` - defines graphical user interface specifics for plot type
  `tablesModel` - list of available tables

## Method Details

### getPlotTypeGui

public PlotTypeGui<P,A> getPlotTypeGui()
Returns the plot type used by this window.

Returns:
  GUI plot type

### getControlStack

public ControlStack getControlStack()
Returns the stack containing controls which define what this window is displaying.

Returns:
  control stack

### getControlManager

public ControlManager getControlManager()
Returns the manager object that controls this window's stack.

Returns:
  control manager

### getPlotPanel

public PlotPanel<P,A> getPlotPanel()
Returns this window's PlotPanel.

Returns:
  plot panel

### getZoneController

public ZoneController<P,A> getZoneController(int iz)
Returns the ZoneController for a given zone.

Parameters:
  `iz` - zone index
Returns:
  zone controller

### getExportMenu

public JMenu getExportMenu()
Returns this window's Export menu.

Returns:
  export menu

### getSketchModel

public ToggleButtonModel getSketchModel()
Returns the button model controlling whether intermediate plots are shown while assembling large/slow plots.

Returns:
  sketch button model

### getLegendControl

public LegendControl getLegendControl()
Returns the control used for configuring legend display.

Returns:
  legend control

### getFrameControl

public FrameControl getFrameControl()
Returns the control used for configuring the external plot frame.

Returns:
  frame control

### insertRescaleAction

public void insertRescaleAction(Action act)
Adds an action that is logically associated with rescaling the plot. This takes the given action and inserts it into the toolbar and menus in appropriate places.

Parameters:
  `act` - action to add

### dispose

public void dispose()

Overrides:
  `dispose` in class `Window`

### hasShadedLayers

public static boolean hasShadedLayers(uk.ac.starlink.ttools.plot2.PlotLayer[] layers)
Indicates whether any of the submitted list of plot layers makes use of a colour scale.

Parameters:
  `layers` - plot layers
Returns:
  true iff any uses an aux colour shader