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
19 * @param inSize number of fields
21 public EditFieldsTableModel(int inSize)
23 _fieldNames = new String[inSize];
24 _fieldValues = new String[inSize];
25 _valueChanged = new boolean[inSize];
30 * Set the given data in the array
31 * @param inName field name
32 * @param inValue field value
33 * @param inIndex index to place in array
35 public void addFieldInfo(String inName, String inValue, int inIndex)
37 _fieldNames[inIndex] = inName;
38 _fieldValues[inIndex] = inValue;
39 _valueChanged[inIndex] = false;
44 * @see javax.swing.table.TableModel#getColumnCount()
46 public int getColumnCount()
53 * @see javax.swing.table.TableModel#getRowCount()
55 public int getRowCount()
57 return _fieldNames.length;
62 * @see javax.swing.table.TableModel#getValueAt(int, int)
64 public Object getValueAt(int inRowIndex, int inColumnIndex)
66 if (inColumnIndex == 0)
68 return _fieldNames[inRowIndex];
70 else if (inColumnIndex == 1)
72 return _fieldValues[inRowIndex];
74 return Boolean.valueOf(_valueChanged[inRowIndex]);
79 * @return true if cell is editable
81 public boolean isCellEditable(int inRowIndex, int inColumnIndex)
89 * Set the given cell value
90 * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
92 public void setValueAt(Object inValue, int inRowIndex, int inColumnIndex)
99 * @return Class of cell data
101 public Class getColumnClass(int inColumnIndex)
103 if (inColumnIndex <= 1) return String.class;
104 return Boolean.class;
109 * Get the name of the column
111 public String getColumnName(int inColNum)
113 if (inColNum == 0) return I18nManager.getText("dialog.pointedit.table.field");
114 else if (inColNum == 1) return I18nManager.getText("dialog.pointedit.table.value");
115 return I18nManager.getText("dialog.pointedit.table.changed");
120 * Update the value of the given row
121 * @param inRowNum number of row, starting at 0
122 * @param inValue new value
123 * @return true if data updated
125 public boolean updateValue(int inRowNum, String inValue)
127 String currValue = _fieldValues[inRowNum];
128 // ignore empty-to-empty changes
129 if ((currValue == null || currValue.equals("")) && (inValue == null || inValue.equals("")))
133 // ignore changes when strings equal
134 if (currValue == null || inValue == null || !currValue.equals(inValue))
137 _fieldValues[inRowNum] = inValue;
138 _valueChanged[inRowNum] = true;
139 fireTableRowsUpdated(inRowNum, inRowNum);
147 * Get the value at the given index
148 * @param inIndex index of field, starting at 0
149 * @return string value
151 public String getValue(int inIndex)
153 return _fieldValues[inIndex];
157 * Get the changed flag at the given index
158 * @param inIndex index of field, starting at 0
159 * @return true if field changed
161 public boolean getChanged(int inIndex)
163 return _valueChanged[inIndex];