use of com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck in project com.revolsys.open by revolsys.
the class LayerRecordForm method addToolBar.
protected ToolBar addToolBar(final AbstractRecordLayer layer) {
this.toolBar = new ToolBar();
add(this.toolBar, BorderLayout.NORTH);
final RecordDefinition recordDefinition = getRecordDefinition();
final FieldDefinition geometryField = recordDefinition.getGeometryField();
final boolean hasGeometry = geometryField != null;
final EnableCheck editable = new ObjectPropertyEnableCheck(this, "editable");
if (layer != null) {
final MenuFactory menuFactory = MenuFactory.findMenu(layer);
if (menuFactory != null) {
this.toolBar.addButtonTitleIcon("menu", "Layer Menu", "menu", () -> menuFactory.showMenu(layer, this, 10, 10));
}
}
final EnableCheck deletableEnableCheck = editable.and(new ObjectPropertyEnableCheck(this, "deletable"));
this.toolBar.addButton("record", "Delete Record", "table_row_delete", deletableEnableCheck, this::deleteRecord);
// Cut, Copy Paste
this.toolBar.addButton("dnd", "Copy Record", "page_copy", (EnableCheck) null, this::dataTransferCopy);
if (hasGeometry) {
this.toolBar.addButton("dnd", "Copy Geometry", "geometry_copy", (EnableCheck) null, this::copyGeometry);
}
this.toolBar.addButton("dnd", "Paste Record", "paste_plain", editable, this::dataTransferPaste);
if (hasGeometry) {
this.toolBar.addButton("dnd", "Paste Geometry", "geometry_paste", editable, this::pasteGeometry);
}
final EnableCheck canUndo = new ObjectPropertyEnableCheck(this.undoManager, "canUndo");
final EnableCheck canRedo = new ObjectPropertyEnableCheck(this.undoManager, "canRedo");
final EnableCheck modifiedOrDeleted = new ObjectPropertyEnableCheck(this, "modifiedOrDeleted");
this.toolBar.addButton("changes", "Revert Record", "arrow_revert", modifiedOrDeleted, this::revertChanges);
this.toolBar.addButton("changes", "Revert Empty Fields", "field_empty_revert", new ObjectPropertyEnableCheck(this, "hasModifiedEmptyFields"), this::revertEmptyFields);
this.toolBar.addButton("changes", "Undo", "arrow_undo", canUndo, this.undoManager::undo);
this.toolBar.addButton("changes", "Redo", "arrow_redo", canRedo, this.undoManager::redo);
if (hasGeometry) {
this.toolBar.addButtonTitleIcon("zoom", "Zoom to Record", "magnifier_zoom_selected", () -> {
final LayerRecord record = getRecord();
layer.zoomToRecord(record);
});
this.toolBar.addButtonTitleIcon("zoom", "Pan to Record", "pan_selected", () -> {
final LayerRecord record = getRecord();
final MapPanel mapPanel = layer.getMapPanel();
if (mapPanel != null) {
mapPanel.panToRecord(record);
}
});
}
// Geometry manipulation
if (hasGeometry) {
final DataType geometryDataType = geometryField.getDataType();
if (geometryDataType == DataTypes.LINE_STRING || geometryDataType == DataTypes.MULTI_LINE_STRING) {
if (DirectionalFields.getProperty(recordDefinition).hasDirectionalFields()) {
this.toolBar.addButton("geometry", FLIP_RECORD_NAME, FLIP_RECORD_ICON, editable, this::flipRecordOrientation);
this.toolBar.addButton("geometry", FLIP_LINE_ORIENTATION_NAME, FLIP_LINE_ORIENTATION_ICON, editable, this::flipLineOrientation);
this.toolBar.addButton("geometry", FLIP_FIELDS_NAME, FLIP_FIELDS_ICON, editable, this::flipFields);
} else {
this.toolBar.addButton("geometry", "Flip Line Orientation", "flip_line", editable, this::flipLineOrientation);
}
}
}
return this.toolBar;
}
use of com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck in project com.revolsys.open by revolsys.
the class RecordLayerTablePanel method newToolBar.
protected void newToolBar(final Map<String, Object> pluginConfig) {
final ToolBar toolBar = getToolBar();
final RecordDefinition recordDefinition = getRecordDefinition();
final boolean hasGeometry = recordDefinition.hasGeometryField();
final MenuFactory layerMenuFactory = MenuFactory.findMenu(this.layer);
if (layerMenuFactory != null) {
toolBar.addButtonTitleIcon("menu", "Layer Menu", "menu", () -> layerMenuFactory.showMenu(this.layer, this, 10, 10));
}
if (hasGeometry) {
final EnableCheck hasSelectedRecords = new ObjectPropertyEnableCheck(this.layer, "hasSelectedRecords");
toolBar.addButton("layer", "Zoom to Selected", "magnifier_zoom_selected", hasSelectedRecords, this.layer::zoomToSelected);
toolBar.addButton("layer", "Pan to Selected", "pan_selected", hasSelectedRecords, this.layer::panToSelected);
}
final RecordLayerTable table = getTable();
final TableRowCount tableRowCount = new TableRowCount(table);
toolBar.addComponent("count", tableRowCount);
toolBar.addButtonTitleIcon("table", "Refresh", "table_refresh", this.layer::refresh);
toolBar.addButtonTitleIcon("table", "Export Records", "table_save", new ObjectPropertyEnableCheck(tableRowCount, "rowCount", 0, true), () -> actionExportRecords());
this.fieldSetsButton = toolBar.addButtonTitleIcon("table", "Field Sets", "fields_filter", () -> actionShowFieldSetsMenu());
this.fieldFilterPanel = new FieldFilterPanel(this, this.tableModel, pluginConfig);
if (this.fieldFilterPanel.isVisible()) {
toolBar.addComponent("search", this.fieldFilterPanel);
toolBar.addButtonTitleIcon("search", "Advanced Search", "filter_edits", this.fieldFilterPanel::showAdvancedFilter);
final EnableCheck hasFilter = new ObjectPropertyEnableCheck(this.tableModel, "hasFilter");
toolBar.addButton("search", "Clear Search", "filter_delete", hasFilter, this.fieldFilterPanel::clear);
final EnableCheck hasFilterHistory = new ObjectPropertyEnableCheck(this.tableModel, "hasFilterHistory");
toolBar.addButton("search", ConsumerAction.action("Search History", Icons.getIconWithBadge("book", "filter"), hasFilterHistory, (event) -> {
final Object source = event.getSource();
Component component = null;
if (source instanceof Component) {
component = (Component) source;
}
final BaseJPopupMenu menu = new BaseJPopupMenu();
for (final Condition filter : this.tableModel.getFilterHistory()) {
menu.addMenuItem(filter.toString(), () -> this.fieldFilterPanel.setFilter(filter));
}
menu.showMenu(component, 0, 20);
}));
}
// Filter buttons
boolean first = true;
for (final TableRecordsMode fieldFilterMode : this.tableModel.getFieldFilterModes()) {
final String key = fieldFilterMode.getKey();
final String title = fieldFilterMode.getTitle();
final Icon icon = fieldFilterMode.getIcon();
final EnableCheck enableCheck = fieldFilterMode.getEnableCheck();
final JToggleButton button = toolBar.addToggleButton(FILTER_FIELD, -1, null, title, icon, enableCheck, () -> {
if (this.tableModel != null) {
this.tableModel.setTableRecordsMode(fieldFilterMode);
}
});
this.buttonByMode.put(FILTER_FIELD + "_" + key, button);
if (first) {
button.doClick();
first = false;
}
}
if (hasGeometry) {
final JToggleButton showAllGeometries = addGeometryFilterToggleButton(toolBar, -1, "Show All Records ", "world_filter", "all", null);
showAllGeometries.doClick();
addGeometryFilterToggleButton(toolBar, -1, "Show Records on Map", "map_filter", "boundingBox", new ObjectPropertyEnableCheck(this.tableModel, "filterByBoundingBoxSupported"));
}
}
use of com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck in project com.revolsys.open by revolsys.
the class MapPanel method newToolBarUndoButtons.
private void newToolBarUndoButtons() {
final EnableCheck canUndo = new ObjectPropertyEnableCheck(this.undoManager, "canUndo");
final EnableCheck canRedo = new ObjectPropertyEnableCheck(this.undoManager, "canRedo");
this.toolBar.addButton("undo", "Undo", "arrow_undo", canUndo, this.undoManager::undo);
this.toolBar.addButton("undo", "Redo", "arrow_redo", canRedo, this.undoManager::redo);
}
use of com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck in project com.revolsys.open by revolsys.
the class ProjectFrame method newMenuTools.
protected MenuFactory newMenuTools() {
final MenuFactory tools = new MenuFactory("Tools");
final MapPanel map = getMapPanel();
final MeasureOverlay measureOverlay = map.getMapOverlay(MeasureOverlay.class);
tools.addCheckboxMenuItem("map", new RunnableAction("Measure Length", Icons.getIcon("ruler_line"), () -> measureOverlay.toggleMeasureMode(DataTypes.LINE_STRING)), new ObjectPropertyEnableCheck(measureOverlay, "measureDataType", DataTypes.LINE_STRING));
tools.addCheckboxMenuItem("map", new RunnableAction("Measure Area", Icons.getIcon("ruler_polygon"), () -> measureOverlay.toggleMeasureMode(DataTypes.POLYGON)), new ObjectPropertyEnableCheck(measureOverlay, "measureDataType", DataTypes.POLYGON));
tools.addMenuItem("script", "Run Script...", "script_go", this::actionRunScript);
return tools;
}
Aggregations