1 package tim.prune.edit;
3 import javax.swing.table.AbstractTableModel;
5 import tim.prune.I18nManager;
8 * Class to hold table model information for edit dialog
10 public class EditFieldsTableModel extends AbstractTableModel
12 private String[] _fieldNames = null;
13 private String[] _fieldValues = null;
14 private boolean[] _valueChanged = null;
18 * Constructor giving list size
20 public EditFieldsTableModel(int inSize)
22 _fieldNames = new String[inSize];
23 _fieldValues = new String[inSize];
24 _valueChanged = new boolean[inSize];
29 * Set the given data in the array
30 * @param inName field name
31 * @param inValue field value
32 * @param inIndex index to place in array
34 public void addFieldInfo(String inName, String inValue, int inIndex)
36 _fieldNames[inIndex] = inName;
37 _fieldValues[inIndex] = inValue;
38 _valueChanged[inIndex] = false;
43 * @see javax.swing.table.TableModel#getColumnCount()
45 public int getColumnCount()
52 * @see javax.swing.table.TableModel#getRowCount()
54 public int getRowCount()
56 return _fieldNames.length;
61 * @see javax.swing.table.TableModel#getValueAt(int, int)
63 public Object getValueAt(int inRowIndex, int inColumnIndex)
65 if (inColumnIndex == 0)
67 return _fieldNames[inRowIndex];
69 else if (inColumnIndex == 1)
71 return _fieldValues[inRowIndex];
73 return new Boolean(_valueChanged[inRowIndex]);
78 * @return true if cell is editable
80 public boolean isCellEditable(int inRowIndex, int inColumnIndex)
88 * Set the given cell value
89 * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
91 public void setValueAt(Object inValue, int inRowIndex, int inColumnIndex)
98 * @return Class of cell data
100 public Class getColumnClass(int inColumnIndex)
102 if (inColumnIndex <= 1) return String.class;
103 return Boolean.class;
108 * Get the name of the column
110 public String getColumnName(int inColNum)
112 if (inColNum == 0) return I18nManager.getText("dialog.pointedit.table.field");
113 else if (inColNum == 1) return I18nManager.getText("dialog.pointedit.table.value");
114 return I18nManager.getText("dialog.pointedit.table.changed");
119 * Update the value of the given row
120 * @param inRowNum number of row, starting at 0
121 * @param inValue new value
122 * @return true if data updated
124 public boolean updateValue(int inRowNum, String inValue)
126 String currValue = _fieldValues[inRowNum];
127 // ignore empty-to-empty changes
128 if ((currValue == null || currValue.equals("")) && (inValue == null || inValue.equals("")))
132 // ignore changes when strings equal
133 if (currValue == null || inValue == null || !currValue.equals(inValue))
136 _fieldValues[inRowNum] = inValue;
137 _valueChanged[inRowNum] = true;
138 fireTableRowsUpdated(inRowNum, inRowNum);
146 * Get the value at the given index
147 * @param inIndex index of field, starting at 0
148 * @return string value
150 public String getValue(int inIndex)
152 return _fieldValues[inIndex];
156 * Get the changed flag at the given index
157 * @param inIndex index of field, starting at 0
158 * @return true if field changed
160 public boolean getChanged(int inIndex)
162 return _valueChanged[inIndex];