Package uk.ac.starlink.topcat

## Class ColumnComboBoxModel

- java.lang.Object
- - javax.swing.AbstractListModel
  - - uk.ac.starlink.topcat.ColumnComboBoxModel

- All Implemented Interfaces:
    `java.io.Serializable`, `java.util.EventListener`, `javax.swing.ComboBoxModel`, `javax.swing.event.TableColumnModelListener`, `javax.swing.ListModel`
  Direct Known Subclasses:
    `RestrictedColumnComboBoxModel`

      public class ColumnComboBoxModel
      extends javax.swing.AbstractListModel
      implements javax.swing.event.TableColumnModelListener, javax.swing.ComboBoxModel

  Adaptor class which turns a `TableColumnModel` into a `ComboBoxModel`. This model is designed to reflect the contents of a column model rather than the other way around, so in general you wouldn't want to add a ListDataListener to this model, you'd add it to the underlying column model.

  Selections in the column model are not reflected by selections in this model, but columns added/moved/removed are.

  Author:
    Mark Taylor (Starlink)
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static uk.ac.starlink.table.gui.StarTableColumn` | `NO_COLUMN` |

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

      `listenerList`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ColumnComboBoxModel​(javax.swing.table.TableColumnModel colModel, boolean hasNone)` | Constructs a new ComboBoxModel based on a given column model, optionally with a null entry at the head of the list.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `columnAdded​(javax.swing.event.TableColumnModelEvent evt)` |
    `void` | `columnMarginChanged​(javax.swing.event.ChangeEvent evt)` |
    `void` | `columnMoved​(javax.swing.event.TableColumnModelEvent evt)` |
    `void` | `columnRemoved​(javax.swing.event.TableColumnModelEvent evt)` |
    `void` | `columnSelectionChanged​(javax.swing.event.ListSelectionEvent evt)` |
    `javax.swing.table.TableColumnModel` | `getColumnModel()` |
    `java.lang.Object` | `getElementAt​(int index)` |
    `java.lang.Object` | `getSelectedItem()` | The returned object is guaranteed to be a `TableColumn` or null.
    `int` | `getSize()` |
    `javax.swing.JComboBox` | `makeComboBox()` | Returns a new JComboBox based on this model.
    `void` | `setHasNone​(boolean hasNone)` | Sets whether there should be a null entry at the head of the list.
    `void` | `setSelectedItem​(java.lang.Object item)` | The selected `item` must be a `TableColumn` object.

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

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

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

      `addListDataListener, removeListDataListener`

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

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

- - ### Field Detail

    - #### NO_COLUMN

          public static final uk.ac.starlink.table.gui.StarTableColumn NO_COLUMN

  - ### Constructor Detail

    - #### ColumnComboBoxModel

          public ColumnComboBoxModel​(javax.swing.table.TableColumnModel colModel,
                                     boolean hasNone)

      Constructs a new ComboBoxModel based on a given column model, optionally with a null entry at the head of the list.
      Parameters:
        `colModel` - the column model
        `hasNone` - true iff an additional null entry at the head of the list is required

  - ### Method Detail

    - #### setHasNone

          public void setHasNone​(boolean hasNone)

      Sets whether there should be a null entry at the head of the list.
      Parameters:
        `hasNone` - true iff an additional null entry at the head of the list is required

    - #### getColumnModel

          public javax.swing.table.TableColumnModel getColumnModel()

    - #### getElementAt

          public java.lang.Object getElementAt​(int index)

      Specified by:
        `getElementAt` in interface `javax.swing.ListModel`

    - #### getSize

          public int getSize()

      Specified by:
        `getSize` in interface `javax.swing.ListModel`

    - #### getSelectedItem

          public java.lang.Object getSelectedItem()

      The returned object is guaranteed to be a `TableColumn` or null.
      Specified by:
        `getSelectedItem` in interface `javax.swing.ComboBoxModel`
      Returns:
        the selected `TableColumn`

    - #### setSelectedItem

          public void setSelectedItem​(java.lang.Object item)

      The selected `item` must be a `TableColumn` object.
      Specified by:
        `setSelectedItem` in interface `javax.swing.ComboBoxModel`
      Parameters:
        `item` - a table column to select
      Throws:
        `java.lang.ClassCastException` - if `item` is not null or a `TableColumn`

    - #### makeComboBox

          public javax.swing.JComboBox makeComboBox()

      Returns a new JComboBox based on this model. This convenience method, as well as installing this model into a new JComboBox instance, also installs a suitable renderer for displaying the elements.
      Returns:
        new combo box displaying this model
      See Also:
        `ColumnCellRenderer`

    - #### columnAdded

          public void columnAdded​(javax.swing.event.TableColumnModelEvent evt)

      Specified by:
        `columnAdded` in interface `javax.swing.event.TableColumnModelListener`

    - #### columnRemoved

          public void columnRemoved​(javax.swing.event.TableColumnModelEvent evt)

      Specified by:
        `columnRemoved` in interface `javax.swing.event.TableColumnModelListener`

    - #### columnMoved

          public void columnMoved​(javax.swing.event.TableColumnModelEvent evt)

      Specified by:
        `columnMoved` in interface `javax.swing.event.TableColumnModelListener`

    - #### columnMarginChanged

          public void columnMarginChanged​(javax.swing.event.ChangeEvent evt)

      Specified by:
        `columnMarginChanged` in interface `javax.swing.event.TableColumnModelListener`

    - #### columnSelectionChanged

          public void columnSelectionChanged​(javax.swing.event.ListSelectionEvent evt)

      Specified by:
        `columnSelectionChanged` in interface `javax.swing.event.TableColumnModelListener`

Copyright © 2003-2018 CCLRC: Council for the Central Laboratory of the Research Councils. All Rights Reserved.