package com.revolsys.swing.table.record.model;
import java.util.Map;
import javax.swing.table.JTableHeader;
import com.revolsys.record.Record;
import com.revolsys.swing.table.BaseJTable;
public class SingleRecordTableModel extends AbstractSingleRecordTableModel {
private static final long serialVersionUID = 1L;
public static BaseJTable newTable(final Record object, final boolean editable) {
final SingleRecordTableModel model = new SingleRecordTableModel(object, editable);
final BaseJTable table = newTable(model);
final JTableHeader tableHeader = table.getTableHeader();
tableHeader.setReorderingAllowed(false);
return table;
}
private Record record;
public SingleRecordTableModel(final Record object, final boolean editable) {
super(object.getRecordDefinition(), editable);
this.record = object;
}
@SuppressWarnings("unchecked")
@Override
public <V extends Map<String, Object>> V getMap(final int columnIndex) {
if (columnIndex == 2) {
return (V)this.record;
} else {
return null;
}
}
public Record getObject() {
return this.record;
}
@Override
public Object getObjectValue(final int rowIndex, final int columnIndex) {
if (this.record == null) {
return "\u2026";
} else {
final String fieldName = getColumnFieldName(rowIndex);
return this.record.getValue(fieldName);
}
}
public void setObject(final Record object) {
if (object != this.record) {
setRecordDefinition(object.getRecordDefinition());
this.record = object;
fireTableDataChanged();
}
}
@Override
protected Object setObjectValue(final String fieldName, final Object value) {
final Object oldValue = this.record.getValue(fieldName);
this.record.setValue(fieldName, value);
return oldValue;
}
}