< prev index next >

modules/javafx.controls/src/main/java/javafx/scene/control/cell/TextFieldTreeTableCell.java

Print this page
rev 10463 : 8089514: [TableView, TreeView, ListView, TreeTableView] Clicking outside of the edited cell, node, or entry should commit the value

@@ -32,10 +32,12 @@
 import javafx.scene.control.TreeTableColumn;
 import javafx.util.Callback;
 import javafx.util.StringConverter;
 import javafx.util.converter.DefaultStringConverter;
 
+import java.util.Optional;
+
 /**
  * A class containing a {@link javafx.scene.control.TableCell} implementation that draws a
  * {@link TextField} node inside the cell.
  *
  * <p>By default, the TextFieldTableCell is rendered as a {@link javafx.scene.control.Label} when not

@@ -88,11 +90,11 @@
      *      {@link TreeTableColumn#cellFactoryProperty() cell factory property} of a
      *      TreeTableColumn, that enables textual editing of the content.
      */
     public static <S,T> Callback<TreeTableColumn<S,T>, TreeTableCell<S,T>> forTreeTableColumn(
             final StringConverter<T> converter) {
-        return list -> new TextFieldTreeTableCell<S,T>(converter);
+        return list -> new TextFieldTreeTableCell<>(converter);
     }
 
 
     /***************************************************************************
      *                                                                         *

@@ -147,11 +149,11 @@
      *                                                                         *
      **************************************************************************/
 
     // --- converter
     private ObjectProperty<StringConverter<T>> converter =
-            new SimpleObjectProperty<StringConverter<T>>(this, "converter");
+            new SimpleObjectProperty<>(this, "converter");
 
     /**
      * The {@link StringConverter} property.
      * @return the {@link StringConverter} property
      */

@@ -210,6 +212,12 @@
     /** {@inheritDoc} */
     @Override public void updateItem(T item, boolean empty) {
         super.updateItem(item, empty);
         CellUtils.updateItem(this, getConverter(), null, null, textField);
     }
+
+    /** {@inheritDoc} */
+    @Override protected Optional<T> getEditorValue() {
+        StringConverter<T> converter = getConverter();
+        return converter == null ? Optional.empty() : Optional.of(converter.fromString(textField.getText()));
+    }
 }
< prev index next >