Skip to content

Commit

Permalink
gs-reactor: Create common interface for model properties and group th…
Browse files Browse the repository at this point in the history
…em in a package
  • Loading branch information
fducroquet committed Aug 24, 2016
1 parent 1168cc5 commit 01383a7
Show file tree
Hide file tree
Showing 16 changed files with 52 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
4 changes: 3 additions & 1 deletion gs-reactor/src/main/java/org/genericsystem/reactor/Tag.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -81,6 +81,7 @@ public void addPrefixBinding(Consumer<M> consumer) {
preFixedBindings.add((modelContext, node) -> consumer.accept((M) modelContext));
}

@Override
public void addPostfixBinding(Consumer<M> consumer) {
postFixedBindings.add((modelContext, node) -> consumer.accept((M) modelContext));
}
Expand Down Expand Up @@ -209,6 +210,7 @@ public <T extends Serializable> void addPropertyChangeListener(String propertyNa
});
}

@Override
public void createNewProperty(String propertyName) {
addPrefixBinding(modelContext -> modelContext.createNewProperty(this, propertyName));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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<M extends Model> {

<T> void storePropertyWithoutCheck(String propertyName, M model, Function<M, ObservableValue<T>> applyOnModel);

<T> void storeProperty(String propertyName, Function<M, ObservableValue<T>> applyOnModel);

void addPrefixBinding(Consumer<M> consumer);

void addPostfixBinding(Consumer<M> consumer);

<T> Property<T> getProperty(String property, Model model);

<T> ObservableValue<T> getObservableValue(String property, Model model);

void createNewProperty(String propertyName);
}
Original file line number Diff line number Diff line change
@@ -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<GenericModel> {

public static final String SELECTION = "selection";
public static final String UPDATED_GENERIC = "updatedGeneric";

// void addPrefixBinding(Consumer<GenericModel> consumer);

void addPostfixBinding(Consumer<GenericModel> consumer);

void createNewProperty(String propertyName);

<T> Property<T> getProperty(String property, Model model);

default void createSelectionProperty() {
createNewProperty(SELECTION);
createNewProperty(UPDATED_GENERIC);
Expand Down
Original file line number Diff line number Diff line change
@@ -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<GenericModel> {

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<GenericModel> consumer);

<T> void storePropertyWithoutCheck(String propertyName, GenericModel model, Function<GenericModel, ObservableValue<T>> applyOnModel);

<T> Property<T> getProperty(String property, Model model);

default ObservableList<GenericModel> getSwitchModels(GenericModel model) {
Property<ObservableList<GenericModel>> modelsProperty = getProperty(SUBMODELS, model);
return modelsProperty != null ? modelsProperty.getValue() : null;
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -11,21 +10,11 @@
import javafx.beans.value.ObservableValue;
import javafx.beans.value.WeakChangeListener;

public interface TextPropertyDefaults<M extends Model> {
public interface TextPropertyDefaults<M extends Model> extends ModelProperty<M> {

public static final String TEXT = "text";
public static final String TEXT_BINDING = "binding";

<T> void storePropertyWithoutCheck(String propertyName, M model, Function<M, ObservableValue<T>> applyOnModel);

<T> void storeProperty(String propertyName, Function<M, ObservableValue<T>> applyOnModel);

void addPrefixBinding(Consumer<M> consumer);

<T> Property<T> getProperty(String property, Model model);

<T> ObservableValue<T> getObservableValue(String property, Model model);

default Property<String> getTextProperty(M model) {
storePropertyWithoutCheck(TEXT, model, m -> new SimpleStringProperty());
Property<String> text = getProperty(TEXT, model);
Expand Down

0 comments on commit 01383a7

Please sign in to comment.