# Class OptionConfigKey<T>

java.lang.Object
uk.ac.starlink.ttools.plot2.config.ConfigKey<T>
uk.ac.starlink.ttools.plot2.config.OptionConfigKey<T>

Direct Known Subclasses:
  `MultiPointConfigKey, PerUnitConfigKey, SkySysConfigKey`

public abstract class OptionConfigKey<T> extends ConfigKey<T>
Config key for use with items that can be chosen from a list of options. The list is basically closed, though it may be possible programmatically to supply an object of the required type. For open lists of options see `ChoiceConfigKey`.

Since:
  23 Feb 2013
Author:
  Mark Taylor

## Constructor Summary

Constructors
Constructor
Description
`OptionConfigKey(ConfigMeta meta, Class<T> clazz, T[] options)`
Constructor that uses the first of the supplied options as a default.
`OptionConfigKey(ConfigMeta meta, Class<T> clazz, T[] options, T dflt)`
Constructor that specifies an explicit default and uses the default specifier type.
`OptionConfigKey(ConfigMeta meta, Class<T> clazz, T[] options, T dflt, boolean useRadio)`
Constructor that specifies an explicit default and specifier type.

## Method Summary

Modifier and Type
Method
Description
`OptionConfigKey<T>`
`addOptionsXml()`
Convenience method to add the result of `getOptionsXml()` to the XML documentation of this key.
`Specifier<T>`
`createSpecifier()`
Constructs a graphical control with which the user can specify a suitable value for association with this key.
`T[]`
`getOptions()`
Returns the available options for this key.
`String`
`getOptionsXml()`
Returns an XML list of the available options for this config key.
`abstract String`
`getXmlDescription(T value)`
Returns a description in XML of the given option value.
`OptionConfigKey<T>`
`setOptionUsage()`
Sets the usage string based on the currently configured options.
`T`
`stringToValue(String txt)`
Calls `valueToString` repeatedly looking for a match.
`String`
`valueToString(T value)`
Invokes the `toString` method of the supplied option.

### Methods inherited from class ConfigKey

`cast, getDefaultValue, getMeta, getValueClass, toString`

### Methods inherited from class Object

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

## Constructor Details

### OptionConfigKey

public OptionConfigKey(ConfigMeta meta, Class<T> clazz, T[] options, T dflt, boolean useRadio)
Constructor that specifies an explicit default and specifier type.

Parameters:
  `meta` - metadata
  `clazz` - class to which all the possible options belong
  `options` - array of possible values for this key
  `dflt` - default option, should be one of `options`
  `useRadio` - true to use radio buttons, false for a combo box

### OptionConfigKey

public OptionConfigKey(ConfigMeta meta, Class<T> clazz, T[] options, T dflt)
Constructor that specifies an explicit default and uses the default specifier type.

Parameters:
  `meta` - metadata
  `clazz` - class to which all the possible options belong
  `options` - array of possible values for this key
  `dflt` - default option, should be one of `options`

### OptionConfigKey

public OptionConfigKey(ConfigMeta meta, Class<T> clazz, T[] options)
Constructor that uses the first of the supplied options as a default.

Parameters:
  `meta` - metadata
  `clazz` - class to which all the possible options belong
  `options` - array of possible values for this key, first element is used as the default value

## Method Details

### valueToString

public String valueToString(T value)
Invokes the `toString` method of the supplied option. May be overridden.

Specified by:
  `valueToString` in class `ConfigKey<T>`
Parameters:
  `value` - possible value associated with this key
Returns:
  string representation

### getXmlDescription

public abstract String getXmlDescription(T value)
Returns a description in XML of the given option value. This, along with `valueToString(T)`, is used by the `getOptionsXml()` method to assemble a described list of the options.

Parameters:
  `value` - possible value of this key
Returns:
  short snippet of XML (not wrapped in any outer element) describing the value; may be null if no description required or available

### stringToValue

public T stringToValue(String txt) throws ConfigException
Calls `valueToString` repeatedly looking for a match. This means that if `valueToString` is overridden it is usually not necessary to override this method.

Specified by:
  `stringToValue` in class `ConfigKey<T>`
Parameters:
  `txt` - string representation of value
Returns:
  value
Throws:
  `ConfigException`

### getOptions

public T[] getOptions()
Returns the available options for this key.

Returns:
  choosable values

### createSpecifier

public Specifier<T> createSpecifier()
Description copied from class: `ConfigKey`
Constructs a graphical control with which the user can specify a suitable value for association with this key.

Specified by:
  `createSpecifier` in class `ConfigKey<T>`
Returns:
  new specifier

### setOptionUsage

public OptionConfigKey<T> setOptionUsage()
Sets the usage string based on the currently configured options. This method calls setStringUsage.

Returns:
  this object, as a convenience

### addOptionsXml

public OptionConfigKey<T> addOptionsXml()
Convenience method to add the result of `getOptionsXml()` to the XML documentation of this key.

Returns:
  this object, as a convenience

### getOptionsXml

public String getOptionsXml()
Returns an XML list of the available options for this config key. Descriptions are not included.

Returns:
  p element