# Class SphericalAxesSelector

java.lang.Object
uk.ac.starlink.topcat.plot.SphericalAxesSelector

All Implemented Interfaces:
  `AxesSelector`

public class SphericalAxesSelector extends Object implements AxesSelector
AxesSelector implementation which queries for spherical polar coordinates and yields 3D Cartesian ones.

Since:
  31 May 2007
Author:
  Mark Taylor

## Constructor Summary

Constructors
Constructor
Description
`SphericalAxesSelector(ToggleButtonModel logToggler, ToggleButtonModel tangentErrorToggler, ErrorModeSelectionModel radialErrorModeModel)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`addActionListener(ActionListener listener)`
Adds a listener which is notified when any of the selections made by this component changes.
`AxisEditor[]`
`createAxisEditors()`
Constructs an array of AxisEditor objects suitable for modifying the axes which are defined by this selector.
`PointStore`
`createPointStore(int npoint)`
Returns a PointStore suitable for storing coordinate and error information generated by the current state of this selector.
`JComponent`
`getColumnSelectorPanel()`
Returns the panel which contains column selectors and any other UI components that the concrete subclass wants to place.
`JComboBox[]`
`getColumnSelectors()`
Returns the array of combo boxes which are used to select column or other values.
`uk.ac.starlink.table.StarTable`
`getData()`
Returns a StarTable which corresponds to the data in the columns selected by the current selections on this object.
`uk.ac.starlink.table.StarTable`
`getErrorData()`
Returns a StarTable which corresponds to the error data defined by the current selections.
`uk.ac.starlink.ttools.plot.ErrorMode[]`
`getErrorModes()`
Returns the error modes currently in force for this selector.
`uk.ac.starlink.table.StarTable`
`getLabelData()`
Returns a StarTable whose single column contains a label for each point.
`int`
`getNdim()`
Returns the number of columns in the table that `AxesSelector.getData()` will return.
`uk.ac.starlink.table.ValueInfo`
`getRadialInfo()`
Returns metadata describing the currently selected radial coordinate.
`void`
`initialiseSelectors()`
Hint to set up the values of the column selectors to a sensible value.
`boolean`
`isReady()`
Indicates whether this selector has enough state filled in to be able to specify some point data.
`void`
`removeActionListener(ActionListener listener)`
Removes a listener added by `AxesSelector.addActionListener(ActionListener)`.
`void`
`setRadialVisible(boolean vis)`
Determines whether the radial axis control is visible.
`void`
`setTable(TopcatModel tcModel)`
Set up column selectors correctly for the given model.

### Methods inherited from class Object

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

## Constructor Details

### SphericalAxesSelector

public SphericalAxesSelector(ToggleButtonModel logToggler, ToggleButtonModel tangentErrorToggler, ErrorModeSelectionModel radialErrorModeModel)
Constructor.

Parameters:
  `logToggler` - model for determining whether the radial coordinate is to be scaled logarithmically
  `tangentErrorToggler` - model indicating whether tangential errors will be drawn
  `radialErrorModeModel` - model indicating whether/how radial errors will be drawn

## Method Details

### getColumnSelectorPanel

public JComponent getColumnSelectorPanel()
Description copied from interface: `AxesSelector`
Returns the panel which contains column selectors and any other UI components that the concrete subclass wants to place.

Specified by:
  `getColumnSelectorPanel` in interface `AxesSelector`
Returns:
  column selector panel

### getColumnSelectors

public JComboBox[] getColumnSelectors()
Description copied from interface: `AxesSelector`
Returns the array of combo boxes which are used to select column or other values.

Specified by:
  `getColumnSelectors` in interface `AxesSelector`
Returns:
  array of column selector combo boxes

### getNdim

public int getNdim()
Description copied from interface: `AxesSelector`
Returns the number of columns in the table that `AxesSelector.getData()` will return.

Specified by:
  `getNdim` in interface `AxesSelector`
Returns:
  dimensionality

### isReady

public boolean isReady()
Description copied from interface: `AxesSelector`
Indicates whether this selector has enough state filled in to be able to specify some point data.

Specified by:
  `isReady` in interface `AxesSelector`
Returns:
  true iff properly filled in

### getData

public uk.ac.starlink.table.StarTable getData()
Description copied from interface: `AxesSelector`
Returns a StarTable which corresponds to the data in the columns selected by the current selections on this object.

Note: for performance reasons, it is imperative that two tables returned from this method must match according to the `Object.equals(Object)` method if they are known to contain the same cell data (i.e. if the state of this selector has not changed in the mean time). Don't forget to do `hashCode` too.

Specified by:
  `getData` in interface `AxesSelector`
Returns:
  table containing the data from the current selection

### getErrorData

public uk.ac.starlink.table.StarTable getErrorData()
Description copied from interface: `AxesSelector`
Returns a StarTable which corresponds to the error data defined by the current selections. The details of how the table columns are laid out are down to the concrete subclass.

See the notes in `AxesSelector.getData()` about table equality - the same constraints apply.

Specified by:
  `getErrorData` in interface `AxesSelector`
Returns:
  error data table

### getLabelData

public uk.ac.starlink.table.StarTable getLabelData()
Description copied from interface: `AxesSelector`
Returns a StarTable whose single column contains a label for each point.

See the notes in `AxesSelector.getData()` about table equality - the same constraints apply.

Specified by:
  `getLabelData` in interface `AxesSelector`
Returns:
  label table

### createPointStore

public PointStore createPointStore(int npoint)
Description copied from interface: `AxesSelector`
Returns a PointStore suitable for storing coordinate and error information generated by the current state of this selector. The store will have to store `npoint` points, and its `PointStore.storePoint(Object[], Object[], String)` method will be called with the result of acquiring rows from the tables got from this selector's `AxesSelector.getData()` and `AxesSelector.getErrorData()` methods.

Specified by:
  `createPointStore` in interface `AxesSelector`
Parameters:
  `npoint` - number of points to store
Returns:
  new point store

### getErrorModes

public uk.ac.starlink.ttools.plot.ErrorMode[] getErrorModes()
Description copied from interface: `AxesSelector`
Returns the error modes currently in force for this selector.

Specified by:
  `getErrorModes` in interface `AxesSelector`
Returns:
  error mode array

### createAxisEditors

public AxisEditor[] createAxisEditors()
Description copied from interface: `AxesSelector`
Constructs an array of AxisEditor objects suitable for modifying the axes which are defined by this selector. The number of them is often, but not necessarily, the same as the dimensionality of this selector.

Specified by:
  `createAxisEditors` in interface `AxesSelector`
Returns:
  array of new AxisEditors

### setTable

public void setTable(TopcatModel tcModel)
Description copied from interface: `AxesSelector`
Set up column selectors correctly for the given model. This will involve setting the column selector models appropriately. If the submitted table is null, then the selector models should be unselected.

Specified by:
  `setTable` in interface `AxesSelector`
Parameters:
  `tcModel` - table for which selectors must be configured

### initialiseSelectors

public void initialiseSelectors()
Description copied from interface: `AxesSelector`
Hint to set up the values of the column selectors to a sensible value. An implementation which does nothing is legal.

Specified by:
  `initialiseSelectors` in interface `AxesSelector`

### addActionListener

public void addActionListener(ActionListener listener)
Description copied from interface: `AxesSelector`
Adds a listener which is notified when any of the selections made by this component changes.

Specified by:
  `addActionListener` in interface `AxesSelector`
Parameters:
  `listener` - listener to add

### removeActionListener

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

Specified by:
  `removeActionListener` in interface `AxesSelector`
Parameters:
  `listener` - listener to remove

### setRadialVisible

public void setRadialVisible(boolean vis)
Determines whether the radial axis control is visible. If not, the radial axis is assumed always to have a value of unity.

Parameters:
  `vis` - whether the radial control is visible

### getRadialInfo

public uk.ac.starlink.table.ValueInfo getRadialInfo()
Returns metadata describing the currently selected radial coordinate. If no radial coordinate is selected (all points on the surface of the sphere), `null` is returned.

Returns:
  radial column info