Package uk.ac.starlink.topcat
Class ColumnDataComboBoxModel
- java.lang.Object
-
- javax.swing.AbstractListModel
-
- uk.ac.starlink.topcat.ColumnDataComboBoxModel
-
- All Implemented Interfaces:
java.io.Serializable,java.util.EventListener,javax.swing.ComboBoxModel,javax.swing.event.TableColumnModelListener,javax.swing.ListModel
public class ColumnDataComboBoxModel extends javax.swing.AbstractListModel implements javax.swing.event.TableColumnModelListener, javax.swing.ComboBoxModelComboBoxModel 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 ofColumnData. 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
Nested Classes Modifier and Type Class Description static interfaceColumnDataComboBoxModel.FilterDetermines what columns are acceptable for this model.
-
Constructor Summary
Constructors Constructor Description ColumnDataComboBoxModel(TopcatModel tcModel, java.lang.Class<?> dataClazz, boolean hasNone)Constructs a model for a given content class, optionally with a blank entry.ColumnDataComboBoxModel(TopcatModel tcModel, java.lang.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
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcolumnAdded(javax.swing.event.TableColumnModelEvent evt)voidcolumnMarginChanged(javax.swing.event.ChangeEvent evt)voidcolumnMoved(javax.swing.event.TableColumnModelEvent evt)voidcolumnRemoved(javax.swing.event.TableColumnModelEvent evt)voidcolumnSelectionChanged(javax.swing.event.ListSelectionEvent evt)static javax.swing.JComboBoxcreateComboBox()Constructs and returns a JComboBox suitable for use with aColumnDataComboBoxModel.static uk.ac.starlink.table.ColumnDatacreateSimpleColumnData(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.ColumnDatagetBestMatchColumnData(uk.ac.starlink.table.ValueInfo info)Attempts to locate and return a member of this model which matches the giveninfo.uk.ac.starlink.table.ColumnDatagetColumnDataAt(int index)Returns the element at a given index as a typed object.java.lang.ObjectgetElementAt(int index)java.lang.ObjectgetSelectedItem()intgetSize()uk.ac.starlink.table.ColumnDatagetUniqueMatchColumnData(uk.ac.starlink.table.ValueInfo info)Attempts to locate and return a member of this model which is the only match for a giveninfo.voidsetSelectedItem(java.lang.Object item)uk.ac.starlink.table.ColumnDatastringToColumnData(java.lang.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
-
-
-
-
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 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, java.lang.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
public ColumnDataComboBoxModel(TopcatModel tcModel, java.lang.Class<?> dataClazz, boolean hasNone)
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 Detail
-
getElementAt
public java.lang.Object getElementAt(int index)
- Specified by:
getElementAtin interfacejavax.swing.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:
getSizein interfacejavax.swing.ListModel
-
getSelectedItem
public java.lang.Object getSelectedItem()
- Specified by:
getSelectedItemin interfacejavax.swing.ComboBoxModel
-
stringToColumnData
public uk.ac.starlink.table.ColumnData stringToColumnData(java.lang.String txt) throws gnu.jel.CompilationExceptionConverts 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- iftxtis not valid
-
setSelectedItem
public void setSelectedItem(java.lang.Object item)
- Specified by:
setSelectedItemin interfacejavax.swing.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 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
public void columnAdded(javax.swing.event.TableColumnModelEvent evt)
- Specified by:
columnAddedin interfacejavax.swing.event.TableColumnModelListener
-
columnRemoved
public void columnRemoved(javax.swing.event.TableColumnModelEvent evt)
- Specified by:
columnRemovedin interfacejavax.swing.event.TableColumnModelListener
-
columnMoved
public void columnMoved(javax.swing.event.TableColumnModelEvent evt)
- Specified by:
columnMovedin interfacejavax.swing.event.TableColumnModelListener
-
columnMarginChanged
public void columnMarginChanged(javax.swing.event.ChangeEvent evt)
- Specified by:
columnMarginChangedin interfacejavax.swing.event.TableColumnModelListener
-
columnSelectionChanged
public void columnSelectionChanged(javax.swing.event.ListSelectionEvent evt)
- Specified by:
columnSelectionChangedin interfacejavax.swing.event.TableColumnModelListener
-
createComboBox
public static javax.swing.JComboBox createComboBox()
Constructs and returns a JComboBox suitable for use with aColumnDataComboBoxModel. 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 modeltcol- column in model- Returns:
- column data object
-
-