From 01383a74dcd068891895e672102cb3c7e7966caa Mon Sep 17 00:00:00 2001 From: Fabienne Ducroquet Date: Wed, 24 Aug 2016 14:30:51 +0200 Subject: [PATCH] gs-reactor: Create common interface for model properties and group them in a package --- .../genericsystem/carcolor/CarColorApp.java | 2 +- .../example/reactor/AppHtml.java | 2 +- .../java/org/genericsystem/reactor/Tag.java | 4 ++- .../genericsystem/reactor/gs/GSComposite.java | 1 + .../reactor/gs/GSInputTextWithConversion.java | 1 + .../org/genericsystem/reactor/gs/GSModal.java | 2 +- .../genericsystem/reactor/gs/GSSelect.java | 1 + .../reactor/gs/GSStepEditor.java | 1 + .../org/genericsystem/reactor/gs/GSTable.java | 1 + .../org/genericsystem/reactor/gs/GSTag.java | 1 + .../reactor/gstag/HtmlHyperLink.java | 4 +-- .../GenericStringDefaults.java | 2 +- .../modelproperties/ModelProperty.java | 26 +++++++++++++++++++ .../SelectionDefaults.java | 22 +++++----------- .../SwitchDefaults.java | 14 +++------- .../TextPropertyDefaults.java | 15 ++--------- 16 files changed, 52 insertions(+), 47 deletions(-) rename gs-reactor/src/main/java/org/genericsystem/reactor/{gs => modelproperties}/GenericStringDefaults.java (96%) create mode 100644 gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/ModelProperty.java rename gs-reactor/src/main/java/org/genericsystem/reactor/{gs => modelproperties}/SelectionDefaults.java (89%) rename gs-reactor/src/main/java/org/genericsystem/reactor/{gs => modelproperties}/SwitchDefaults.java (87%) rename gs-reactor/src/main/java/org/genericsystem/reactor/{gs => modelproperties}/TextPropertyDefaults.java (66%) diff --git a/gs-carcolor/src/main/java/org/genericsystem/carcolor/CarColorApp.java b/gs-carcolor/src/main/java/org/genericsystem/carcolor/CarColorApp.java index aa4684987..08f19cbfb 100644 --- a/gs-carcolor/src/main/java/org/genericsystem/carcolor/CarColorApp.java +++ b/gs-carcolor/src/main/java/org/genericsystem/carcolor/CarColorApp.java @@ -19,7 +19,7 @@ import org.genericsystem.reactor.gs.GSModal; import org.genericsystem.reactor.gs.GSMonitor; import org.genericsystem.reactor.gs.GSTable; -import org.genericsystem.reactor.gs.SelectionDefaults; +import org.genericsystem.reactor.modelproperties.SelectionDefaults; /** * @author Nicolas Feybesse diff --git a/gs-example-reactor/src/main/java/org/genericsystem/example/reactor/AppHtml.java b/gs-example-reactor/src/main/java/org/genericsystem/example/reactor/AppHtml.java index 2a1343dd9..5fdfbc30d 100644 --- a/gs-example-reactor/src/main/java/org/genericsystem/example/reactor/AppHtml.java +++ b/gs-example-reactor/src/main/java/org/genericsystem/example/reactor/AppHtml.java @@ -23,8 +23,8 @@ import org.genericsystem.reactor.gs.GSSelect.ColorsSelect; import org.genericsystem.reactor.gs.GSStepEditor; import org.genericsystem.reactor.gs.GSTable; -import org.genericsystem.reactor.gs.SelectionDefaults; import org.genericsystem.reactor.model.ObservableListExtractor; +import org.genericsystem.reactor.modelproperties.SelectionDefaults; @DependsOnModel({ Car.class, Power.class, Diesel.class, Color.class, CarColor.class }) @RunScript(ExampleReactorScript.class) diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/Tag.java b/gs-reactor/src/main/java/org/genericsystem/reactor/Tag.java index 32cf5f5d4..6db6c00db 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/Tag.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/Tag.java @@ -14,7 +14,7 @@ import org.genericsystem.api.core.ApiStatics; import org.genericsystem.defaults.tools.TransformationObservableList; import org.genericsystem.reactor.ViewContext.RootViewContext; -import org.genericsystem.reactor.gs.TextPropertyDefaults; +import org.genericsystem.reactor.modelproperties.TextPropertyDefaults; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -81,6 +81,7 @@ public void addPrefixBinding(Consumer consumer) { preFixedBindings.add((modelContext, node) -> consumer.accept((M) modelContext)); } + @Override public void addPostfixBinding(Consumer consumer) { postFixedBindings.add((modelContext, node) -> consumer.accept((M) modelContext)); } @@ -209,6 +210,7 @@ public void addPropertyChangeListener(String propertyNa }); } + @Override public void createNewProperty(String propertyName) { addPrefixBinding(modelContext -> modelContext.createNewProperty(this, propertyName)); } diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSComposite.java b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSComposite.java index 16796f77d..99506761a 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSComposite.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSComposite.java @@ -7,6 +7,7 @@ import org.genericsystem.reactor.gstag.HtmlLabel; import org.genericsystem.reactor.gstag.HtmlRadio; import org.genericsystem.reactor.model.StringExtractor; +import org.genericsystem.reactor.modelproperties.SelectionDefaults; import javafx.beans.binding.Bindings; diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSInputTextWithConversion.java b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSInputTextWithConversion.java index 7707c3bcc..2340393c4 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSInputTextWithConversion.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSInputTextWithConversion.java @@ -7,6 +7,7 @@ import org.genericsystem.reactor.ReactorStatics; import org.genericsystem.reactor.gstag.HtmlInputText; import org.genericsystem.reactor.model.GenericModel; +import org.genericsystem.reactor.modelproperties.SelectionDefaults; import io.vertx.core.logging.Logger; import io.vertx.core.logging.LoggerFactory; diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSModal.java b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSModal.java index f6a48907b..cb112aaf3 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSModal.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSModal.java @@ -6,8 +6,8 @@ import org.genericsystem.reactor.gs.FlexDirection; import org.genericsystem.reactor.gs.GSSection; import org.genericsystem.reactor.gs.GSTag; -import org.genericsystem.reactor.gs.SelectionDefaults; import org.genericsystem.reactor.gstag.HtmlHyperLink; +import org.genericsystem.reactor.modelproperties.SelectionDefaults; import javafx.beans.binding.Bindings; diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSSelect.java b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSSelect.java index 682b567ae..f8fd23b6b 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSSelect.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSSelect.java @@ -7,6 +7,7 @@ import org.genericsystem.reactor.gstag.HtmlOption; import org.genericsystem.reactor.model.ObservableListExtractor; import org.genericsystem.reactor.model.StringExtractor; +import org.genericsystem.reactor.modelproperties.SelectionDefaults; import javafx.beans.binding.Bindings; import javafx.beans.value.ChangeListener; diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSStepEditor.java b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSStepEditor.java index 40dbe57b8..eab661b9e 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSStepEditor.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSStepEditor.java @@ -4,6 +4,7 @@ import org.genericsystem.reactor.gs.GSSubcellDisplayer.InstanceLinkTitleDisplayer; import org.genericsystem.reactor.gs.GSSubcellDisplayer.InstanceTitleDisplayer; import org.genericsystem.reactor.gstag.HtmlHyperLink; +import org.genericsystem.reactor.modelproperties.SwitchDefaults; public class GSStepEditor extends GSEditor implements SwitchDefaults { diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSTable.java b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSTable.java index a8cc6af59..e9f436e82 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSTable.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSTable.java @@ -9,6 +9,7 @@ import org.genericsystem.reactor.model.GenericModel; import org.genericsystem.reactor.model.ObservableListExtractor; import org.genericsystem.reactor.model.StringExtractor; +import org.genericsystem.reactor.modelproperties.SelectionDefaults; /** * @author Nicolas Feybesse diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSTag.java b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSTag.java index 96c1ac552..9001694c4 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSTag.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSTag.java @@ -7,6 +7,7 @@ import org.genericsystem.reactor.Tag; import org.genericsystem.reactor.model.GenericModel; import org.genericsystem.reactor.model.ObservableListExtractor; +import org.genericsystem.reactor.modelproperties.GenericStringDefaults; import javafx.beans.binding.ListBinding; import javafx.beans.value.ObservableValue; diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gstag/HtmlHyperLink.java b/gs-reactor/src/main/java/org/genericsystem/reactor/gstag/HtmlHyperLink.java index 94a59f1dc..94fc6c1c8 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gstag/HtmlHyperLink.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/gstag/HtmlHyperLink.java @@ -4,9 +4,9 @@ import org.genericsystem.reactor.HtmlDomNode.ActionHtmlNode; import org.genericsystem.reactor.gs.GSTag; -import org.genericsystem.reactor.gs.SelectionDefaults; -import org.genericsystem.reactor.gs.SwitchDefaults; import org.genericsystem.reactor.model.GenericModel; +import org.genericsystem.reactor.modelproperties.SelectionDefaults; +import org.genericsystem.reactor.modelproperties.SwitchDefaults; /** * @author Nicolas Feybesse diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GenericStringDefaults.java b/gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/GenericStringDefaults.java similarity index 96% rename from gs-reactor/src/main/java/org/genericsystem/reactor/gs/GenericStringDefaults.java rename to gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/GenericStringDefaults.java index 2f3490357..03bfca60c 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GenericStringDefaults.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/GenericStringDefaults.java @@ -1,4 +1,4 @@ -package org.genericsystem.reactor.gs; +package org.genericsystem.reactor.modelproperties; import org.genericsystem.reactor.model.GenericModel; import org.genericsystem.reactor.model.StringExtractor; diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/ModelProperty.java b/gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/ModelProperty.java new file mode 100644 index 000000000..3789b063d --- /dev/null +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/ModelProperty.java @@ -0,0 +1,26 @@ +package org.genericsystem.reactor.modelproperties; + +import java.util.function.Consumer; +import java.util.function.Function; + +import org.genericsystem.reactor.Model; + +import javafx.beans.property.Property; +import javafx.beans.value.ObservableValue; + +public interface ModelProperty { + + void storePropertyWithoutCheck(String propertyName, M model, Function> applyOnModel); + + void storeProperty(String propertyName, Function> applyOnModel); + + void addPrefixBinding(Consumer consumer); + + void addPostfixBinding(Consumer consumer); + + Property getProperty(String property, Model model); + + ObservableValue getObservableValue(String property, Model model); + + void createNewProperty(String propertyName); +} diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/SelectionDefaults.java b/gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/SelectionDefaults.java similarity index 89% rename from gs-reactor/src/main/java/org/genericsystem/reactor/gs/SelectionDefaults.java rename to gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/SelectionDefaults.java index b34e079b7..851635af8 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/SelectionDefaults.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/SelectionDefaults.java @@ -1,36 +1,26 @@ -package org.genericsystem.reactor.gs; +package org.genericsystem.reactor.modelproperties; import java.util.Optional; -import java.util.function.Consumer; - -import javafx.beans.property.Property; -import javafx.collections.ListChangeListener; -import javafx.collections.ObservableList; import org.genericsystem.common.Generic; import org.genericsystem.defaults.tools.BidirectionalBinding; -import org.genericsystem.reactor.Model; import org.genericsystem.reactor.ReactorStatics; import org.genericsystem.reactor.Tag; import org.genericsystem.reactor.model.GenericModel; +import javafx.beans.property.Property; +import javafx.collections.ListChangeListener; +import javafx.collections.ObservableList; + /** * @author Nicolas Feybesse * */ -public interface SelectionDefaults { +public interface SelectionDefaults extends ModelProperty { public static final String SELECTION = "selection"; public static final String UPDATED_GENERIC = "updatedGeneric"; - // void addPrefixBinding(Consumer consumer); - - void addPostfixBinding(Consumer consumer); - - void createNewProperty(String propertyName); - - Property getProperty(String property, Model model); - default void createSelectionProperty() { createNewProperty(SELECTION); createNewProperty(UPDATED_GENERIC); diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/SwitchDefaults.java b/gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/SwitchDefaults.java similarity index 87% rename from gs-reactor/src/main/java/org/genericsystem/reactor/gs/SwitchDefaults.java rename to gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/SwitchDefaults.java index 7e212e1b7..bdc930d8a 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/SwitchDefaults.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/SwitchDefaults.java @@ -1,33 +1,25 @@ -package org.genericsystem.reactor.gs; +package org.genericsystem.reactor.modelproperties; -import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; -import org.genericsystem.reactor.Model; +import org.genericsystem.reactor.gs.GSTag; import org.genericsystem.reactor.model.GenericModel; import org.genericsystem.reactor.model.ObservableListExtractor; import javafx.beans.property.Property; import javafx.beans.property.ReadOnlyIntegerWrapper; import javafx.beans.property.SimpleObjectProperty; -import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; -public interface SwitchDefaults { +public interface SwitchDefaults extends ModelProperty { public static final String SUBMODELS = "subModels"; public static final String INDEX = "index"; public static final String CURRENT_MODEL = "currentModel"; public static final String NAME_MODEL = "nameModel"; - void addPrefixBinding(Consumer consumer); - - void storePropertyWithoutCheck(String propertyName, GenericModel model, Function> applyOnModel); - - Property getProperty(String property, Model model); - default ObservableList getSwitchModels(GenericModel model) { Property> modelsProperty = getProperty(SUBMODELS, model); return modelsProperty != null ? modelsProperty.getValue() : null; diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/TextPropertyDefaults.java b/gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/TextPropertyDefaults.java similarity index 66% rename from gs-reactor/src/main/java/org/genericsystem/reactor/gs/TextPropertyDefaults.java rename to gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/TextPropertyDefaults.java index 59b38fbb6..29d78b260 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/TextPropertyDefaults.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/modelproperties/TextPropertyDefaults.java @@ -1,6 +1,5 @@ -package org.genericsystem.reactor.gs; +package org.genericsystem.reactor.modelproperties; -import java.util.function.Consumer; import java.util.function.Function; import org.genericsystem.reactor.Model; @@ -11,21 +10,11 @@ import javafx.beans.value.ObservableValue; import javafx.beans.value.WeakChangeListener; -public interface TextPropertyDefaults { +public interface TextPropertyDefaults extends ModelProperty { public static final String TEXT = "text"; public static final String TEXT_BINDING = "binding"; - void storePropertyWithoutCheck(String propertyName, M model, Function> applyOnModel); - - void storeProperty(String propertyName, Function> applyOnModel); - - void addPrefixBinding(Consumer consumer); - - Property getProperty(String property, Model model); - - ObservableValue getObservableValue(String property, Model model); - default Property getTextProperty(M model) { storePropertyWithoutCheck(TEXT, model, m -> new SimpleStringProperty()); Property text = getProperty(TEXT, model);