1 package tim.prune.function.deletebydate;
3 import javax.swing.table.AbstractTableModel;
4 import tim.prune.I18nManager;
7 * Table model for selecting which dates to delete
9 public class DeletionTableModel extends AbstractTableModel
11 /** info list, one for each row of table */
12 private DateInfoList _infoList = null;
14 /** Column heading for date */
15 private static final String COLUMN_HEADING_DATE = I18nManager.getText("fieldname.date");
16 /** Column heading for number of points */
17 private static final String COLUMN_HEADING_NUMPOINTS = I18nManager.getText("details.track.points");
18 /** Column heading for keep */
19 private static final String COLUMN_HEADING_KEEP = I18nManager.getText("dialog.deletebydate.column.keep");
20 /** Column heading for delete */
21 private static final String COLUMN_HEADING_DELETE = I18nManager.getText("dialog.deletebydate.column.delete");
26 * @param inList date info list from function
28 public DeletionTableModel(DateInfoList inList)
34 * @return column count
36 public int getColumnCount()
38 return 4; // always fixed (date, numpoints, keep, delete)
44 public int getRowCount()
46 if (_infoList == null) {return 0;} // shouldn't happen
47 return _infoList.getNumEntries();
51 * Get the name of the column
52 * @param inColNum column number
55 public String getColumnName(int inColNum)
57 if (inColNum == 0) return COLUMN_HEADING_DATE;
58 else if (inColNum == 1) return COLUMN_HEADING_NUMPOINTS;
59 else if (inColNum == 2) return COLUMN_HEADING_KEEP;
60 else if (inColNum == 3) return COLUMN_HEADING_DELETE;
61 return "unknown column!";
65 * Get the class of objects in the given column
66 * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
68 public Class<?> getColumnClass(int inColumnIndex)
70 if (inColumnIndex == 1) {return Integer.class;}
71 if (inColumnIndex > 1) {return Boolean.class;}
72 return super.getColumnClass(inColumnIndex);
76 * Get whether the given cell is editable
77 * @see javax.swing.table.AbstractTableModel#isCellEditable(int, int)
79 public boolean isCellEditable(int inRowIndex, int inColumnIndex)
81 return (inColumnIndex > 1);
85 * Set the value at the given table cell
86 * @see javax.swing.table.AbstractTableModel#setValueAt(java.lang.Object, int, int)
88 public void setValueAt(Object inValue, int inRowIndex, int inColumnIndex)
90 // can only edit the keep and delete columns
91 final boolean isKeep = (inColumnIndex == 2);
92 final boolean isDelete = (inColumnIndex == 3);
93 // ignore all events for other columns
94 if (isKeep || isDelete)
97 boolean setFlag = ((Boolean) inValue).booleanValue();
100 _infoList.getDateInfo(inRowIndex).setDeleteFlag(isDelete);
101 // make sure the other cell (keep or delete) on the same row is updated too
102 fireTableCellUpdated(inRowIndex, 5 - inColumnIndex);
105 catch (ClassCastException cce) {}
110 * @return cell contents at the given row, column index
112 public Object getValueAt(int inRowIndex, int inColIndex)
115 DateInfo info = _infoList.getDateInfo(inRowIndex);
121 if (info.isDateless()) {
122 return I18nManager.getText("dialog.deletebydate.nodate");
124 return info.getString();
125 case 1: // number of points
126 return info.getPointCount();
128 return !info.getDeleteFlag();
130 return info.getDeleteFlag();
134 catch (IndexOutOfBoundsException obe) {} // ignore, fallthrough