Skip to content
Snippets Groups Projects
Commit 7fd2f166 authored by Andreas Bayha's avatar Andreas Bayha
Browse files

DynamicTreeTable: Fixed text editing in cells

It is necessary to handle the cases in which a "cancelEdit" is executed
differently than the cases of clicking outside (without cancelEdit).

Issue-ref: 4365
Issue-URL: af3#4365



Signed-off-by: default avatarAndreas Bayha <bayha@fortiss.org>
parent b67721d1
No related branches found
No related tags found
1 merge request!2294365
Pipeline #41562 passed
Pipeline: maven-releng

#41563

    DynamicList.java 786300e2e914826da239329d190abea1710478ea GREEN
    DynamicListContentProvider.java 817cba44f246a361207a88ef9a4e1869215803f7 GREEN
    DynamicStreamContentProvider.java f46e91400609cba54793dd240be0fe2aa0d5cced GREEN
    DynamicTextFieldTreeTableCell.java b49c836a12f12b4c02ac1d16abdc0d1ac71886bf YELLOW
    DynamicTextFieldTreeTableCell.java c91a86a6d26e4aecbcf4e849383cb92a16ab2545 YELLOW
    DynamicTreeContentProviderBase.java 91896b1fb5104d126544c44c1ff8c30f2a13a8d6 GREEN
    DynamicTreeItem.java 7e81ea98038b5eca90df583e0268d4e8f37aaf25 GREEN
    DynamicTreeItemBase.java d883066ecc181120302ca32f328538de7a45b093 GREEN
    ......
    ......@@ -17,6 +17,7 @@ package org.fortiss.tooling.common.ui.javafx.control.treetableview;
    import javafx.beans.value.ChangeListener;
    import javafx.beans.value.ObservableValue;
    import javafx.scene.Node;
    import javafx.scene.control.TextField;
    import javafx.scene.control.TreeTableRow;
    import javafx.scene.control.cell.TextFieldTreeTableCell;
    ......@@ -95,15 +96,17 @@ public class DynamicTextFieldTreeTableCell<T> extends TextFieldTreeTableCell<T,
    @Override
    public void changed(ObservableValue<? extends Boolean> val, Boolean oldVal,
    Boolean newVal) {
    String newValue = textField.getText();
    String oldValue = uiProvider.getLabel(getTreeTableRow().getItem(), columnIndex);
    // Do not update value in case it did not change or escape was pressed (i.e.
    // intended cancel).
    if(!newValue.equals(oldValue) && !escapePressed) {
    T currentlyEditedElement = getTreeTableRow().getItem();
    if(currentlyEditedElement != null) {
    uiProvider.updateValue(currentlyEditedElement, columnIndex, newValue);
    }
    // The listener is called when the user clicks outside the editor or presses esc
    if(escapePressed) {
    return;
    }
    Node graphic = getGraphic();
    if(graphic instanceof TextField) {
    TextField textField = (TextField)graphic;
    String newValue = textField.getText();
    commitEdit(newValue);
    }
    }
    });
    ......@@ -113,9 +116,25 @@ public class DynamicTextFieldTreeTableCell<T> extends TextFieldTreeTableCell<T,
    /** {@inheritDoc} */
    @Override
    public void cancelEdit() {
    super.cancelEdit();
    // cancelEdit() is immediately called, when clicking on a different cell. The new value has
    // to be set, before running super.cancelEdit().
    Node graphic = getGraphic();
    if(graphic instanceof TextField) {
    TextField textField = (TextField)graphic;
    String newValue = textField.getText();
    String oldValue = uiProvider.getLabel(getTreeTableRow().getItem(), columnIndex);
    if(!newValue.equals(oldValue) && !escapePressed) {
    T currentlyEditedElement = getTreeTableRow().getItem();
    if(currentlyEditedElement != null) {
    uiProvider.updateValue(getTreeTableRow().getItem(), columnIndex, newValue);
    }
    }
    }
    getTreeTableView().refresh();
    super.cancelEdit();
    }
    /** {@inheritDoc} */
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment