Package uk.ac.starlink.topcat

# Class RestrictedColumnComboBoxModel

java.lang.Object
javax.swing.AbstractListModel<TableColumn>
uk.ac.starlink.topcat.ColumnComboBoxModel
uk.ac.starlink.topcat.RestrictedColumnComboBoxModel

All Implemented Interfaces:
  `Serializable`, `EventListener`, `ComboBoxModel<TableColumn>`, `TableColumnModelListener`, `ListModel<TableColumn>`

public abstract class RestrictedColumnComboBoxModel extends ColumnComboBoxModel
Does a similar job as for ColumnComboBoxModel, but when only a subset of the available columns should show up in the combobox. Use it in the same way as ColumnComboBoxModel, but implement the `acceptColumn(uk.ac.starlink.table.ColumnInfo)` method appropriately. In the case that `acceptColumn` accepts everything, this will behave just the same as a ColumnComboBoxModel (though perhaps less efficiently).

See Also:
  - Serialized Form

## Field Summary

### Fields inherited from class uk.ac.starlink.topcat.ColumnComboBoxModel

`NO_COLUMN`

### Fields inherited from class javax.swing.AbstractListModel

`listenerList`

## Constructor Summary

Constructors
Constructor
Description
`RestrictedColumnComboBoxModel(TableColumnModel colModel, boolean hasNone)`

## Method Summary

Modifier and Type
Method
Description
`abstract boolean`
`acceptColumn(uk.ac.starlink.table.ColumnInfo cinfo)`
Determines whether a column with given metadata in the column model should show up in the combobox.
`void`
`columnAdded(TableColumnModelEvent evt)`
`void`
`columnMoved(TableColumnModelEvent evt)`
`void`
`columnRemoved(TableColumnModelEvent evt)`
`TableColumn`
`getElementAt(int index)`
`int`
`getSize()`
`static RestrictedColumnComboBoxModel`
`makeClassColumnComboBoxModel(TableColumnModel colModel, boolean hasNone, Class<?> clazz)`
Returns a column combo box model which checks for compatibility with a given class.

### Methods inherited from class uk.ac.starlink.topcat.ColumnComboBoxModel

`columnMarginChanged, columnSelectionChanged, getColumnModel, getSelectedItem, makeComboBox, setHasNone, setSelectedItem`

### Methods inherited from class javax.swing.AbstractListModel

`addListDataListener, fireContentsChanged, fireIntervalAdded, fireIntervalRemoved, getListDataListeners, getListeners, removeListDataListener`

### Methods inherited from class java.lang.Object

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

### Methods inherited from interface javax.swing.ListModel

`addListDataListener, removeListDataListener`

## Constructor Details

### RestrictedColumnComboBoxModel

public RestrictedColumnComboBoxModel(TableColumnModel colModel, boolean hasNone)

## Method Details

### acceptColumn

public abstract boolean acceptColumn(uk.ac.starlink.table.ColumnInfo cinfo)
Determines whether a column with given metadata in the column model should show up in the combobox.

Parameters:
  `cinfo` - column metadata to assess
Returns:
  `true` iff the column is to be used

### getElementAt

public TableColumn getElementAt(int index)

Specified by:
  `getElementAt` in interface `ListModel<TableColumn>`
Overrides:
  `getElementAt` in class `ColumnComboBoxModel`

### getSize

public int getSize()

Specified by:
  `getSize` in interface `ListModel<TableColumn>`
Overrides:
  `getSize` in class `ColumnComboBoxModel`

### columnAdded

public void columnAdded(TableColumnModelEvent evt)

Specified by:
  `columnAdded` in interface `TableColumnModelListener`
Overrides:
  `columnAdded` in class `ColumnComboBoxModel`

### columnRemoved

public void columnRemoved(TableColumnModelEvent evt)

Specified by:
  `columnRemoved` in interface `TableColumnModelListener`
Overrides:
  `columnRemoved` in class `ColumnComboBoxModel`

### columnMoved

public void columnMoved(TableColumnModelEvent evt)

Specified by:
  `columnMoved` in interface `TableColumnModelListener`
Overrides:
  `columnMoved` in class `ColumnComboBoxModel`

### makeClassColumnComboBoxModel

public static RestrictedColumnComboBoxModel makeClassColumnComboBoxModel(TableColumnModel colModel, boolean hasNone, Class<?> clazz)
Returns a column combo box model which checks for compatibility with a given class. Class matching is not strict in the following sense: any numeric class (`Number`) is considered assignable to any other numeric class.

Parameters:
  `colModel` - the column model
  `hasNone` - true if you want a NO_COLUMN entry
  `clazz` - the class that available columns have to have data assignable to