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());
+// }
}