package com.revolsys.swing.map.layer.record.table.model; import java.util.Arrays; import java.util.Collection; import com.revolsys.record.Record; import com.revolsys.swing.EventQueue; import com.revolsys.swing.map.layer.record.ListRecordLayer; import com.revolsys.swing.map.layer.record.table.RecordLayerTable; public class ListRecordLayerTableModel extends RecordLayerTableModel { private static final long serialVersionUID = 1L; public static RecordLayerTable newTable(final ListRecordLayer layer) { return newTable(layer, layer.getFieldNamesSet()); } public static RecordLayerTable newTable(final ListRecordLayer layer, final Collection<String> fieldNames) { final RecordLayerTableModel model = new ListRecordLayerTableModel(layer, fieldNames); final RecordLayerTable table = new RecordLayerTable(model); table.setSortable(true); EventQueue.addPropertyChange(layer, "hasSelectedRecords", () -> selectionChanged(table, model)); return table; } public static RecordLayerTable newTable(final ListRecordLayer layer, final String... fieldNames) { return newTable(layer, Arrays.asList(fieldNames)); } public ListRecordLayerTableModel(final ListRecordLayer layer, final Collection<String> fieldNames) { super(layer, fieldNames); addFieldFilterMode(new ModeAllList(this)); } @Override public void setValueAt(final Object value, final int rowIndex, final int columnIndex) { final Record record = getRecord(rowIndex); if (record != null) { final String name = getColumnFieldName(columnIndex); final Object oldValue = record.getValueByPath(name); record.setValue(name, value); firePropertyChange(record, name, oldValue, value); } } }