Search in sources :

Example 1 with ObjectPropertyEnableCheck

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;
}
Also used : ObjectPropertyEnableCheck(com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck) MapPanel(com.revolsys.swing.map.MapPanel) MenuFactory(com.revolsys.swing.menu.MenuFactory) FieldDefinition(com.revolsys.record.schema.FieldDefinition) ToolBar(com.revolsys.swing.toolbar.ToolBar) DataType(com.revolsys.datatype.DataType) EnableCheck(com.revolsys.swing.action.enablecheck.EnableCheck) ObjectPropertyEnableCheck(com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck) LayerRecord(com.revolsys.swing.map.layer.record.LayerRecord) RecordDefinition(com.revolsys.record.schema.RecordDefinition)

Example 2 with ObjectPropertyEnableCheck

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"));
    }
}
Also used : FieldCalculator(com.revolsys.swing.map.layer.record.component.FieldCalculator) Icons(com.revolsys.swing.Icons) EnableCheck(com.revolsys.swing.action.enablecheck.EnableCheck) JToggleButton(javax.swing.JToggleButton) Property(com.revolsys.util.Property) JCheckBoxMenuItem(javax.swing.JCheckBoxMenuItem) RecordLayerTableModel(com.revolsys.swing.map.layer.record.table.model.RecordLayerTableModel) Map(java.util.Map) MenuFactory(com.revolsys.swing.menu.MenuFactory) AbstractRecordLayer(com.revolsys.swing.map.layer.record.AbstractRecordLayer) LinkedHashMapEx(com.revolsys.collection.map.LinkedHashMapEx) Condition(com.revolsys.record.query.Condition) Font(java.awt.Font) Maps(com.revolsys.collection.map.Maps) BorderFactory(javax.swing.BorderFactory) Icon(javax.swing.Icon) RecordRowTable(com.revolsys.swing.table.record.RecordRowTable) Component(java.awt.Component) FieldNamesSetPanel(com.revolsys.swing.map.form.FieldNamesSetPanel) PropertyChangeListener(java.beans.PropertyChangeListener) LayerRecord(com.revolsys.swing.map.layer.record.LayerRecord) SetRecordsFieldValue(com.revolsys.swing.map.layer.record.component.SetRecordsFieldValue) JTable(javax.swing.JTable) MapSerializer(com.revolsys.io.map.MapSerializer) FieldFilterPanel(com.revolsys.swing.map.layer.record.component.FieldFilterPanel) TableRecordsMode(com.revolsys.swing.map.layer.record.table.model.TableRecordsMode) JPanel(javax.swing.JPanel) AbstractLayer(com.revolsys.swing.map.layer.AbstractLayer) RecordTableCellEditor(com.revolsys.swing.table.record.editor.RecordTableCellEditor) ToolBar(com.revolsys.swing.toolbar.ToolBar) RecordDefinition(com.revolsys.record.schema.RecordDefinition) LayerRecordMenu(com.revolsys.swing.map.layer.record.LayerRecordMenu) HashMap(java.util.HashMap) BaseJPopupMenu(com.revolsys.swing.menu.BaseJPopupMenu) SwingConstants(javax.swing.SwingConstants) VerticalLayout(org.jdesktop.swingx.VerticalLayout) SwingUtilities(javax.swing.SwingUtilities) TableCellEditor(javax.swing.table.TableCellEditor) JMenuItem(javax.swing.JMenuItem) ObjectPropertyEnableCheck(com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck) RunnableAction(com.revolsys.swing.action.RunnableAction) MapEx(com.revolsys.collection.map.MapEx) ConsumerAction(com.revolsys.swing.action.ConsumerAction) PropertyChangeEvent(java.beans.PropertyChangeEvent) MapPanel(com.revolsys.swing.map.MapPanel) JButton(javax.swing.JButton) TablePanel(com.revolsys.swing.table.TablePanel) JPopupMenu(javax.swing.JPopupMenu) TableRowCount(com.revolsys.swing.table.TableRowCount) MouseEvent(java.awt.event.MouseEvent) JLabel(javax.swing.JLabel) Condition(com.revolsys.record.query.Condition) ObjectPropertyEnableCheck(com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck) EnableCheck(com.revolsys.swing.action.enablecheck.EnableCheck) ObjectPropertyEnableCheck(com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck) TableRecordsMode(com.revolsys.swing.map.layer.record.table.model.TableRecordsMode) RecordDefinition(com.revolsys.record.schema.RecordDefinition) MenuFactory(com.revolsys.swing.menu.MenuFactory) JToggleButton(javax.swing.JToggleButton) ToolBar(com.revolsys.swing.toolbar.ToolBar) BaseJPopupMenu(com.revolsys.swing.menu.BaseJPopupMenu) Icon(javax.swing.Icon) Component(java.awt.Component) TableRowCount(com.revolsys.swing.table.TableRowCount) FieldFilterPanel(com.revolsys.swing.map.layer.record.component.FieldFilterPanel)

Example 3 with ObjectPropertyEnableCheck

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);
}
Also used : ObjectPropertyEnableCheck(com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck) EnableCheck(com.revolsys.swing.action.enablecheck.EnableCheck) ObjectPropertyEnableCheck(com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck)

Example 4 with ObjectPropertyEnableCheck

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;
}
Also used : ObjectPropertyEnableCheck(com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck) MeasureOverlay(com.revolsys.swing.map.overlay.MeasureOverlay) MenuFactory(com.revolsys.swing.menu.MenuFactory) RunnableAction(com.revolsys.swing.action.RunnableAction)

Aggregations

ObjectPropertyEnableCheck (com.revolsys.swing.action.enablecheck.ObjectPropertyEnableCheck)4 EnableCheck (com.revolsys.swing.action.enablecheck.EnableCheck)3 MenuFactory (com.revolsys.swing.menu.MenuFactory)3 RecordDefinition (com.revolsys.record.schema.RecordDefinition)2 RunnableAction (com.revolsys.swing.action.RunnableAction)2 MapPanel (com.revolsys.swing.map.MapPanel)2 LayerRecord (com.revolsys.swing.map.layer.record.LayerRecord)2 ToolBar (com.revolsys.swing.toolbar.ToolBar)2 LinkedHashMapEx (com.revolsys.collection.map.LinkedHashMapEx)1 MapEx (com.revolsys.collection.map.MapEx)1 Maps (com.revolsys.collection.map.Maps)1 DataType (com.revolsys.datatype.DataType)1 MapSerializer (com.revolsys.io.map.MapSerializer)1 Condition (com.revolsys.record.query.Condition)1 FieldDefinition (com.revolsys.record.schema.FieldDefinition)1 Icons (com.revolsys.swing.Icons)1 ConsumerAction (com.revolsys.swing.action.ConsumerAction)1 FieldNamesSetPanel (com.revolsys.swing.map.form.FieldNamesSetPanel)1 AbstractLayer (com.revolsys.swing.map.layer.AbstractLayer)1 AbstractRecordLayer (com.revolsys.swing.map.layer.record.AbstractRecordLayer)1