# Class SpecifierPanel<V>

java.lang.Object
uk.ac.starlink.ttools.plot2.config.SpecifierPanel<V>

All Implemented Interfaces:
  `Specifier<V>`

Direct Known Subclasses:
  `BinSizer.BinSizerSpecifier, ChooserColorSpecifier, ComboBoxSpecifier, MultiSpecifierPanel, SliderSpecifier, TextFieldSpecifier, ToggleSpecifier, UnitRangeSpecifier`

public abstract class SpecifierPanel<V> extends Object implements Specifier<V>
Partial Specifier implementation.

Since:
  5 Mar 2013
Author:
  Mark Taylor

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`SpecifierPanel(boolean isXFill)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`addActionListener(ActionListener listener)`
Adds a listener which will be informed when the user interacts with the graphical component to cause a (potential) change in the value.
`protected abstract JComponent`
`createComponent()`
Abstract method called lazily during `getComponent` to obtain the graphical component used by this specifier.
`protected void`
`fireAction()`
Notifies all the registered action listeners of a non-specific event.
`protected ActionListener`
`getActionForwarder()`
Returns a listener which will take ActionEvents and forward them to any listeners registered with this panel.
`protected ChangeListener`
`getChangeForwarder()`
Returns a listener which will take ChangeEvents and forward them to any listeners registered with this panel.
`JComponent`
`getComponent()`
Returns the graphical component that the user can interact with to supply a value.
`boolean`
`isXFill()`
Whether the GUI component should fill the available width of a panel.
`void`
`removeActionListener(ActionListener listener)`
Removes a listener previously added by `addActionListener`.

### Methods inherited from class Object

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

### Methods inherited from interface Specifier

`getSpecifiedValue, setSpecifiedValue, submitReport`

## Constructor Details

### SpecifierPanel

protected SpecifierPanel(boolean isXFill)
Constructor.

Parameters:
  `isXFill` - true if the graphical component should expand to fill the available horizontal space

## Method Details

### isXFill

public boolean isXFill()
Description copied from interface: `Specifier`
Whether the GUI component should fill the available width of a panel. This rendering hint should on the whole this should be true for expandable components, and false for fixed size components. Components should have a fixed vertical size in any case.

Specified by:
  `isXFill` in interface `Specifier<V>`
Returns:
  true for horizontally expandable components

### createComponent

protected abstract JComponent createComponent()
Abstract method called lazily during `getComponent` to obtain the graphical component used by this specifier. It will be called a maximum of once. It is not necessary that the component actually be created in this method, for instance it may be created at construction time if that's more convenient.

Returns:
  graphical component

### getComponent

public JComponent getComponent()
Description copied from interface: `Specifier`
Returns the graphical component that the user can interact with to supply a value. It should be line-like (not tall).

The returned component should preferably honour the JComponent `setEnabled`/`isEnabled` methods.

Specified by:
  `getComponent` in interface `Specifier<V>`
Returns:
  specifier component

### addActionListener

public void addActionListener(ActionListener listener)
Description copied from interface: `Specifier`
Adds a listener which will be informed when the user interacts with the graphical component to cause a (potential) change in the value.

Specified by:
  `addActionListener` in interface `Specifier<V>`
Parameters:
  `listener` - listener to add

### removeActionListener

public void removeActionListener(ActionListener listener)
Description copied from interface: `Specifier`
Removes a listener previously added by `addActionListener`.

Specified by:
  `removeActionListener` in interface `Specifier<V>`
Parameters:
  `listener` - listener to remove

### getActionForwarder

protected ActionListener getActionForwarder()
Returns a listener which will take ActionEvents and forward them to any listeners registered with this panel.

In general any input component which forms part of this panel's GUI should have as a listener the result of `getActionForwarder` or `getChangeForwarder`, so that changes in their state are propagated to listeners of this specifier.

Returns:
  action forwarder

### getChangeForwarder

protected ChangeListener getChangeForwarder()
Returns a listener which will take ChangeEvents and forward them to any listeners registered with this panel.

In general any input component which forms part of this panel's GUI should have as a listener the result of `getActionForwarder` or `getChangeForwarder`, so that changes in their state are propagated to listeners of this specifier.

Returns:
  change forwarder

### fireAction

protected void fireAction()
Notifies all the registered action listeners of a non-specific event.