uk.ac.starlink.topcat
Class ColumnDataComboBoxModel

java.lang.Object
  extended by javax.swing.AbstractListModel
      extended by uk.ac.starlink.topcat.ColumnDataComboBoxModel
All Implemented Interfaces:
Serializable, EventListener, ComboBoxModel, TableColumnModelListener, ListModel

public class ColumnDataComboBoxModel
extends AbstractListModel
implements TableColumnModelListener, ComboBoxModel

ComboBoxModel for holding table per-row expressions. These may represent either actual columns or JEL expressions evaluated against columns. Elements of the model which contain usable data are instances of ColumnData. The selected item may be of some other type (currently String), and this should be ignored (treated as null) for the purposes of data access.

The createComboBox() method provides a JComboBox which is a suitable host for instances of this class.

Since:
23 Jan 2005
Author:
Mark Taylor
See Also:
Serialized Form

Nested Class Summary
static interface ColumnDataComboBoxModel.Filter
          Determines what columns are acceptable for this model.
 
Field Summary
 
Fields inherited from class javax.swing.AbstractListModel
listenerList
 
Constructor Summary
ColumnDataComboBoxModel(TopcatModel tcModel, Class dataClazz, boolean hasNone)
          Constructs a model for a given content class, optionally with a blank entry.
ColumnDataComboBoxModel(TopcatModel tcModel, Class dataClazz, boolean hasNone, boolean hasIndex)
          Constructs a model for a given content class, optionally with a blank entry and an entry for the magic 'index' column.
ColumnDataComboBoxModel(TopcatModel tcModel, ColumnDataComboBoxModel.Filter filter, boolean hasNone, boolean hasIndex)
          Constructs a model with a specified column metadata filter.
 
Method Summary
 void columnAdded(TableColumnModelEvent evt)
           
 void columnMarginChanged(ChangeEvent evt)
           
 void columnMoved(TableColumnModelEvent evt)
           
 void columnRemoved(TableColumnModelEvent evt)
           
 void columnSelectionChanged(ListSelectionEvent evt)
           
static JComboBox createComboBox()
          Constructs and returns a JComboBox suitable for use with a ColumnDataComboBoxModel.
static uk.ac.starlink.table.ColumnData createSimpleColumnData(TopcatModel tcModel, uk.ac.starlink.table.gui.StarTableColumn tcol)
          Creates a ColumnData object simply representing a single column of a table.
 uk.ac.starlink.table.ColumnData getBestMatchColumnData(uk.ac.starlink.table.ValueInfo info)
          Attempts to locate and return a member of this model which matches the given info.
 uk.ac.starlink.table.ColumnData getColumnDataAt(int index)
          Returns the element at a given index as a typed object.
 Object getElementAt(int index)
           
 Object getSelectedItem()
           
 int getSize()
           
 uk.ac.starlink.table.ColumnData getUniqueMatchColumnData(uk.ac.starlink.table.ValueInfo info)
          Attempts to locate and return a member of this model which is the only match for a given info.
 void setSelectedItem(Object item)
           
 uk.ac.starlink.table.ColumnData stringToColumnData(String txt)
          Converts a string value to a ColumnData value suitable for selection by this model.
 
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 Detail

ColumnDataComboBoxModel

public ColumnDataComboBoxModel(TopcatModel tcModel,
                               ColumnDataComboBoxModel.Filter filter,
                               boolean hasNone,
                               boolean hasIndex)
Constructs a model with a specified column metadata filter.

Parameters:
tcModel - table model containing columns
filter - determines which columns are permitted
hasNone - true iff you want a null entry in the selector model
hasIndex - true iff you want an index column entry in the selector model

ColumnDataComboBoxModel

public ColumnDataComboBoxModel(TopcatModel tcModel,
                               Class dataClazz,
                               boolean hasNone,
                               boolean hasIndex)
Constructs a model for a given content class, optionally with a blank entry and an entry for the magic 'index' column.

Parameters:
tcModel - table model containing columns
dataClazz - content class of permitted columns
hasNone - true iff you want a null entry in the selector model
hasIndex - true iff you want an index column entry in the selector model

ColumnDataComboBoxModel

public ColumnDataComboBoxModel(TopcatModel tcModel,
                               Class dataClazz,
                               boolean hasNone)
Constructs a model for a given content class, optionally with a blank entry.

Parameters:
tcModel - table model containing columns
hasNone - true iff you want a null entry in the selector model
Method Detail

getElementAt

public Object getElementAt(int index)
Specified by:
getElementAt in interface ListModel

getColumnDataAt

public uk.ac.starlink.table.ColumnData getColumnDataAt(int index)
Returns the element at a given index as a typed object.

Parameters:
index - requested index
Returns:
value at index as a ColumnData, or null

getSize

public int getSize()
Specified by:
getSize in interface ListModel

getSelectedItem

public Object getSelectedItem()
Specified by:
getSelectedItem in interface ComboBoxModel

stringToColumnData

public uk.ac.starlink.table.ColumnData stringToColumnData(String txt)
                                                   throws gnu.jel.CompilationException
Converts a string value to a ColumnData value suitable for selection by this model. If it cannot be done, a CompilationException is thrown.

Parameters:
txt - string expression (or column name) for data
Returns:
corresponding ColumnData object
Throws:
gnu.jel.CompilationException - if txt is not valid

setSelectedItem

public void setSelectedItem(Object item)
Specified by:
setSelectedItem in interface ComboBoxModel

getBestMatchColumnData

public uk.ac.starlink.table.ColumnData getBestMatchColumnData(uk.ac.starlink.table.ValueInfo info)
Attempts to locate and return a member of this model which matches the given info. Exactly how the matching is done is not defined - presumably grubbing about with UCDs or column names etc.

Parameters:
info - metadata item to match
Returns:
object suitable for selection in this model which matches info, or null if nothing suitable can be found

getUniqueMatchColumnData

public uk.ac.starlink.table.ColumnData getUniqueMatchColumnData(uk.ac.starlink.table.ValueInfo info)
Attempts to locate and return a member of this model which is the only match for a given info. If no good match can be found, or if multiple equally good matches are found, null is returned. Exactly how the matching is done is not defined - presumably grubbing about with UCDs or column names etc.

Parameters:
info - metadata item to match
Returns:
object suitable for selection in this model which matches info, or null if nothing suitable can be found

columnAdded

public void columnAdded(TableColumnModelEvent evt)
Specified by:
columnAdded in interface TableColumnModelListener

columnRemoved

public void columnRemoved(TableColumnModelEvent evt)
Specified by:
columnRemoved in interface TableColumnModelListener

columnMoved

public void columnMoved(TableColumnModelEvent evt)
Specified by:
columnMoved in interface TableColumnModelListener

columnMarginChanged

public void columnMarginChanged(ChangeEvent evt)
Specified by:
columnMarginChanged in interface TableColumnModelListener

columnSelectionChanged

public void columnSelectionChanged(ListSelectionEvent evt)
Specified by:
columnSelectionChanged in interface TableColumnModelListener

createComboBox

public static JComboBox createComboBox()
Constructs and returns a JComboBox suitable for use with a ColumnDataComboBoxModel. It installs (and deinstalls as appropriate) ComboBoxEditors which allow for textual expressions to be interpreted as JEL expressions based on the TopcatModel on which this model is based. This facility is only available/useful in the case that the combo box is editable; so the returned combo box is editable. Currently no default renderer is required or installed.

Returns:
new custom combo box

createSimpleColumnData

public static uk.ac.starlink.table.ColumnData createSimpleColumnData(TopcatModel tcModel,
                                                                     uk.ac.starlink.table.gui.StarTableColumn tcol)
Creates a ColumnData object simply representing a single column of a table. Behaviour is undefined if tcol is not associated with the model.

Parameters:
tcModel - topcat model
tcol - column in model
Returns:
column data object


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