+++ /dev/null
-package tim.prune.correlate;
-
-import java.util.ArrayList;
-import java.util.TimeZone;
-
-import javax.swing.table.AbstractTableModel;
-
-import tim.prune.I18nManager;
-import tim.prune.config.TimezoneHelper;
-import tim.prune.data.Unit;
-import tim.prune.data.UnitSetLibrary;
-import tim.prune.gui.DisplayUtils;
-
-/**
- * Class to act as the table model for the correlation preview table
- */
-public class MediaPreviewTableModel extends AbstractTableModel
-{
- /** Text for first column heading */
- private String _firstColumnHeading = null;
- /** ArrayList containing TableRow objects */
- private ArrayList<MediaPreviewTableRow> _list = new ArrayList<MediaPreviewTableRow>();
- /** Distance units */
- private Unit _distanceUnits = UnitSetLibrary.UNITS_KILOMETRES;
- /** Current timezone */
- private TimeZone _timezone = null;
-
-
- /**
- * Constructor
- * @param inFirstColumnKey key for first column heading
- */
- public MediaPreviewTableModel(String inFirstColumnKey)
- {
- _firstColumnHeading = I18nManager.getText(inFirstColumnKey);
- _timezone = TimezoneHelper.getSelectedTimezone();
- }
-
- /**
- * @return the column count, always 5
- */
- public int getColumnCount() {
- return 5;
- }
-
- /**
- * Get the name of the column
- * @param inColNum column number
- * @return column name
- */
- public String getColumnName(int inColNum)
- {
- if (inColNum == 0) return _firstColumnHeading;
- else if (inColNum == 1) return I18nManager.getText("fieldname.timestamp");
- else if (inColNum == 2) return I18nManager.getText("dialog.correlate.select.timediff");
- else if (inColNum == 3) return I18nManager.getText("fieldname.distance");
- return I18nManager.getText("dialog.correlate.options.correlate");
- }
-
-
- /**
- * @return the row count
- */
- public int getRowCount()
- {
- return _list.size();
- }
-
-
- /**
- * Get the selected row from the table
- * @param inRowIndex row index
- * @return table row object
- */
- public MediaPreviewTableRow getRow(int inRowIndex)
- {
- return _list.get(inRowIndex);
- }
-
-
- /**
- * Get the value of the specified cell
- * @param inRowIndex row index
- * @param inColumnIndex column index
- * @return value of specified cell
- */
- public Object getValueAt(int inRowIndex, int inColumnIndex)
- {
- MediaPreviewTableRow row = _list.get(inRowIndex);
- if (inColumnIndex == 0) return row.getMedia().getName();
- else if (inColumnIndex == 1) {
- if (row.getMedia().hasTimestamp()) {
- return row.getMedia().getTimestamp().getText(_timezone);
- }
- return ""; // media doesn't have a timestamp
- }
- else if (inColumnIndex == 2) {
- if (row.getPointPair().isValid()) {
- return row.getTimeDiff().getDescription();
- }
- return "";
- }
- else if (inColumnIndex == 3) {
- if (row.getPointPair().isValid()) {
- return DisplayUtils.formatOneDp(row.getDistance(_distanceUnits));
- }
- return "";
- }
- return row.getCorrelateFlag();
- }
-
-
- /**
- * @param inUnits the distance units to use
- */
- public void setDistanceUnits(Unit inUnits)
- {
- _distanceUnits = inUnits;
- }
-
-
- /**
- * Clear the list
- */
- public void reset()
- {
- _list.clear();
- }
-
-
- /**
- * Add a row to the list
- * @param inRow row to add
- */
- public void addRow(MediaPreviewTableRow inRow)
- {
- _list.add(inRow);
- }
-
-
- /**
- * Get the class of objects in the given column
- * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
- */
- public Class<?> getColumnClass(int inColumnIndex)
- {
- if (inColumnIndex == 4) {return Boolean.class;}
- return super.getColumnClass(inColumnIndex);
- }
-
-
- /**
- * Get whether the given cell is editable
- * @see javax.swing.table.AbstractTableModel#isCellEditable(int, int)
- */
- public boolean isCellEditable(int inRowIndex, int inColumnIndex)
- {
- if (inColumnIndex == 4) {return true;}
- return super.isCellEditable(inRowIndex, inColumnIndex);
- }
-
-
- /**
- * @return true if any of the correlate flags are on
- */
- public boolean hasAnySelected()
- {
- for (int i=0; i<getRowCount(); i++)
- {
- if (getRow(i).getCorrelateFlag().booleanValue()) {
- return true;
- }
- }
- // None switched on
- return false;
- }
-
-
- /**
- * Set the value at the given table cell
- * @see javax.swing.table.AbstractTableModel#setValueAt(java.lang.Object, int, int)
- */
- public void setValueAt(Object inValue, int inRowIndex, int inColumnIndex)
- {
- // can only edit the correlate column
- if (inColumnIndex == 4)
- {
- MediaPreviewTableRow row = getRow(inRowIndex);
- // Don't allow setting of items which can't be correlated
- if (row.getPointPair().isValid()) {
- row.setCorrelateFlag(((Boolean) inValue).booleanValue());
- }
- }
- }
-}