- Added the ability to only display a subset of fields.
- Renamed the methods for manipulating specific elements of the list of objects being edited to have the suffix "Datum" instead of "Data". - Added addDatum() and another version of removeDatum(). git-svn-id: https://samskivert.googlecode.com/svn/trunk@1526 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -120,10 +120,47 @@ public class ObjectEditorTable extends JTable
|
|||||||
*/
|
*/
|
||||||
public ObjectEditorTable (Class protoClass, String[] editableFields,
|
public ObjectEditorTable (Class protoClass, String[] editableFields,
|
||||||
FieldInterpreter interp)
|
FieldInterpreter interp)
|
||||||
|
{
|
||||||
|
this(protoClass, editableFields, interp, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a table to display and edit the specified class.
|
||||||
|
*
|
||||||
|
* @param protoClass the Class of the data that will be displayed.
|
||||||
|
* @param editableFields the names of the fields that are editable.
|
||||||
|
* @param interp The {@link FieldInterpreter} to use.
|
||||||
|
* @param displayFields the fields to display, or null to display all.
|
||||||
|
*/
|
||||||
|
public ObjectEditorTable (Class protoClass, String[] editableFields,
|
||||||
|
FieldInterpreter interp, String[] displayFields)
|
||||||
{
|
{
|
||||||
_interp = (interp != null) ? interp : new FieldInterpreter();
|
_interp = (interp != null) ? interp : new FieldInterpreter();
|
||||||
|
|
||||||
_fields = ClassUtil.getFields(protoClass);
|
// figure out which fields we're going to display
|
||||||
|
Field[] fields = ClassUtil.getFields(protoClass);
|
||||||
|
if (displayFields != null) {
|
||||||
|
_fields = new Field[displayFields.length];
|
||||||
|
for (int ii=0; ii < displayFields.length; ii++) {
|
||||||
|
for (int jj=0; jj < fields.length; jj++) {
|
||||||
|
if (displayFields[ii].equals(fields[jj].getName())) {
|
||||||
|
_fields[ii] = fields[jj];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_fields[ii] == null) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Field not found in prototype class! " +
|
||||||
|
"[class=" + protoClass +
|
||||||
|
", field=" + displayFields[ii] + "].");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
_fields = fields; // use all the fields
|
||||||
|
}
|
||||||
|
|
||||||
|
// figure out which fields are editable
|
||||||
for (int ii=0, nn=_fields.length; ii < nn; ii++) {
|
for (int ii=0, nn=_fields.length; ii < nn; ii++) {
|
||||||
if (ListUtil.contains(editableFields, _fields[ii].getName())) {
|
if (ListUtil.contains(editableFields, _fields[ii].getName())) {
|
||||||
_editable.set(ii);
|
_editable.set(ii);
|
||||||
@@ -164,10 +201,18 @@ public class ObjectEditorTable extends JTable
|
|||||||
_model.fireTableDataChanged();
|
_model.fireTableDataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the specified element to the end of the data set.
|
||||||
|
*/
|
||||||
|
public void addDatum (Object element)
|
||||||
|
{
|
||||||
|
insertDatum(element, _data.size());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Insert the specified element at the specified row.
|
* Insert the specified element at the specified row.
|
||||||
*/
|
*/
|
||||||
public void insertData (Object element, int row)
|
public void insertDatum (Object element, int row)
|
||||||
{
|
{
|
||||||
_data.add(row, element);
|
_data.add(row, element);
|
||||||
_model.fireTableRowsInserted(row, row);
|
_model.fireTableRowsInserted(row, row);
|
||||||
@@ -176,16 +221,27 @@ public class ObjectEditorTable extends JTable
|
|||||||
/**
|
/**
|
||||||
* Change the value of the specified row.
|
* Change the value of the specified row.
|
||||||
*/
|
*/
|
||||||
public void updateData (Object element, int row)
|
public void updateDatum (Object element, int row)
|
||||||
{
|
{
|
||||||
_data.set(row, element);
|
_data.set(row, element);
|
||||||
_model.fireTableRowsUpdated(row, row);
|
_model.fireTableRowsUpdated(row, row);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified element from the set of data.
|
||||||
|
*/
|
||||||
|
public void removeDatum (Object element)
|
||||||
|
{
|
||||||
|
int dex = _data.indexOf(element);
|
||||||
|
if (dex != -1) {
|
||||||
|
removeDatum(dex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the specified row.
|
* Remove the specified row.
|
||||||
*/
|
*/
|
||||||
public void removeData (int row)
|
public void removeDatum (int row)
|
||||||
{
|
{
|
||||||
_data.remove(row);
|
_data.remove(row);
|
||||||
_model.fireTableRowsDeleted(row, row);
|
_model.fireTableRowsDeleted(row, row);
|
||||||
|
|||||||
Reference in New Issue
Block a user