You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by mg...@apache.org on 2017/01/05 22:09:15 UTC

[07/50] cayenne-modeler git commit: Fixed bug where table selection listener wasn't being removed.

Fixed bug where table selection listener wasn't being removed.


Project: http://git-wip-us.apache.org/repos/asf/cayenne-modeler/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne-modeler/commit/74f74a45
Tree: http://git-wip-us.apache.org/repos/asf/cayenne-modeler/tree/74f74a45
Diff: http://git-wip-us.apache.org/repos/asf/cayenne-modeler/diff/74f74a45

Branch: refs/heads/master
Commit: 74f74a459b5447541e1614b1ae91b840703fb90d
Parents: 432e8bf
Author: mrg <bl...@gmail.com>
Authored: Mon Sep 26 07:58:05 2016 -0400
Committer: mrg <bl...@gmail.com>
Committed: Mon Sep 26 07:58:05 2016 -0400

----------------------------------------------------------------------
 .../layout/ObjectEntityAttributesTabLayout.java | 66 +++++++++-----------
 1 file changed, 30 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/74f74a45/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityAttributesTabLayout.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityAttributesTabLayout.java b/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityAttributesTabLayout.java
index 7a70a14..d96bd25 100644
--- a/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityAttributesTabLayout.java
+++ b/src/main/java/org/apache/cayenne/modeler/layout/ObjectEntityAttributesTabLayout.java
@@ -29,6 +29,7 @@ import org.apache.commons.logging.LogFactory;
 
 import de.jensd.fx.glyphs.GlyphsDude;
 import de.jensd.fx.glyphs.fontawesome.FontAwesomeIcon;
+import javafx.beans.value.ChangeListener;
 import javafx.event.Event;
 import javafx.fxml.FXML;
 import javafx.scene.control.ComboBox;
@@ -169,13 +170,36 @@ public class ObjectEntityAttributesTabLayout
         this.objectEntityAdapter = objectEntityAdapter;
     }
 
-    private ObjectAttributeAdapter currentObjectAttributeAdapter;
+//    private void attributesTableViewSelectionListener(ObservableValue obs, ObjectAttributeAdapter oldSelection, ObjectAttributeAdapter newSelection)
+//    private ChangeListener<? super ObjectAttributeAdapter> attributesTableViewSelectionListener;
+    private ChangeListener<ObjectAttributeAdapter> attributesTableViewSelectionListener = (obs, oldSelection, newSelection) ->
+        {
+            final String[] javaTypes = ObjectEntityUtilities.getRegisteredTypeNames();
+
+            if (oldSelection != null)
+            {
+                javaAttributeNameTextField.textProperty().unbindBidirectional(oldSelection.nameProperty());
+                javaTypeComboBox.valueProperty().unbindBidirectional(oldSelection.javaTypeProperty());
+            }
+
+            javaTypeComboBox.getItems().clear();
+
+            if (newSelection != null)
+            {
+                javaTypeComboBox.getItems().addAll(javaTypes);
+
+                javaAttributeNameTextField.textProperty().bindBidirectional(newSelection.nameProperty());
+                javaTypeComboBox.valueProperty().bindBidirectional(newSelection.javaTypeProperty());
+                databaseTypeLabel.setText(newSelection.getDatabaseType());
+            }
+
+            javaAttributeNameTextField.setDisable(newSelection == null);
+            javaTypeComboBox.setDisable(newSelection == null);
+        };
 
     @Override
     public void beginEditing()
     {
-//        nameTextField.textProperty().bindBidirectional(objectEntityAdapter.getNameProperty());
-
         javaAttributeNameTextField.setDisable(true);
         javaAttributeNameTextField.setText(null);
         javaTypeComboBox.setDisable(true);
@@ -184,50 +208,20 @@ public class ObjectEntityAttributesTabLayout
         databaseTypeLabel.setText("N/A");
         attributesTableView.setItems(objectEntityAdapter.getAttributes());
 
-        attributesTableView.getSelectionModel().selectedItemProperty().addListener((obs, oldSelection, newSelection) ->
-            {
-                final String[] javaTypes = ObjectEntityUtilities.getRegisteredTypeNames();
-
-                currentObjectAttributeAdapter = newSelection;
-
-                if (oldSelection != null)
-                {
-                    javaAttributeNameTextField.textProperty().unbindBidirectional(oldSelection.nameProperty());
-                    javaTypeComboBox.valueProperty().unbindBidirectional(oldSelection.javaTypeProperty());
-
-//                    javaTypeComboBox.textProperty().unbindBidirectional(oldSelection.javaTypeProperty());
-                }
-
-                javaTypeComboBox.getItems().clear();
-
-                if (newSelection != null)
-                {
-                    javaTypeComboBox.getItems().addAll(javaTypes);
-
-                    javaAttributeNameTextField.textProperty().bindBidirectional(newSelection.nameProperty());
-                    javaTypeComboBox.valueProperty().bindBidirectional(newSelection.javaTypeProperty());
-//                    javaTypeComboBox.textProperty().bindBidirectional(oldSelection.javaTypeProperty());
-                    databaseTypeLabel.setText(newSelection.getDatabaseType());
-                }
-
-                javaAttributeNameTextField.setDisable(newSelection == null);
-                javaTypeComboBox.setDisable(newSelection == null);
-            });
+        attributesTableView.getSelectionModel().selectedItemProperty().addListener(attributesTableViewSelectionListener);
     }
 
     @Override
     public void endEditing()
     {
-//        nameTextField.textProperty().unbindBidirectional(objectEntityAdapter.getNameProperty());
+        ObjectAttributeAdapter currentObjectAttributeAdapter = attributesTableView.getSelectionModel().getSelectedItem();
 
         if (currentObjectAttributeAdapter != null)
         {
             javaAttributeNameTextField.textProperty().unbindBidirectional(currentObjectAttributeAdapter.nameProperty());
             javaTypeComboBox.valueProperty().unbindBidirectional(currentObjectAttributeAdapter.javaTypeProperty());
-
-            currentObjectAttributeAdapter = null;
         }
 
-//        attributesTableView.setItems(null);
+        attributesTableView.getSelectionModel().selectedItemProperty().removeListener(attributesTableViewSelectionListener);
     }
 }