Search in sources :

Example 61 with RecordDefinition

use of com.revolsys.record.schema.RecordDefinition 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 62 with RecordDefinition

use of com.revolsys.record.schema.RecordDefinition 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 63 with RecordDefinition

use of com.revolsys.record.schema.RecordDefinition in project com.revolsys.open by revolsys.

the class LayerRecordTableModel method isCellEditable.

@Override
public boolean isCellEditable(final int rowIndex, final int columnIndex) {
    if (columnIndex == 2) {
        if (this.form.get().isEditable()) {
            final String fieldName = getColumnFieldName(rowIndex);
            final RecordDefinition recordDefinition = getRecordDefinition();
            final FieldDefinition idField = recordDefinition.getIdField();
            if (idField != null) {
                if (recordDefinition.isIdField(fieldName)) {
                    if (this.record != null && this.record.getState() == RecordState.NEW) {
                        if (!Number.class.isAssignableFrom(idField.getTypeClass())) {
                            return true;
                        }
                    }
                    return false;
                }
            }
            if (recordDefinition.getGeometryFieldNames().contains(fieldName)) {
                return false;
            } else {
                return this.form.get().isEditable(fieldName);
            }
        } else {
            return false;
        }
    } else {
        return false;
    }
}
Also used : FieldDefinition(com.revolsys.record.schema.FieldDefinition) RecordDefinition(com.revolsys.record.schema.RecordDefinition)

Example 64 with RecordDefinition

use of com.revolsys.record.schema.RecordDefinition in project com.revolsys.open by revolsys.

the class RecordLayerFields method newCompactField.

public static <T extends Field> T newCompactField(final AbstractRecordLayer layer, final String fieldName, final boolean editable) {
    T field = newField((ObjectWithProperties) layer, "fieldFactories", fieldName, editable);
    if (field == null) {
        final RecordDefinition recordDefinition = layer.getRecordDefinition();
        field = newField(recordDefinition, "fieldFactories", fieldName, editable);
        if (field == null) {
            field = SwingUtil.newField(recordDefinition, fieldName, editable);
        }
    }
    field.setEditable(editable);
    return field;
}
Also used : RecordDefinition(com.revolsys.record.schema.RecordDefinition)

Example 65 with RecordDefinition

use of com.revolsys.record.schema.RecordDefinition in project com.revolsys.open by revolsys.

the class RecordLayerTableModel method newTable.

public static RecordLayerTable newTable(final AbstractRecordLayer layer, final Collection<String> fieldNames) {
    final RecordDefinition recordDefinition = layer.getRecordDefinition();
    if (recordDefinition == null) {
        return null;
    } else {
        final RecordLayerTableModel model = new RecordLayerTableModel(layer, fieldNames);
        final RecordLayerTable table = new RecordLayerTable(model);
        model.selectionChangedListener = EventQueue.addPropertyChange(layer, "hasSelectedRecords", () -> selectionChanged(table, model));
        return table;
    }
}
Also used : RecordLayerTable(com.revolsys.swing.map.layer.record.table.RecordLayerTable) RecordDefinition(com.revolsys.record.schema.RecordDefinition)

Aggregations

RecordDefinition (com.revolsys.record.schema.RecordDefinition)189 FieldDefinition (com.revolsys.record.schema.FieldDefinition)38 Record (com.revolsys.record.Record)34 Geometry (com.revolsys.geometry.model.Geometry)20 CodeTable (com.revolsys.record.code.CodeTable)19 Query (com.revolsys.record.query.Query)18 LineString (com.revolsys.geometry.model.LineString)17 GeometryFactory (com.revolsys.geometry.model.GeometryFactory)16 PathName (com.revolsys.io.PathName)13 ArrayList (java.util.ArrayList)12 DataType (com.revolsys.datatype.DataType)11 Identifier (com.revolsys.identifier.Identifier)11 RecordReader (com.revolsys.record.io.RecordReader)11 RecordStore (com.revolsys.record.schema.RecordStore)11 HashMap (java.util.HashMap)9 VectorOfWString (com.revolsys.gis.esri.gdb.file.capi.swig.VectorOfWString)8 ArrayRecord (com.revolsys.record.ArrayRecord)8 RecordDefinitionImpl (com.revolsys.record.schema.RecordDefinitionImpl)6 Table (com.revolsys.gis.esri.gdb.file.capi.swig.Table)5 RecordWriter (com.revolsys.record.io.RecordWriter)5