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/06/03 11:36:39 UTC

[1/7] cayenne-modeler git commit: Created UI/Model Binding.

Repository: cayenne-modeler
Updated Branches:
  refs/heads/master fd1c383e1 -> 1edef7d53


Created UI/Model Binding.


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

Branch: refs/heads/master
Commit: c0e584947d95b7779282385bc5c732de19a8e50d
Parents: fd1c383
Author: mrg <bl...@gmail.com>
Authored: Fri Jun 2 16:43:51 2017 -0400
Committer: mrg <bl...@gmail.com>
Committed: Fri Jun 2 16:43:51 2017 -0400

----------------------------------------------------------------------
 .../apache/cayenne/modeler/layout/Binding.java  | 54 ++++++++++++++++++++
 1 file changed, 54 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/c0e58494/src/main/java/org/apache/cayenne/modeler/layout/Binding.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/layout/Binding.java b/src/main/java/org/apache/cayenne/modeler/layout/Binding.java
new file mode 100644
index 0000000..e08fde6
--- /dev/null
+++ b/src/main/java/org/apache/cayenne/modeler/layout/Binding.java
@@ -0,0 +1,54 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+
+package org.apache.cayenne.modeler.layout;
+
+import javafx.beans.property.Property;
+
+/**
+ * Associates a binding between a Property in the UI and a Property in the model.
+ *
+ * @param <T>
+ */
+public class Binding<T>
+{
+    private Property<T> uiProperty, modelProperty;
+
+    public Binding(Property<T> uiProperty, Property<T> modelProperty)
+    {
+        this.uiProperty    = uiProperty;
+        this.modelProperty = modelProperty;
+    }
+
+    /**
+     * Bi-directionally binds the UI Property to the model Property.
+     */
+    public void bind()
+    {
+        uiProperty.bindBidirectional(modelProperty);
+    }
+
+    /**
+     * Bi-directionally unbinds the UI Property from the model Property.
+     */
+    public void unbind()
+    {
+        uiProperty.unbindBidirectional(modelProperty);
+    }
+}


[2/7] cayenne-modeler git commit: Removed deprecated file.

Posted by mg...@apache.org.
Removed deprecated file.


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

Branch: refs/heads/master
Commit: 2293b0909304a692c58321cd1b093432f8d72e42
Parents: c0e5849
Author: mrg <bl...@gmail.com>
Authored: Sat Jun 3 06:51:39 2017 -0400
Committer: mrg <bl...@gmail.com>
Committed: Sat Jun 3 06:51:39 2017 -0400

----------------------------------------------------------------------
 .../modeler/adapters/AdapterSupport.java        | 27 --------------------
 1 file changed, 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/2293b090/src/main/java/org/apache/cayenne/modeler/adapters/AdapterSupport.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/adapters/AdapterSupport.java b/src/main/java/org/apache/cayenne/modeler/adapters/AdapterSupport.java
deleted file mode 100644
index 53f228f..0000000
--- a/src/main/java/org/apache/cayenne/modeler/adapters/AdapterSupport.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-
-package org.apache.cayenne.modeler.adapters;
-
-@Deprecated // Don't think this is needed anymore.
-public interface AdapterSupport<T>
-{
-//    public BeanPathAdapter<T> getBeanPathAdapter();
-
-}


[6/7] cayenne-modeler git commit: Updated interface to try and use more generic bind/unbind mechanism.

Posted by mg...@apache.org.
Updated interface to try and use more generic bind/unbind mechanism.


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

Branch: refs/heads/master
Commit: 4861004e86f324963e73346da761cd5bdf9b982f
Parents: 74696f3
Author: mrg <bl...@gmail.com>
Authored: Sat Jun 3 07:35:59 2017 -0400
Committer: mrg <bl...@gmail.com>
Committed: Sat Jun 3 07:35:59 2017 -0400

----------------------------------------------------------------------
 .../modeler/layout/DetailEditorSupport.java     | 40 +++++++++++++++++++-
 1 file changed, 38 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/4861004e/src/main/java/org/apache/cayenne/modeler/layout/DetailEditorSupport.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/layout/DetailEditorSupport.java b/src/main/java/org/apache/cayenne/modeler/layout/DetailEditorSupport.java
index 133f57b..5073f86 100644
--- a/src/main/java/org/apache/cayenne/modeler/layout/DetailEditorSupport.java
+++ b/src/main/java/org/apache/cayenne/modeler/layout/DetailEditorSupport.java
@@ -19,11 +19,47 @@
 
 package org.apache.cayenne.modeler.layout;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.cayenne.modeler.adapters.CayennePropertyAdapter;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 public interface DetailEditorSupport<T extends CayennePropertyAdapter>
 {
+    static final Log LOGGER = LogFactory.getLog(DetailEditorSupport.class);
+
+    default void showLayout(final T propertyAdapter)
+    {
+        setPropertyAdapter(propertyAdapter);
+        initializeBindings();
+        beginEditing();
+    }
+
+    default void initializeBindings()
+    {
+        // Implementors should override.
+    }
+
+    default List<Binding<?>> getBindings()
+    {
+        return new ArrayList<>();
+    }
+
     void setPropertyAdapter(final T propertyAdapter);
-    void beginEditing();
-    void endEditing();
+
+    default void beginEditing()
+    {
+        LOGGER.debug("begin editing " + this);
+
+        getBindings().stream().forEach(binding -> binding.bind());
+    }
+
+    default void endEditing()
+    {
+        LOGGER.debug("end editing " + this);
+
+        getBindings().stream().forEach(binding -> binding.unbind());
+    }
 }


[5/7] cayenne-modeler git commit: Added logging for all property changes.

Posted by mg...@apache.org.
Added logging for all property changes.


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

Branch: refs/heads/master
Commit: 74696f30d6a0af517869b26212e6a0ebaad1eb46
Parents: 27318e5
Author: mrg <bl...@gmail.com>
Authored: Sat Jun 3 07:34:27 2017 -0400
Committer: mrg <bl...@gmail.com>
Committed: Sat Jun 3 07:34:27 2017 -0400

----------------------------------------------------------------------
 .../cayenne/modeler/adapters/CayennePropertyAdapter.java  | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/74696f30/src/main/java/org/apache/cayenne/modeler/adapters/CayennePropertyAdapter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/adapters/CayennePropertyAdapter.java b/src/main/java/org/apache/cayenne/modeler/adapters/CayennePropertyAdapter.java
index 018b13c..13a5ba0 100644
--- a/src/main/java/org/apache/cayenne/modeler/adapters/CayennePropertyAdapter.java
+++ b/src/main/java/org/apache/cayenne/modeler/adapters/CayennePropertyAdapter.java
@@ -29,6 +29,7 @@ import javafx.beans.property.Property;
 import javafx.beans.property.StringProperty;
 import javafx.beans.property.adapter.JavaBeanBooleanPropertyBuilder;
 import javafx.beans.property.adapter.JavaBeanIntegerPropertyBuilder;
+import javafx.beans.property.adapter.JavaBeanProperty;
 import javafx.beans.property.adapter.JavaBeanStringPropertyBuilder;
 
 /**
@@ -101,7 +102,14 @@ public abstract class CayennePropertyAdapter
      */
     private <T extends Property<?>> T observePropertyChanges(T property)
     {
-        property.addListener((observable, newValue, oldValue) -> getCayennePropject().setDirty(true));
+        property.addListener((observable, oldValue, newValue) ->
+            {
+                JavaBeanProperty<?> changedProperty = (JavaBeanProperty<?>) observable;
+
+                getCayennePropject().setDirty(true);
+
+                LOGGER.debug("Property Changed: [" + changedProperty.getBean().getClass().getSimpleName() + " " + changedProperty.getName() + "] " + oldValue + " -> " + newValue);
+            });
 
         return property;
     }


[4/7] cayenne-modeler git commit: Cleanup.

Posted by mg...@apache.org.
Cleanup.


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

Branch: refs/heads/master
Commit: 27318e592b5c5c15393104de418cebe16c8f36da
Parents: 4f76957
Author: mrg <bl...@gmail.com>
Authored: Sat Jun 3 07:27:49 2017 -0400
Committer: mrg <bl...@gmail.com>
Committed: Sat Jun 3 07:27:49 2017 -0400

----------------------------------------------------------------------
 .../java/org/apache/cayenne/modeler/layout/SplashLayout.java     | 4 ----
 1 file changed, 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/27318e59/src/main/java/org/apache/cayenne/modeler/layout/SplashLayout.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/layout/SplashLayout.java b/src/main/java/org/apache/cayenne/modeler/layout/SplashLayout.java
index 1198608..85d5a3f 100644
--- a/src/main/java/org/apache/cayenne/modeler/layout/SplashLayout.java
+++ b/src/main/java/org/apache/cayenne/modeler/layout/SplashLayout.java
@@ -60,10 +60,6 @@ public class SplashLayout extends AbstractWindowLayout
 
     public void initialize()
     {
-//        final List<String> arr = ModelerPreferences.getLastProjFiles();
-
-//        URL url = CayenneModeler.class.getResource("/cayenne-analytic.xml");
-
         final ObservableList<String> projects =
             FXCollections.observableArrayList(ModelerPreferences.getLastProjFiles());
 


[3/7] cayenne-modeler git commit: Initial additions for DataDomain's Remote Change Notifications.

Posted by mg...@apache.org.
Initial additions for DataDomain's Remote Change Notifications.


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

Branch: refs/heads/master
Commit: 4f7695711477e656beb86bf7efa210a04f302e64
Parents: 2293b09
Author: mrg <bl...@gmail.com>
Authored: Sat Jun 3 07:27:17 2017 -0400
Committer: mrg <bl...@gmail.com>
Committed: Sat Jun 3 07:27:17 2017 -0400

----------------------------------------------------------------------
 .../modeler/adapters/DataDomainAdapter.java     | 66 ++++++++++++++++----
 .../modeler/layout/DataDomainLayout.java        | 60 +++++++++++++-----
 .../cayenne/modeler/project/CayenneProject.java | 52 +++++++++++++++
 .../resources/layouts/DataDomainLayout.fxml     | 25 +++++---
 4 files changed, 170 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/4f769571/src/main/java/org/apache/cayenne/modeler/adapters/DataDomainAdapter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/adapters/DataDomainAdapter.java b/src/main/java/org/apache/cayenne/modeler/adapters/DataDomainAdapter.java
index 73aeedb..a45b6f8 100644
--- a/src/main/java/org/apache/cayenne/modeler/adapters/DataDomainAdapter.java
+++ b/src/main/java/org/apache/cayenne/modeler/adapters/DataDomainAdapter.java
@@ -23,6 +23,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.cayenne.modeler.project.CayenneProject;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import javafx.beans.property.BooleanProperty;
 import javafx.beans.property.IntegerProperty;
@@ -30,11 +32,18 @@ import javafx.beans.property.StringProperty;
 
 public class DataDomainAdapter extends CayennePropertyAdapter // implements AdapterSupport<CayenneProject>
 {
-    private static final String DATA_DOMAIN_NAME            = "dataDomainName";
-    private static final String VALIDATING_OBJECTS          = "dataDomainValidatingObjects";
-    private static final String OBJECT_CACHE_SIZE           = "sizeOfObjectCache";
-    private static final String USE_SHARED_CACHE            = "usingSharedCache";
-    private static final String REMOTE_CHANGE_NOTIFICATIONS = "remoteChangeNotificationsEnabled";
+    private static final Log LOGGER = LogFactory.getLog(DataDomainAdapter.class);
+
+    private static final String DATA_DOMAIN_NAME              = "dataDomainName";
+    private static final String VALIDATING_OBJECTS            = "dataDomainValidatingObjects";
+    private static final String OBJECT_CACHE_SIZE             = "sizeOfObjectCache";
+    private static final String USE_SHARED_CACHE              = "usingSharedCache";
+    private static final String REMOTE_CHANGE_NOTIFICATIONS   = "remoteChangeNotificationsEnabled";
+    private static final String EVENT_BRIDGE_FACTORY          = "eventBridgeFactory";
+    private static final String JAVA_GROUPS_MULTICAST_ADDRESS = "javaGroupsMulticastAddress";
+    private static final String JAVA_GROUPS_MULTICAST_PORT    = "javaGroupsMulticastPort";
+    private static final String JAVA_GROUPS_FILE              = "javaGroupsFile";
+    private static final String JMS_CONNECTION_FACTORY        = "jmsConnectionFactory";
 
     private final CayenneProject cayenneProject;
 
@@ -59,11 +68,19 @@ public class DataDomainAdapter extends CayennePropertyAdapter // implements Adap
     private BooleanProperty useSharedCacheProperty;
     private BooleanProperty remoteChangeNotificationsProperty;
 
+    private StringProperty eventBridgeFactoryProperty;
+    private StringProperty javaGroupsMulticastAddressProperty;
+    private StringProperty javaGroupsMulticastPortProperty;
+    private StringProperty javaGroupsFileProperty;
+    private StringProperty jmsConnectionFactoryProperty;
+
     public DataDomainAdapter(final CayenneProject cayenneProject)
     {
         // Must be assigned before property binding.
         this.cayenneProject = cayenneProject;
 
+        cayenneProject.getDataDomain().getProperties().keySet().stream().forEach(key -> LOGGER.debug("DataDomain Properties: " + key + " = " + cayenneProject.getDataDomain().getProperties().get(key)));
+
         // Create adapters for all DataMaps and DataNodes.
         cayenneProject.getDataMaps().stream().forEach(dataMap -> dataMapAdapters.add(new DataMapAdapter(dataMap)));
         cayenneProject.getDataNodes().stream().forEach(dataNode -> dataNodeAdapters.add(new DataNodeAdapter(dataNode)));
@@ -74,15 +91,21 @@ public class DataDomainAdapter extends CayennePropertyAdapter // implements Adap
 
         try
         {
-            nameProperty                      = bindString(DATA_DOMAIN_NAME);
-            validatingObjectsProperty         = bindBoolean(VALIDATING_OBJECTS);
-            sizeOfObjectCacheProperty         = bindInteger(OBJECT_CACHE_SIZE);
-            useSharedCacheProperty            = bindBoolean(USE_SHARED_CACHE);
-            remoteChangeNotificationsProperty = bindBoolean(REMOTE_CHANGE_NOTIFICATIONS);
+            nameProperty                       = bindString(DATA_DOMAIN_NAME);
+            validatingObjectsProperty          = bindBoolean(VALIDATING_OBJECTS);
+            sizeOfObjectCacheProperty          = bindInteger(OBJECT_CACHE_SIZE);
+            useSharedCacheProperty             = bindBoolean(USE_SHARED_CACHE);
+            remoteChangeNotificationsProperty  = bindBoolean(REMOTE_CHANGE_NOTIFICATIONS);
+            eventBridgeFactoryProperty         = bindString(EVENT_BRIDGE_FACTORY);
+            javaGroupsMulticastAddressProperty = bindString(JAVA_GROUPS_MULTICAST_ADDRESS);
+            javaGroupsMulticastPortProperty    = bindString(JAVA_GROUPS_MULTICAST_PORT);
+            javaGroupsFileProperty             = bindString(JAVA_GROUPS_FILE);
+            jmsConnectionFactoryProperty       = bindString(JMS_CONNECTION_FACTORY);
+
         }
         catch (final NoSuchMethodException e)
         {
-            throw new RuntimeException("Fix the builder.");
+            throw new RuntimeException("Fix the builder.", e);
         }
     }
 
@@ -106,6 +129,27 @@ public class DataDomainAdapter extends CayennePropertyAdapter // implements Adap
     public Boolean getRemoteChangeNotifications() { return remoteChangeNotificationsProperty.get(); }
     public void setRemoteChangeNotifications(final Boolean value) { remoteChangeNotificationsProperty.set(value); }
 
+    public StringProperty eventBridgeFactoryProperty() { return eventBridgeFactoryProperty; }
+    public String getEventBridgeFactoryProperty() { return eventBridgeFactoryProperty.get(); }
+    public void setEventBridgeFactoryProperty(final String value) { eventBridgeFactoryProperty.set(value); }
+
+    public StringProperty jmsConnectionFactoryProperty() { return jmsConnectionFactoryProperty; }
+    public String getJmsConnectionFactoryProperty() { return jmsConnectionFactoryProperty.get(); }
+    public void setJmsConnectionFactoryProperty(final String value) { jmsConnectionFactoryProperty.set(value); }
+
+    public StringProperty javaGroupsMulticastAddressProperty() { return javaGroupsMulticastAddressProperty; }
+    public String getJavaGroupsMulticastAddressProperty() { return javaGroupsMulticastAddressProperty.get(); }
+    public void setJavaGroupsMulticastAddressProperty(final String value) { javaGroupsMulticastAddressProperty.set(value); }
+
+    public StringProperty javaGroupsMulticastPortProperty() { return javaGroupsMulticastPortProperty; }
+    public String getJavaGroupsMulticastPortProperty() { return javaGroupsMulticastPortProperty.get(); }
+    public void setJavaGroupsMulticastPortProperty(final String value) { javaGroupsMulticastPortProperty.set(value); }
+
+    public StringProperty javaGroupsFileProperty() { return javaGroupsFileProperty; }
+    public String getJavaGroupsFileProperty() { return javaGroupsFileProperty.get(); }
+    public void setJavaGroupsFileProperty(final String value) { javaGroupsFileProperty.set(value); }
+
+
     public List<DataMapAdapter> getDataMapAdapters()
     {
         return dataMapAdapters;

http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/4f769571/src/main/java/org/apache/cayenne/modeler/layout/DataDomainLayout.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/layout/DataDomainLayout.java b/src/main/java/org/apache/cayenne/modeler/layout/DataDomainLayout.java
index fe87076..9cdccfc 100644
--- a/src/main/java/org/apache/cayenne/modeler/layout/DataDomainLayout.java
+++ b/src/main/java/org/apache/cayenne/modeler/layout/DataDomainLayout.java
@@ -22,10 +22,13 @@ package org.apache.cayenne.modeler.layout;
 import java.io.IOException;
 
 import org.apache.cayenne.access.DataRowStore;
+import org.apache.cayenne.event.JMSBridgeFactory;
+import org.apache.cayenne.event.JavaGroupsBridgeFactory;
 import org.apache.cayenne.modeler.adapters.DataDomainAdapter;
 import org.apache.cayenne.modeler.notification.NotificationCenter;
 import org.apache.cayenne.modeler.notification.event.DataDomainChangeEvent;
 import org.apache.cayenne.modeler.notification.listener.DataDomainListener;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -50,7 +53,12 @@ public class DataDomainLayout
 //    private static Map<CayenneProject, BeanPathAdapter<CayenneProject>> dataDomainPropertyAdapterMap = new HashMap<CayenneProject, BeanPathAdapter<CayenneProject>>();
 
     @FXML
-    private TextField dataDomainNameTextField;
+    private TextField nameTextField,
+                      multicastAddressTextField,
+                      multicastPortTextField,
+                      jGroupsFileTextField,
+                      jmsConnectionFactoryNameTextField,
+                      customTransportFactoryClass;
 
     @FXML
     private CheckBox objectValidationCheckBox;
@@ -65,13 +73,16 @@ public class DataDomainLayout
 //    private Button remoteChangeConfigurationButton;
 
     @FXML
-    private VBox javaGroupsConfiguration, jmsConfiguration, customConfiguration;
+    private VBox javaGroupsConfiguration,
+                 jmsConfiguration,
+                 customConfiguration;
 
     @FXML
     private ChoiceBox<String> remoteChangeNotificationsChoiceBox;
 
     private DataDomainAdapter dataDomainAdapter;
 
+    // Remote Change Notification groups.
     private static final String RCN_NONE        = "None";
     private static final String RCN_JAVA_GROUPS = "JavaGroups Multicast";
     private static final String RCN_JMS         = "JMS Transport";
@@ -90,11 +101,6 @@ public class DataDomainLayout
         super(parentComponent, "/layouts/DataDomainLayout.fxml");
     }
 
-//    private final ChangeListener<FieldPathValue> changeObserver = (observable, oldValue, newValue) ->
-//        {
-//            LOGGER.debug("Observable: " + observable + ", oldValue: " + oldValue + ", newValue: " + newValue);
-//        };
-
     @Override
     public void initializeLayout()
     {
@@ -110,27 +116,34 @@ public class DataDomainLayout
         hide(javaGroupsConfiguration, jmsConfiguration, customConfiguration);
 
         remoteChangeNotificationsChoiceBox.getItems().addAll(remoteChangeNotificationOptions);
-        remoteChangeNotificationsChoiceBox.getSelectionModel().select(0);
+        remoteChangeNotificationsChoiceBox.getSelectionModel().select(1);
         remoteChangeNotificationsChoiceBox.valueProperty().addListener((observable, oldValue, newValue) ->
             {
+                dataDomainAdapter.setRemoteChangeNotifications(newValue != RCN_NONE);
+
                 if (newValue == RCN_NONE)
                 {
                     hide(javaGroupsConfiguration, jmsConfiguration, customConfiguration);
+                    dataDomainAdapter.setEventBridgeFactoryProperty(null);
                 }
                 else if (newValue == RCN_JAVA_GROUPS)
                 {
                     hide(jmsConfiguration, customConfiguration);
                     show(javaGroupsConfiguration);
+                    dataDomainAdapter.setEventBridgeFactoryProperty(null);
                 }
                 else if (newValue == RCN_JMS)
                 {
                     hide(javaGroupsConfiguration, customConfiguration);
                     show(jmsConfiguration);
+                    dataDomainAdapter.setEventBridgeFactoryProperty(JMSBridgeFactory.class.getName());
                 }
                 else if (newValue == RCN_CUSTOM)
                 {
                     hide(javaGroupsConfiguration, jmsConfiguration);
                     show(customConfiguration);
+                    if (StringUtils.equals(dataDomainAdapter.getEventBridgeFactoryProperty(), JMSBridgeFactory.class.getName()))
+                        dataDomainAdapter.setEventBridgeFactoryProperty("use.custom.Class");
                 }
             });
     }
@@ -148,7 +161,7 @@ public class DataDomainLayout
 
 //        show(javaGroupsConfiguration, jmsConfiguration, customConfiguration);
 
-        dataDomainNameTextField.textProperty().bindBidirectional(dataDomainAdapter.nameProperty());
+        nameTextField.textProperty().bindBidirectional(dataDomainAdapter.nameProperty());
         objectValidationCheckBox.selectedProperty().bindBidirectional(dataDomainAdapter.validatingObjectsProperty());
 
         objectCacheSizeSpinner.getValueFactory().valueProperty().bindBidirectional(dataDomainAdapter.sizeOfObjectCacheProperty().asObject());
@@ -156,6 +169,11 @@ public class DataDomainLayout
 //        remoteChangeNotificationsCheckBox.selectedProperty().bindBidirectional(dataDomainAdapter.remoteChangeNotificationsProperty());
 
         configureRemoteNotifications(dataDomainAdapter.getUseSharedCache());
+
+        customTransportFactoryClass.textProperty().bindBidirectional(dataDomainAdapter.eventBridgeFactoryProperty());
+        multicastAddressTextField.textProperty().bindBidirectional(dataDomainAdapter.javaGroupsMulticastAddressProperty());
+        multicastPortTextField.textProperty().bindBidirectional(dataDomainAdapter.javaGroupsMulticastPortProperty());
+        jmsConnectionFactoryNameTextField.textProperty().bindBidirectional(dataDomainAdapter.jmsConnectionFactoryProperty());
     }
 
     @Deprecated
@@ -163,8 +181,8 @@ public class DataDomainLayout
     {
         LOGGER.debug("begin editing");
 
-        dataDomainNameTextField.setText(getMainWindow().getCayenneProject().getDataDomainName());
-        dataDomainNameTextField.textProperty().addListener((observable, oldValue, newValue) ->
+        nameTextField.setText(getMainWindow().getCayenneProject().getDataDomainName());
+        nameTextField.textProperty().addListener((observable, oldValue, newValue) ->
             {
                 getMainWindow().getCayenneProject().setDataDomainName(newValue);
                 final DataDomainChangeEvent ddce = new DataDomainChangeEvent(getMainWindow().getCayenneProject(), this, DataDomainChangeEvent.Type.NAME, oldValue, newValue);
@@ -208,13 +226,18 @@ public class DataDomainLayout
     {
         LOGGER.debug("end editing " + this);
 
-        dataDomainNameTextField.textProperty().unbindBidirectional(dataDomainAdapter.nameProperty());
+        nameTextField.textProperty().unbindBidirectional(dataDomainAdapter.nameProperty());
         objectValidationCheckBox.selectedProperty().unbindBidirectional(dataDomainAdapter.validatingObjectsProperty());
 
         objectCacheSizeSpinner.getValueFactory().valueProperty().unbindBidirectional(dataDomainAdapter.sizeOfObjectCacheProperty().asObject());
         useSharedCacheCheckBox.selectedProperty().unbindBidirectional(dataDomainAdapter.useSharedCacheProperty());
 //        remoteChangeNotificationsCheckBox.selectedProperty().unbindBidirectional(dataDomainAdapter.remoteChangeNotificationsProperty());
 
+        customTransportFactoryClass.textProperty().unbindBidirectional(dataDomainAdapter.eventBridgeFactoryProperty());
+        multicastAddressTextField.textProperty().unbindBidirectional(dataDomainAdapter.javaGroupsMulticastAddressProperty());
+        multicastPortTextField.textProperty().unbindBidirectional(dataDomainAdapter.javaGroupsMulticastPortProperty());
+        jmsConnectionFactoryNameTextField.textProperty().unbindBidirectional(dataDomainAdapter.jmsConnectionFactoryProperty());
+
 //        NotificationCenter.removeProjectListener(getMainWindow().getCayenneProject(), this);
 ////        BeanPathAdapter<CayenneModel> dataDomainAdapter = getDataDomainPropertyAdapterMap(getMainWindow().getCayenneModel());
 ////
@@ -237,7 +260,7 @@ public class DataDomainLayout
                 case CACHE:
                     break;
                 case NAME: // Name Changed.
-                    dataDomainNameTextField.setText(getMainWindow().getCayenneProject().getDataDomainName());
+                    nameTextField.setText(getMainWindow().getCayenneProject().getDataDomainName());
                     break;
                 case VALIDATION: // Object Validation Changed
                     objectValidationCheckBox.setSelected((boolean) event.getNewValue());
@@ -252,7 +275,16 @@ public class DataDomainLayout
         if (enabled)
         {
             enable(remoteChangeNotificationsChoiceBox);
-            remoteChangeNotificationsChoiceBox.getSelectionModel().select(0);
+            String eventBridgefactory = dataDomainAdapter.getEventBridgeFactoryProperty();
+
+            if (StringUtils.equals(eventBridgefactory, JavaGroupsBridgeFactory.class.getName()))
+                remoteChangeNotificationsChoiceBox.getSelectionModel().select(1);
+            else if (StringUtils.equals(eventBridgefactory, JMSBridgeFactory.class.getName()))
+                remoteChangeNotificationsChoiceBox.getSelectionModel().select(2);
+            else
+                remoteChangeNotificationsChoiceBox.getSelectionModel().select(3);
+
+//            remoteChangeNotificationsChoiceBox.getSelectionModel().select(0);
 //            hide(javaGroupsConfiguration, jmsConfiguration, customConfiguration);
 
 //            enable(remoteChangeNotificationsCheckBox);

http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/4f769571/src/main/java/org/apache/cayenne/modeler/project/CayenneProject.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/project/CayenneProject.java b/src/main/java/org/apache/cayenne/modeler/project/CayenneProject.java
index d1997a9..8dcaabb 100644
--- a/src/main/java/org/apache/cayenne/modeler/project/CayenneProject.java
+++ b/src/main/java/org/apache/cayenne/modeler/project/CayenneProject.java
@@ -29,6 +29,8 @@ import org.apache.cayenne.access.DataDomain;
 import org.apache.cayenne.access.DataRowStore;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
+import org.apache.cayenne.event.JMSBridgeFactory;
+import org.apache.cayenne.event.JavaGroupsBridgeFactory;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.adapters.DataDomainAdapter;
 import org.apache.cayenne.modeler.di.Injection;
@@ -183,6 +185,56 @@ public class CayenneProject
         setDomainBooleanProperty(DataRowStore.REMOTE_NOTIFICATION_PROPERTY, remoteChangeNotificationsEnabled, DataRowStore.REMOTE_NOTIFICATION_DEFAULT);
     }
 
+    public String getEventBridgeFactory()
+    {
+        return getDomainProperty(DataRowStore.EVENT_BRIDGE_FACTORY_PROPERTY, DataRowStore.EVENT_BRIDGE_FACTORY_DEFAULT);
+    }
+
+    public void setEventBridgeFactory(String eventBridgeFactory)
+    {
+        setDomainStringProperty(DataRowStore.EVENT_BRIDGE_FACTORY_PROPERTY, eventBridgeFactory, DataRowStore.EVENT_BRIDGE_FACTORY_DEFAULT);
+    }
+
+    public String getJavaGroupsMulticastAddress()
+    {
+        return getDomainProperty(JavaGroupsBridgeFactory.MCAST_ADDRESS_PROPERTY, JavaGroupsBridgeFactory.MCAST_ADDRESS_DEFAULT);
+    }
+
+    public void setJavaGroupsMulticastAddress(String multicastAddress)
+    {
+        setDomainStringProperty(JavaGroupsBridgeFactory.MCAST_ADDRESS_PROPERTY, multicastAddress, JavaGroupsBridgeFactory.MCAST_ADDRESS_DEFAULT);
+    }
+
+    public String getJavaGroupsMulticastPort()
+    {
+        return getDomainProperty(JavaGroupsBridgeFactory.MCAST_PORT_PROPERTY, JavaGroupsBridgeFactory.MCAST_PORT_DEFAULT);
+    }
+
+    public void setJavaGroupsMulticastPort(String multicastPort)
+    {
+        setDomainStringProperty(JavaGroupsBridgeFactory.MCAST_PORT_PROPERTY, multicastPort, JavaGroupsBridgeFactory.MCAST_PORT_DEFAULT);
+    }
+
+    public String getJavaGroupsFile()
+    {
+        return getDomainProperty(JavaGroupsBridgeFactory.JGROUPS_CONFIG_URL_PROPERTY, "");
+    }
+
+    public void setJavaGroupsFile(String javaGroupsFile)
+    {
+        setDomainStringProperty(JavaGroupsBridgeFactory.JGROUPS_CONFIG_URL_PROPERTY, javaGroupsFile, "");
+    }
+
+    public String getJmsConnectionFactory()
+    {
+        return getDomainProperty(JMSBridgeFactory.TOPIC_CONNECTION_FACTORY_PROPERTY, JMSBridgeFactory.TOPIC_CONNECTION_FACTORY_DEFAULT);
+    }
+
+    public void setJmsConnectionFactory(String jmsConnectionFactory)
+    {
+        setDomainStringProperty(JMSBridgeFactory.TOPIC_CONNECTION_FACTORY_PROPERTY, jmsConnectionFactory, JMSBridgeFactory.TOPIC_CONNECTION_FACTORY_DEFAULT);
+    }
+
     public Collection<DataMap> getDataMaps()
     {
         return root.getDataMaps();

http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/4f769571/src/main/resources/layouts/DataDomainLayout.fxml
----------------------------------------------------------------------
diff --git a/src/main/resources/layouts/DataDomainLayout.fxml b/src/main/resources/layouts/DataDomainLayout.fxml
index 2ce3388..536a316 100644
--- a/src/main/resources/layouts/DataDomainLayout.fxml
+++ b/src/main/resources/layouts/DataDomainLayout.fxml
@@ -27,9 +27,9 @@
 <?import java.lang.*?>
 <?import javafx.scene.layout.*?>
 
-<fx:root minHeight="-Infinity" prefWidth="600.0" type="AnchorPane" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
+<fx:root minHeight="-Infinity" prefWidth="750.0" type="AnchorPane" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
    <children>
-      <VBox maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefWidth="600.0">
+      <VBox maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefWidth="750.0">
          <children>
             <Label text="DataDomain Configuration" VBox.vgrow="ALWAYS">
                <font>
@@ -47,7 +47,7 @@
               </rowConstraints>
                <children>
                   <Label alignment="CENTER_RIGHT" text="Name: " />
-                  <TextField fx:id="dataDomainNameTextField" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" GridPane.columnIndex="1" />
+                  <TextField fx:id="nameTextField" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" GridPane.columnIndex="1" />
                   <CheckBox fx:id="objectValidationCheckBox" mnemonicParsing="false" text="Object Validation" GridPane.columnIndex="1" GridPane.rowIndex="1" />
                </children>
             </GridPane>
@@ -103,9 +103,9 @@
                     </rowConstraints>
                      <children>
                         <Label alignment="CENTER_RIGHT" text="Multicast Address: " />
-                        <TextField fx:id="dataDomainNameTextField1" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" GridPane.columnIndex="1" />
+                        <TextField fx:id="multicastAddressTextField" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" GridPane.columnIndex="1" />
                         <Label alignment="CENTER_RIGHT" text="Multicast Port: " GridPane.rowIndex="1" />
-                        <TextField fx:id="dataDomainNameTextField11" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />
+                        <TextField fx:id="multicastPortTextField" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />
                      </children>
                   </GridPane>
                   <RadioButton mnemonicParsing="false" text="File Configuration">
@@ -123,10 +123,13 @@
                     </rowConstraints>
                      <children>
                         <Label alignment="CENTER_RIGHT" text="JGroups File: " />
-                        <TextField fx:id="dataDomainNameTextField111" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" GridPane.columnIndex="1" />
+                        <TextField fx:id="jGroupsFileTextField" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="200.0" GridPane.columnIndex="1" />
                      </children>
                   </GridPane>
                </children>
+               <VBox.margin>
+                  <Insets left="200.0" />
+               </VBox.margin>
             </VBox>
             <VBox fx:id="jmsConfiguration" VBox.vgrow="ALWAYS">
                <children>
@@ -145,10 +148,13 @@
                     </rowConstraints>
                      <children>
                         <Label alignment="CENTER_RIGHT" text="Connection Factory Name: " />
-                        <TextField maxWidth="-Infinity" minWidth="-Infinity" prefWidth="300.0" GridPane.columnIndex="1" />
+                        <TextField fx:id="jmsConnectionFactoryNameTextField" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="300.0" GridPane.columnIndex="1" />
                      </children>
                   </GridPane>
                </children>
+               <VBox.margin>
+                  <Insets left="200.0" />
+               </VBox.margin>
             </VBox>
             <VBox fx:id="customConfiguration">
                <children>
@@ -167,10 +173,13 @@
                     </rowConstraints>
                      <children>
                         <Label text="Factory Class: " />
-                        <TextField maxWidth="-Infinity" minWidth="-Infinity" prefWidth="300.0" GridPane.columnIndex="1" />
+                        <TextField fx:id="customTransportFactoryClass" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="300.0" GridPane.columnIndex="1" />
                      </children>
                   </GridPane>
                </children>
+               <VBox.margin>
+                  <Insets left="200.0" />
+               </VBox.margin>
             </VBox>
          </children>
          <padding>


[7/7] cayenne-modeler git commit: First attempt at using generic bind/unbind mechanism.

Posted by mg...@apache.org.
First attempt at using generic bind/unbind mechanism.


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

Branch: refs/heads/master
Commit: 1edef7d5350357be88178022262994f7f127d3cc
Parents: 4861004
Author: mrg <bl...@gmail.com>
Authored: Sat Jun 3 07:36:29 2017 -0400
Committer: mrg <bl...@gmail.com>
Committed: Sat Jun 3 07:36:29 2017 -0400

----------------------------------------------------------------------
 .../cayenne/modeler/layout/DataMapLayout.java   | 39 +++++++++++++++-----
 1 file changed, 30 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne-modeler/blob/1edef7d5/src/main/java/org/apache/cayenne/modeler/layout/DataMapLayout.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/cayenne/modeler/layout/DataMapLayout.java b/src/main/java/org/apache/cayenne/modeler/layout/DataMapLayout.java
index 1fc8ad5..cb8d9e6 100644
--- a/src/main/java/org/apache/cayenne/modeler/layout/DataMapLayout.java
+++ b/src/main/java/org/apache/cayenne/modeler/layout/DataMapLayout.java
@@ -20,6 +20,8 @@
 package org.apache.cayenne.modeler.layout;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.cayenne.modeler.adapters.DataMapAdapter;
 import org.apache.commons.logging.Log;
@@ -45,6 +47,8 @@ public class DataMapLayout
 
     private DataMapAdapter dataMapAdapter;
 
+    private List<Binding<?>> bindings;
+
     public DataMapLayout(final MainWindowSupport parentComponent) throws IOException
     {
         super(parentComponent, "/layouts/DataMapLayout.fxml");
@@ -57,20 +61,37 @@ public class DataMapLayout
     }
 
     @Override
-    public void beginEditing()
+    public void initializeBindings()
     {
-        LOGGER.debug("begin editing " + this);
+        bindings = new ArrayList<>();
 
-        dataMapNameTextField.textProperty().bindBidirectional(dataMapAdapter.nameProperty());
-        quoteSqlIdentifiersCheckBox.selectedProperty().bindBidirectional(dataMapAdapter.quoteSQLIdentifiersProperty());
+        bindings.add(new Binding<>(dataMapNameTextField.textProperty(), dataMapAdapter.nameProperty()));
+        bindings.add(new Binding<>(quoteSqlIdentifiersCheckBox.selectedProperty(), dataMapAdapter.quoteSQLIdentifiersProperty()));
     }
 
     @Override
-    public void endEditing()
+    public List<Binding<?>> getBindings()
     {
-        LOGGER.debug("end editing " + this);
-
-        dataMapNameTextField.textProperty().unbindBidirectional(dataMapAdapter.nameProperty());
-        quoteSqlIdentifiersCheckBox.selectedProperty().unbindBidirectional(dataMapAdapter.quoteSQLIdentifiersProperty());
+        return bindings;
     }
+
+//    @Override
+//    public void beginEditing()
+//    {
+//        LOGGER.debug("begin editing " + this);
+//
+//        DetailEditorSupport.super.beginEditing();
+////        dataMapNameTextField.textProperty().bindBidirectional(dataMapAdapter.nameProperty());
+////        quoteSqlIdentifiersCheckBox.selectedProperty().bindBidirectional(dataMapAdapter.quoteSQLIdentifiersProperty());
+//    }
+//
+//    @Override
+//    public void endEditing()
+//    {
+//        LOGGER.debug("end editing " + this);
+//
+//        DetailEditorSupport.super.endEditing();
+////        dataMapNameTextField.textProperty().unbindBidirectional(dataMapAdapter.nameProperty());
+////        quoteSqlIdentifiersCheckBox.selectedProperty().unbindBidirectional(dataMapAdapter.quoteSQLIdentifiersProperty());
+//    }
 }