Search in sources :

Example 81 with TableColumn

use of javafx.scene.control.TableColumn in project Gargoyle by callakrsos.

the class BaseColumnMapper method generateTableColumns.

/**
	 * 컬럼 제너레이터
	 *
	 * @Date 2015. 10. 8.
	 * @param classType
	 * @return
	 * @User KYJ
	 */
@Override
public TableColumn<T, ?> generateTableColumns(Class<?> classType, String columnName, IOptions options) {
    TableColumn tableColumn = new TableColumn<>();
    // 2015.11.18 커스텀 컬럼은 cellFactory를 가져다 쓰지않음.
    tableColumn.setCellFactory(cell -> {
        TextFieldTableCell<T, Object> textFieldTableCell = new TextFieldTableCell<>();
        textFieldTableCell.setConverter(converter(classType));
        return textFieldTableCell;
    });
    // 2015.11.18 커스텀 컬럼값을 정의한경우 대체.
    TableColumn<T, ?> customTableColumn = options.customTableColumn(columnName);
    if (customTableColumn != null) {
        tableColumn = customTableColumn;
    }
    // 2015.11.18 커스텀 컬럼은 ValueFactory는 기본적으로 사용
    PropertyValueFactory<T, ?> value = new PropertyValueFactory<>(columnName);
    tableColumn.setCellValueFactory(value);
    tableColumn.setId(columnName);
    // 컬럼의 속성을 정의
    setColumnProperty(tableColumn, columnName, options);
    tableColumn.setResizable(true);
    tableColumn.setEditable(false);
    tableColumn.setVisible(options.visible(columnName));
    return tableColumn;
}
Also used : TextFieldTableCell(javafx.scene.control.cell.TextFieldTableCell) PropertyValueFactory(javafx.scene.control.cell.PropertyValueFactory) TableColumn(javafx.scene.control.TableColumn)

Example 82 with TableColumn

use of javafx.scene.control.TableColumn in project Gargoyle by callakrsos.

the class MacroControl method tbResultOnKeyReleased.

public void tbResultOnKeyReleased() {
    Skin<?> skin = this.getSkin();
    if (!(skin instanceof MacroBaseSkin)) {
        return;
    }
    MacroBaseSkin mskin = (MacroBaseSkin) skin;
    TableView<Map<String, String>> tbResult = mskin.getTbResult();
    int type = 1;
    ObservableList<TablePosition> selectedCells = tbResult.getSelectionModel().getSelectedCells();
    TablePosition tablePosition = selectedCells.get(0);
    TableColumn tableColumn = tablePosition.getTableColumn();
    int row = tablePosition.getRow();
    int col = tbResult.getColumns().indexOf(tableColumn);
    switch(type) {
        case 1:
            StringBuilder sb = new StringBuilder();
            for (TablePosition cell : selectedCells) {
                // 행변경시
                if (row != cell.getRow()) {
                    sb.append("\n");
                    row++;
                } else // 열 변경시
                if (col != tbResult.getColumns().indexOf(cell.getTableColumn())) {
                    sb.append("\t");
                }
                Object cellData = cell.getTableColumn().getCellData(cell.getRow());
                sb.append(ValueUtil.decode(cellData, cellData, "").toString());
            }
            FxClipboardUtil.putString(sb.toString());
            break;
        case 2:
            Object cellData = tableColumn.getCellData(row);
            FxClipboardUtil.putString(ValueUtil.decode(cellData, cellData, "").toString());
            break;
    }
}
Also used : TablePosition(javafx.scene.control.TablePosition) Map(java.util.Map) TableColumn(javafx.scene.control.TableColumn)

Example 83 with TableColumn

use of javafx.scene.control.TableColumn in project blue by kunstmusik.

the class LineView method editPoints.

private void editPoints() {
    TableView<LinePoint> table = new TableView<>();
    TableColumn<LinePoint, Double> xCol = new TableColumn<>("x");
    TableColumn<LinePoint, Double> yCol = new TableColumn<>("y");
    table.getColumns().setAll(xCol, yCol);
    table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
    table.setItems(getSelectedLine().getObservableList());
    table.setEditable(true);
    xCol.setCellValueFactory(new PropertyValueFactory<LinePoint, Double>("x"));
    xCol.setCellFactory(TextFieldTableCell.forTableColumn(new DoubleStringConverter()));
    xCol.setOnEditCommit(te -> {
        LinePoint lp = te.getRowValue();
        if (getSelectedLine().getLinePoint(0) == lp || getSelectedLine().getLinePoint(getSelectedLine().size() - 1) == lp) {
            return;
        }
        lp.setX(Utils.clamp(0.0, te.getNewValue(), 1.0));
    });
    xCol.setEditable(true);
    yCol.setCellValueFactory(new PropertyValueFactory<LinePoint, Double>("y"));
    yCol.setCellFactory(TextFieldTableCell.forTableColumn(new DoubleStringConverter()));
    yCol.setOnEditCommit(te -> {
        te.getRowValue().setY(Utils.clamp(getSelectedLine().getMin(), te.getNewValue(), getSelectedLine().getMax()));
    });
    yCol.setEditable(true);
    Dialog<ButtonType> d = new Dialog<>();
    d.initOwner(getScene().getWindow());
    d.initModality(Modality.APPLICATION_MODAL);
    d.getDialogPane().setContent(new ScrollPane(table));
    d.getDialogPane().getStylesheets().add(BlueFX.getBlueFxCss());
    d.getDialogPane().getButtonTypes().setAll(ButtonType.OK);
    d.setTitle("Edit Points");
    TableModelListener tml = tme -> {
        repaint();
    };
    getSelectedLine().addTableModelListener(tml);
    Optional<ButtonType> res = d.showAndWait();
    getSelectedLine().removeTableModelListener(tml);
}
Also used : DoubleStringConverter(javafx.util.converter.DoubleStringConverter) NumberUtilities(blue.utility.NumberUtilities) ButtonType(javafx.scene.control.ButtonType) LineList(blue.components.lines.LineList) Glow(javafx.scene.effect.Glow) MouseEvent(javafx.scene.input.MouseEvent) TextFieldTableCell(javafx.scene.control.cell.TextFieldTableCell) TableModelListener(javax.swing.event.TableModelListener) LinePoint(blue.components.lines.LinePoint) TableColumn(javafx.scene.control.TableColumn) DragDirection(blue.components.DragDirection) Utils(org.controlsfx.tools.Utils) BlueFX(blue.jfx.BlueFX) ScrollPane(javafx.scene.control.ScrollPane) ListChangeListener(javafx.collections.ListChangeListener) ContextMenu(javafx.scene.control.ContextMenu) TableView(javafx.scene.control.TableView) Color(javafx.scene.paint.Color) ObjectProperty(javafx.beans.property.ObjectProperty) Modality(javafx.stage.Modality) Dialog(javafx.scene.control.Dialog) MenuItem(javafx.scene.control.MenuItem) PropertyValueFactory(javafx.scene.control.cell.PropertyValueFactory) GraphicsContext(javafx.scene.canvas.GraphicsContext) Canvas(javafx.scene.canvas.Canvas) Line(blue.components.lines.Line) BooleanProperty(javafx.beans.property.BooleanProperty) SimpleBooleanProperty(javafx.beans.property.SimpleBooleanProperty) SimpleObjectProperty(javafx.beans.property.SimpleObjectProperty) Paint(javafx.scene.paint.Paint) Optional(java.util.Optional) DoubleStringConverter(javafx.util.converter.DoubleStringConverter) TableColumn(javafx.scene.control.TableColumn) LinePoint(blue.components.lines.LinePoint) Dialog(javafx.scene.control.Dialog) ScrollPane(javafx.scene.control.ScrollPane) TableModelListener(javax.swing.event.TableModelListener) ButtonType(javafx.scene.control.ButtonType) TableView(javafx.scene.control.TableView)

Example 84 with TableColumn

use of javafx.scene.control.TableColumn in project org.csstudio.display.builder by kasemir.

the class RulesDialog method createPVsTable.

/**
 * @return Node for UI elements that edit the PVs of a rule
 */
private HBox createPVsTable() {
    final TableColumn<PVTableItem, Integer> indexColumn = new TableColumn<>("#");
    indexColumn.setEditable(false);
    indexColumn.setSortable(false);
    indexColumn.setCellFactory(new LineNumberTableCellFactory<>(true));
    indexColumn.setMaxWidth(26);
    indexColumn.setMinWidth(26);
    // Create table with editable 'name' column
    final TableColumn<PVTableItem, String> name_col = new TableColumn<>(Messages.ScriptsDialog_ColPV);
    name_col.setSortable(false);
    name_col.setCellValueFactory(new PropertyValueFactory<PVTableItem, String>("name"));
    name_col.setCellFactory(col -> new AutoCompletedTableCell(menu, btn_add_pv));
    name_col.setOnEditCommit(event -> {
        final int row = event.getTablePosition().getRow();
        pv_items.get(row).nameProperty().set(event.getNewValue());
        fixupPVs(row);
    });
    // Table column for 'trigger' uses CheckBoxTableCell that directly
    // modifies the Observable Property
    final TableColumn<PVTableItem, Boolean> trigger_col = new TableColumn<>(Messages.ScriptsDialog_ColTrigger);
    trigger_col.setSortable(false);
    trigger_col.setCellValueFactory(new PropertyValueFactory<PVTableItem, Boolean>("trigger"));
    trigger_col.setCellFactory(CheckBoxTableCell.<PVTableItem>forTableColumn(trigger_col));
    trigger_col.setResizable(false);
    trigger_col.setMaxWidth(70);
    trigger_col.setMinWidth(70);
    pvs_table = new TableView<>(pv_items);
    pvs_table.getColumns().add(indexColumn);
    pvs_table.getColumns().add(name_col);
    pvs_table.getColumns().add(trigger_col);
    pvs_table.setEditable(true);
    pvs_table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
    pvs_table.setTooltip(new Tooltip(Messages.RulesDialog_PVsTT));
    pvs_table.setPlaceholder(new Label(Messages.RulesDialog_NoPVs));
    // Buttons
    btn_add_pv = new Button(Messages.Add, JFXUtil.getIcon("add.png"));
    btn_add_pv.setMaxWidth(Double.MAX_VALUE);
    btn_add_pv.setAlignment(Pos.CENTER_LEFT);
    btn_add_pv.setOnAction(event -> {
        final PVTableItem newItem = new PVTableItem("new-PV", true);
        pv_items.add(newItem);
        pvs_table.getSelectionModel().select(newItem);
        final int newRow = pvs_table.getSelectionModel().getSelectedIndex();
        ModelThreadPool.getTimer().schedule(() -> {
            Platform.runLater(() -> pvs_table.edit(newRow, name_col));
        }, 123, TimeUnit.MILLISECONDS);
    });
    btn_rm_pv = new Button(Messages.Remove, JFXUtil.getIcon("delete.png"));
    btn_rm_pv.setMaxWidth(Double.MAX_VALUE);
    btn_rm_pv.setMinWidth(96);
    btn_rm_pv.setAlignment(Pos.CENTER_LEFT);
    btn_rm_pv.setDisable(true);
    btn_rm_pv.setOnAction(event -> {
        final int sel = pvs_table.getSelectionModel().getSelectedIndex();
        if (sel >= 0) {
            pv_items.remove(sel);
            fixupPVs(sel);
        }
    });
    btn_move_pv_up = new Button(Messages.MoveUp, JFXUtil.getIcon("up.png"));
    btn_move_pv_up.setMaxWidth(Double.MAX_VALUE);
    btn_move_pv_up.setAlignment(Pos.CENTER_LEFT);
    btn_move_pv_up.setDisable(true);
    btn_move_pv_up.setOnAction(event -> TableHelper.move_item_up(pvs_table, pv_items));
    btn_move_pv_down = new Button(Messages.MoveDown, JFXUtil.getIcon("down.png"));
    btn_move_pv_down.setMaxWidth(Double.MAX_VALUE);
    btn_move_pv_down.setAlignment(Pos.CENTER_LEFT);
    btn_move_pv_down.setDisable(true);
    btn_move_pv_down.setOnAction(event -> TableHelper.move_item_down(pvs_table, pv_items));
    final VBox buttons = new VBox(10, btn_add_pv, btn_rm_pv, btn_move_pv_up, btn_move_pv_down);
    final HBox content = new HBox(10, pvs_table, buttons);
    HBox.setHgrow(pvs_table, Priority.ALWAYS);
    HBox.setHgrow(buttons, Priority.NEVER);
    content.setDisable(true);
    return content;
}
Also used : HBox(javafx.scene.layout.HBox) AutoCompletedTableCell(org.csstudio.display.builder.representation.javafx.PVTableItem.AutoCompletedTableCell) Tooltip(javafx.scene.control.Tooltip) Label(javafx.scene.control.Label) ExprInfoString(org.csstudio.display.builder.model.rules.RuleInfo.ExprInfoString) TableColumn(javafx.scene.control.TableColumn) PVTableItem(org.csstudio.display.builder.representation.javafx.PVTableItem) Button(javafx.scene.control.Button) VBox(javafx.scene.layout.VBox)

Example 85 with TableColumn

use of javafx.scene.control.TableColumn in project org.csstudio.display.builder by kasemir.

the class RulesDialog method createExpressionsTable.

/**
 * @return Node for UI elements that edit the expressions
 */
private HBox createExpressionsTable() {
    // Create table with editable rule 'bool expression' column
    final TableColumn<ExprItem<?>, String> bool_exp_col = new TableColumn<>(Messages.RulesDialog_ColBoolExp);
    bool_exp_col.setSortable(false);
    bool_exp_col.setCellValueFactory(new PropertyValueFactory<ExprItem<?>, String>("boolExp"));
    bool_exp_col.setCellFactory(tableColumn -> new TextFieldTableCell<ExprItem<?>, String>(new DefaultStringConverter()) {

        private final ChangeListener<? super Boolean> focusedListener = (ob, o, n) -> {
            if (!n)
                cancelEdit();
        };

        /* Instance initializer. */
        {
            setAlignment(Pos.CENTER_LEFT);
        }

        @Override
        public void cancelEdit() {
            ((TextField) getGraphic()).focusedProperty().removeListener(focusedListener);
            super.cancelEdit();
        }

        @Override
        public void commitEdit(final String newValue) {
            ((TextField) getGraphic()).focusedProperty().removeListener(focusedListener);
            super.commitEdit(newValue);
        }

        @Override
        public void startEdit() {
            super.startEdit();
            ((TextField) getGraphic()).focusedProperty().addListener(focusedListener);
        }
    });
    // Create table with editable rule 'value expression' column
    final TableColumn<ExprItem<?>, Node> val_exp_col = new TableColumn<>(Messages.RulesDialog_ColValExp);
    // This statement requires "val_exp_col" be defined.
    bool_exp_col.setOnEditCommit(event -> {
        final int row = event.getTablePosition().getRow();
        expression_items.get(row).boolExpProperty().set(event.getNewValue());
        ModelThreadPool.getTimer().schedule(() -> {
            Platform.runLater(() -> val_exp_col.getCellData(row).requestFocus());
        }, 123, TimeUnit.MILLISECONDS);
    });
    val_exp_col.setSortable(false);
    val_exp_col.setCellValueFactory(new PropertyValueFactory<ExprItem<?>, Node>("field"));
    val_exp_col.setCellFactory(tableColumn -> new TableCell<ExprItem<?>, Node>() {

        @Override
        protected void updateItem(final Node item, final boolean empty) {
            // calling super here is very important - don't skip this!
            super.updateItem(item, empty);
            setGraphic(item);
        }
    });
    val_exp_col.setOnEditCommit(event -> {
        final int row = event.getTablePosition().getRow();
        expression_items.get(row).fieldProperty().set(event.getNewValue());
        event.consume();
        ModelThreadPool.getTimer().schedule(() -> {
            Platform.runLater(() -> btn_add_exp.requestFocus());
        }, 1230, TimeUnit.MILLISECONDS);
    });
    expressions_table = new TableView<>(expression_items);
    expressions_table.getColumns().add(bool_exp_col);
    expressions_table.getColumns().add(val_exp_col);
    expressions_table.setEditable(true);
    expressions_table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
    expressions_table.setTooltip(new Tooltip(Messages.RulesDialog_ExpressionsTT));
    expressions_table.setPlaceholder(new Label(Messages.RulesDialog_NoExpressions));
    // Buttons
    btn_add_exp = new Button(Messages.Add, JFXUtil.getIcon("add.png"));
    btn_add_exp.setMaxWidth(Double.MAX_VALUE);
    btn_add_exp.setAlignment(Pos.CENTER_LEFT);
    btn_add_exp.setOnAction(event -> {
        selected_rule_item.addNewExpr(undo);
        expression_items.setAll(selected_rule_item.expressions);
        expressions_table.getSelectionModel().select(expression_items.size() - 1);
        final int newRow = expression_items.size() - 1;
        ModelThreadPool.getTimer().schedule(() -> {
            Platform.runLater(() -> expressions_table.edit(newRow, bool_exp_col));
        }, 123, TimeUnit.MILLISECONDS);
    });
    btn_rm_exp = new Button(Messages.Remove, JFXUtil.getIcon("delete.png"));
    btn_rm_exp.setMaxWidth(Double.MAX_VALUE);
    btn_rm_exp.setMinWidth(96);
    btn_rm_exp.setAlignment(Pos.CENTER_LEFT);
    btn_rm_exp.setDisable(true);
    btn_rm_exp.setOnAction(event -> {
        final int sel = expressions_table.getSelectionModel().getSelectedIndex();
        if (sel >= 0)
            expression_items.remove(sel);
    });
    btn_move_exp_up = new Button(Messages.MoveUp, JFXUtil.getIcon("up.png"));
    btn_move_exp_up.setMaxWidth(Double.MAX_VALUE);
    btn_move_exp_up.setAlignment(Pos.CENTER_LEFT);
    btn_move_exp_up.setDisable(true);
    btn_move_exp_up.setOnAction(event -> TableHelper.move_item_up(expressions_table, expression_items));
    btn_move_exp_down = new Button(Messages.MoveDown, JFXUtil.getIcon("down.png"));
    btn_move_exp_down.setMaxWidth(Double.MAX_VALUE);
    btn_move_exp_down.setAlignment(Pos.CENTER_LEFT);
    btn_move_exp_down.setDisable(true);
    btn_move_exp_down.setOnAction(event -> TableHelper.move_item_down(expressions_table, expression_items));
    final VBox buttons = new VBox(10, btn_add_exp, btn_rm_exp, btn_move_exp_up, btn_move_exp_down);
    final HBox content = new HBox(10, expressions_table, buttons);
    HBox.setHgrow(expressions_table, Priority.ALWAYS);
    HBox.setHgrow(buttons, Priority.NEVER);
    content.setDisable(true);
    return content;
}
Also used : Button(javafx.scene.control.Button) Pos(javafx.geometry.Pos) UndoableActionManager(org.csstudio.display.builder.util.undo.UndoableActionManager) ScriptPV(org.csstudio.display.builder.model.properties.ScriptPV) LineNumberTableCellFactory(org.csstudio.javafx.LineNumberTableCellFactory) VBox(javafx.scene.layout.VBox) AutoCompletedTableCell(org.csstudio.display.builder.representation.javafx.PVTableItem.AutoCompletedTableCell) RuleInfo(org.csstudio.display.builder.model.rules.RuleInfo) TableHelper(org.csstudio.javafx.TableHelper) ListChangeListener(javafx.collections.ListChangeListener) ComboBox(javafx.scene.control.ComboBox) WidgetProperty(org.csstudio.display.builder.model.WidgetProperty) TableView(javafx.scene.control.TableView) ModelThreadPool(org.csstudio.display.builder.model.util.ModelThreadPool) Pane(javafx.scene.layout.Pane) Orientation(javafx.geometry.Orientation) HBox(javafx.scene.layout.HBox) PVTableItem(org.csstudio.display.builder.representation.javafx.PVTableItem) SplitPane(javafx.scene.control.SplitPane) TextField(javafx.scene.control.TextField) Language(org.csstudio.javafx.SyntaxHighlightedMultiLineInputDialog.Language) PropertyValueFactory(javafx.scene.control.cell.PropertyValueFactory) Collectors(java.util.stream.Collectors) CommonWidgetProperties(org.csstudio.display.builder.model.properties.CommonWidgetProperties) Platform(javafx.application.Platform) Priority(javafx.scene.layout.Priority) List(java.util.List) BooleanProperty(javafx.beans.property.BooleanProperty) Region(javafx.scene.layout.Region) CheckBoxTableCell(javafx.scene.control.cell.CheckBoxTableCell) AutocompleteMenu(org.csstudio.display.builder.representation.javafx.AutocompleteMenu) JFXUtil(org.csstudio.display.builder.representation.javafx.JFXUtil) ObservableList(javafx.collections.ObservableList) DefaultStringConverter(javafx.util.converter.DefaultStringConverter) ExprInfoString(org.csstudio.display.builder.model.rules.RuleInfo.ExprInfoString) StringProperty(javafx.beans.property.StringProperty) ExpressionInfo(org.csstudio.display.builder.model.rules.RuleInfo.ExpressionInfo) TableViewSelectionModel(javafx.scene.control.TableView.TableViewSelectionModel) SyntaxHighlightedMultiLineInputDialog(org.csstudio.javafx.SyntaxHighlightedMultiLineInputDialog) ExprInfoValue(org.csstudio.display.builder.model.rules.RuleInfo.ExprInfoValue) Plugin.logger(org.csstudio.display.builder.editor.Plugin.logger) SimpleStringProperty(javafx.beans.property.SimpleStringProperty) ButtonType(javafx.scene.control.ButtonType) JFXBaseRepresentation(org.csstudio.display.builder.representation.javafx.widgets.JFXBaseRepresentation) FXCollections(javafx.collections.FXCollections) BackingStoreException(java.util.prefs.BackingStoreException) TextFieldTableCell(javafx.scene.control.cell.TextFieldTableCell) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) TableColumn(javafx.scene.control.TableColumn) RulesWidgetProperty(org.csstudio.display.builder.model.properties.RulesWidgetProperty) Messages(org.csstudio.display.builder.representation.javafx.Messages) TableCell(javafx.scene.control.TableCell) Insets(javafx.geometry.Insets) Tooltip(javafx.scene.control.Tooltip) Dialog(javafx.scene.control.Dialog) Label(javafx.scene.control.Label) Node(javafx.scene.Node) CheckBox(javafx.scene.control.CheckBox) Preferences(java.util.prefs.Preferences) TimeUnit(java.util.concurrent.TimeUnit) SimpleBooleanProperty(javafx.beans.property.SimpleBooleanProperty) SimpleObjectProperty(javafx.beans.property.SimpleObjectProperty) ScriptsDialog(org.csstudio.display.builder.representation.javafx.ScriptsDialog) DialogHelper(org.csstudio.javafx.DialogHelper) Widget(org.csstudio.display.builder.model.Widget) ChangeListener(javafx.beans.value.ChangeListener) PropInfo(org.csstudio.display.builder.model.rules.RuleInfo.PropInfo) HBox(javafx.scene.layout.HBox) Node(javafx.scene.Node) Tooltip(javafx.scene.control.Tooltip) Label(javafx.scene.control.Label) ExprInfoString(org.csstudio.display.builder.model.rules.RuleInfo.ExprInfoString) TableColumn(javafx.scene.control.TableColumn) DefaultStringConverter(javafx.util.converter.DefaultStringConverter) Button(javafx.scene.control.Button) TextField(javafx.scene.control.TextField) VBox(javafx.scene.layout.VBox)

Aggregations

TableColumn (javafx.scene.control.TableColumn)132 TableView (javafx.scene.control.TableView)68 TableCell (javafx.scene.control.TableCell)66 AutoTooltipLabel (bisq.desktop.components.AutoTooltipLabel)46 Button (javafx.scene.control.Button)44 VBox (javafx.scene.layout.VBox)41 Tooltip (javafx.scene.control.Tooltip)40 Callback (javafx.util.Callback)40 ObservableList (javafx.collections.ObservableList)39 Insets (javafx.geometry.Insets)37 ReadOnlyObjectWrapper (javafx.beans.property.ReadOnlyObjectWrapper)36 Label (javafx.scene.control.Label)35 ArrayList (java.util.ArrayList)33 List (java.util.List)33 Scene (javafx.scene.Scene)32 Res (bisq.core.locale.Res)31 FxmlView (bisq.desktop.common.view.FxmlView)31 Inject (javax.inject.Inject)31 HyperlinkWithIcon (bisq.desktop.components.HyperlinkWithIcon)30 SortedList (javafx.collections.transformation.SortedList)27