# Class LayerControlAction

java.lang.Object
javax.swing.AbstractAction
uk.ac.starlink.topcat.BasicAction
uk.ac.starlink.topcat.plot2.LayerControlAction

All Implemented Interfaces:
  `ActionListener, Serializable, Cloneable, EventListener, Action`

public abstract class LayerControlAction extends BasicAction
Action for adding a layer control to the plot stack.

Since:
  25 Jul 2013
Author:
  Mark Taylor
See Also:
  - Serialized Form

## Field Summary

### Fields inherited from class AbstractAction

`changeSupport, enabled`

### Fields inherited from interface Action

`ACCELERATOR_KEY, ACTION_COMMAND_KEY, DEFAULT, DISPLAYED_MNEMONIC_INDEX_KEY, LARGE_ICON_KEY, LONG_DESCRIPTION, MNEMONIC_KEY, NAME, SELECTED_KEY, SHORT_DESCRIPTION, SMALL_ICON`

## Constructor Summary

Constructors
Constructor
Description
`LayerControlAction(String name, Icon layerIcon, String descrip, uk.ac.starlink.ttools.plot2.Plotter<?> plotter, ControlStack stack)`
Constructs a LayerControlAction from name, icon and description.
`LayerControlAction(uk.ac.starlink.ttools.plot2.Plotter<?> plotter, ControlStack stack)`
Constructs a LayerControlAction from a Plotter.

## Method Summary

Modifier and Type
Method
Description
`void`
`actionPerformed(ActionEvent evt)`
`abstract LayerControl`
`createLayerControl()`
Creates a layer control for this action's plotter.
`static LayerControlAction`
`createPlotterAction(PlotTypeGui<?,?> plotTypeGui, uk.ac.starlink.ttools.plot2.Plotter<?> plotter, ControlStack stack, ListModel<TopcatModel> tablesModel, ZoneFactory zfact, NextSupplier nextSupplier, TopcatListener tcListener, MultiConfigger baseConfigger)`
Attempts to return an instance of this class corresponding to a given plotter.
`uk.ac.starlink.ttools.plot2.Plotter<?>`
`getPlotter()`
Returns the single plotter associated with this action, if any.
`LayerControl`
`grabTable(TopcatModel tcModel)`
Allows this action to provide a layer control for a particular table if it is specially suited for it.

### Methods inherited from class BasicAction

`create, getEventWindow`

### Methods inherited from class AbstractAction

`addPropertyChangeListener, clone, firePropertyChange, getKeys, getPropertyChangeListeners, getValue, isEnabled, putValue, removePropertyChangeListener, setEnabled`

### Methods inherited from class Object

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

### Methods inherited from interface Action

`accept`

## Constructor Details

### LayerControlAction

public LayerControlAction(String name, Icon layerIcon, String descrip, uk.ac.starlink.ttools.plot2.Plotter<?> plotter, ControlStack stack)
Constructs a LayerControlAction from name, icon and description.

Parameters:
  `name` - action name
  `layerIcon` - icon representing the type of layer the action will add; it may get doctored to generate the icon for this action
  `descrip` - action description
  `plotter` - single plotter associated with this layer control, may be null
  `stack` - plot stack

### LayerControlAction

public LayerControlAction(uk.ac.starlink.ttools.plot2.Plotter<?> plotter, ControlStack stack)
Constructs a LayerControlAction from a Plotter.

Parameters:
  `plotter` - plotter which will be added to the stack
  `stack` - plot stack

## Method Details

### createLayerControl

public abstract LayerControl createLayerControl()
Creates a layer control for this action's plotter.

Returns:
  new layer control

### grabTable

public LayerControl grabTable(TopcatModel tcModel)
Allows this action to provide a layer control for a particular table if it is specially suited for it. Under normal circumstances, this method should return null, which is what the default implementation does. However, if this control considers that it's likely to be more suitable than all other controls for plotting the given table, it should return a LayerControl instance configured to plot that table.

Parameters:
  `tcModel` - table that could be plotted
Returns:
  null, or a control configured to plot the table

### actionPerformed

public void actionPerformed(ActionEvent evt)

### getPlotter

public uk.ac.starlink.ttools.plot2.Plotter<?> getPlotter()
Returns the single plotter associated with this action, if any. For instances with no single plotter, null is returned.

Returns:
  plotter for this action, or null

### createPlotterAction

public static LayerControlAction createPlotterAction(PlotTypeGui<?,?> plotTypeGui, uk.ac.starlink.ttools.plot2.Plotter<?> plotter, ControlStack stack, ListModel<TopcatModel> tablesModel, ZoneFactory zfact, NextSupplier nextSupplier, TopcatListener tcListener, MultiConfigger baseConfigger)
Attempts to return an instance of this class corresponding to a given plotter. If no suitable implementation is available, null is returned.

Parameters:
  `plotTypeGui` - plot type
  `plotter` - plotter to provide an action for
  `stack` - stack to which controls are to be added
  `tablesModel` - list of available tables
  `zfact` - zone id factory
  `nextSupplier` - manages global dispensing for some style options
  `tcListener` - listener for TopcatEvents
  `baseConfigger` - configuration source for some global config options
Returns:
  new action to add plotter control to stack, or null