Package uk.ac.starlink.topcat
Class ColumnDataComboBoxModel
java.lang.Object
javax.swing.AbstractListModel<uk.ac.starlink.table.ColumnData>
uk.ac.starlink.topcat.ColumnDataComboBoxModel
- All Implemented Interfaces:
Serializable
,EventListener
,ComboBoxModel<uk.ac.starlink.table.ColumnData>
,TableColumnModelListener
,ListModel<uk.ac.starlink.table.ColumnData>
public class ColumnDataComboBoxModel
extends AbstractListModel<uk.ac.starlink.table.ColumnData>
implements TableColumnModelListener, ComboBoxModel<uk.ac.starlink.table.ColumnData>
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 ColumnDataComboBox
class should generally be used as a
suitable host for instances of this class.
- Since:
- 23 Jan 2005
- Author:
- Mark Taylor
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
Determines what columns are acceptable for this model. -
Field Summary
Fields inherited from class javax.swing.AbstractListModel
listenerList
-
Constructor Summary
ConstructorsConstructorDescriptionColumnDataComboBoxModel
(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
Modifier and TypeMethodDescriptionvoid
void
void
void
void
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 giveninfo
.uk.ac.starlink.table.ColumnData
getColumnDataAt
(int index) Returns the element at a given index as a typed object.uk.ac.starlink.table.ColumnData
getElementAt
(int index) 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 giveninfo
.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 Details
-
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 columnsfilter
- determines which columns are permittedhasNone
- true iff you want a null entry in the selector modelhasIndex
- 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 columnsdataClazz
- content class of permitted columnshasNone
- true iff you want a null entry in the selector modelhasIndex
- true iff you want an index column entry in the selector model
-
ColumnDataComboBoxModel
Constructs a model for a given content class, optionally with a blank entry.- Parameters:
tcModel
- table model containing columnshasNone
- true iff you want a null entry in the selector model
-
-
Method Details
-
getElementAt
public uk.ac.starlink.table.ColumnData getElementAt(int index) - Specified by:
getElementAt
in interfaceListModel<uk.ac.starlink.table.ColumnData>
-
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() -
getSelectedItem
- Specified by:
getSelectedItem
in interfaceComboBoxModel<uk.ac.starlink.table.ColumnData>
-
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
- iftxt
is not valid
-
setSelectedItem
- Specified by:
setSelectedItem
in interfaceComboBoxModel<uk.ac.starlink.table.ColumnData>
-
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 giveninfo
. 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 giveninfo
. 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
- Specified by:
columnAdded
in interfaceTableColumnModelListener
-
columnRemoved
- Specified by:
columnRemoved
in interfaceTableColumnModelListener
-
columnMoved
- Specified by:
columnMoved
in interfaceTableColumnModelListener
-
columnMarginChanged
- Specified by:
columnMarginChanged
in interfaceTableColumnModelListener
-
columnSelectionChanged
- Specified by:
columnSelectionChanged
in interfaceTableColumnModelListener
-
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 modeltcol
- column in model- Returns:
- column data object
-