package com.revolsys.swing.map.layer.record.table.model; import java.util.List; import javax.swing.Icon; import javax.swing.ListSelectionModel; import com.revolsys.swing.Icons; import com.revolsys.swing.action.enablecheck.EnableCheck; import com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck; import com.revolsys.swing.map.layer.record.AbstractRecordLayer; import com.revolsys.swing.map.layer.record.LayerRecord; import com.revolsys.util.Property; public class ModeSelected extends ModeAbstractCached { private final EnableCheck enableCheck; public ModeSelected(final RecordLayerTableModel model) { super(RecordLayerTableModel.MODE_RECORDS_SELECTED, model); final AbstractRecordLayer layer = getLayer(); this.enableCheck = new ObjectPropertyEnableCheck(layer, "hasSelectedRecords"); } @Override public void activate() { final AbstractRecordLayer layer = getLayer(); addListeners( // Property.addListenerRunnable(layer, AbstractRecordLayer.RECORDS_SELECTED, this::refresh) // ); super.activate(); } @Override protected boolean canAddCachedRecord(final LayerRecord record) { final AbstractRecordLayer layer = getLayer(); if (layer.isSelected(record)) { return true; } else { return false; } } @Override public void deactivate() { super.deactivate(); final AbstractRecordLayer layer = getLayer(); layer.clearHighlightedRecords(); } @Override public EnableCheck getEnableCheck() { return this.enableCheck; } @Override public Icon getIcon() { return Icons.getIcon("filter_selected"); } @Override protected List<LayerRecord> getRecordsForCache() { final AbstractRecordLayer layer = getLayer(); final List<LayerRecord> selectedRecords = layer.getSelectedRecords(); return selectedRecords; } @Override public String getTitle() { return "Show Only Selected Records"; } @Override protected ListSelectionModel newSelectionModel(final RecordLayerTableModel tableModel) { return new RecordLayerHighlightedListSelectionModel(tableModel); } @Override protected void recordUpdated(final LayerRecord record) { // final AbstractRecordLayer layer = getLayer(); // if (layer.isSelected(record)) { // final int index = indexOf(record); // if (index != -1) { // fireRecordUpdated(index); // } // } } }