From 131552c08848bf51c27ddad128754ac7b7f988e1 Mon Sep 17 00:00:00 2001 From: Fabienne Ducroquet Date: Thu, 4 Aug 2016 15:36:14 +0200 Subject: [PATCH] gs-reactor: Clean up GSInputTextWithConversion --- .../genericsystem/reactor/ReactorStatics.java | 1 - .../reactor/gs/GSInputTextWithConversion.java | 38 +++++-------------- 2 files changed, 9 insertions(+), 30 deletions(-) diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/ReactorStatics.java b/gs-reactor/src/main/java/org/genericsystem/reactor/ReactorStatics.java index db3d7d001..e611d2708 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/ReactorStatics.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/ReactorStatics.java @@ -15,7 +15,6 @@ public class ReactorStatics { public static final String SELECTION_SHIFT = "selectionShift"; public static final String SELECTION_STRING = "selectionString"; public static final String VALUE = "value"; - public static final String CONVERTER = "converter"; public static final String TEXT = "text"; public static final String DISABLED = "disabled"; public static final String DISPLAY = "display"; 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 a57856b94..64d4e9126 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 @@ -1,7 +1,6 @@ package org.genericsystem.reactor.gs; import java.io.Serializable; -import java.util.function.Function; import org.genericsystem.api.core.ApiStatics; import org.genericsystem.reactor.ReactorStatics; @@ -15,72 +14,53 @@ import javafx.beans.value.ChangeListener; import javafx.util.StringConverter; -public class GSInputTextWithConversion extends GSInputText { +public class GSInputTextWithConversion extends GSInputText { static final Logger log = LoggerFactory.getLogger(GSInputTextWithConversion.class); public GSInputTextWithConversion(GSTag parent) { super(parent); - addStyle("width", "100%"); addStyle("height", "100%"); - - createNewProperty(ReactorStatics.CONVERTER); - initProperty(ReactorStatics.CONVERTER, model -> getConverter(model)); createNewProperty(ReactorStatics.VALUE); - storeProperty(ReactorStatics.INVALID, model -> Bindings.createBooleanBinding(() -> { boolean required = model.getGeneric().isRequiredConstraintEnabled(ApiStatics.BASE_POSITION); String value = model.getObservableAttributes(this).get(ReactorStatics.VALUE); if (required && (value == null || value.trim().isEmpty())) return true; try { - ((StringConverter) getProperty(ReactorStatics.CONVERTER, model).getValue()).fromString(value); + getConverter(model).fromString(value); return false; } catch (Exception e) { return true; } }, model.getObservableAttributes(this))); bindOptionalStyleClass(ReactorStatics.INVALID, ReactorStatics.INVALID); - - bindBiDirectionalAttributeOnEnter(ReactorStatics.VALUE, ReactorStatics.VALUE, model -> (StringConverter) getProperty(ReactorStatics.CONVERTER, model).getValue()); + bindBiDirectionalAttributeOnEnter(ReactorStatics.VALUE, ReactorStatics.VALUE); } private void bindBiDirectionalAttributeOnEnter(String propertyName, String attributeName) { - bindBiDirectionalAttributeOnEnter(propertyName, attributeName, ApiStatics.STRING_CONVERTERS.get(String.class)); - } - - private void bindBiDirectionalAttributeOnEnter(String propertyName, String attributeName, StringConverter stringConverter) { - bindBiDirectionalAttributeOnEnter(propertyName, attributeName, model -> stringConverter); - } - - private void bindBiDirectionalAttributeOnEnter(String propertyName, String attributeName, Function> getStringConverter) { bindAction(model -> { - Property observable = getProperty(propertyName, model); - StringConverter stringConverter = getStringConverter.apply(model); - String attributeValue = model.getObservableAttributes(this).get(attributeName); try { - observable.setValue(stringConverter.fromString(attributeValue)); + getProperty(propertyName, model).setValue(getConverter(model).fromString(model.getObservableAttributes(this).get(attributeName))); } catch (Exception ignore) { log.warn("Conversion exception : " + ignore.getMessage()); } }); addPrefixBinding(model -> { - StringConverter stringConverter = getStringConverter.apply(model); - ChangeListener listener = (o, old, newValue) -> model.getObservableAttributes(this).put(attributeName, stringConverter.toString(newValue)); - Property observable = getProperty(propertyName, model); - observable.addListener(listener); + ChangeListener listener = (o, old, newValue) -> model.getObservableAttributes(this).put(attributeName, getConverter(model).toString(newValue)); + ((Property) getProperty(propertyName, model)).addListener(listener); }); } - public StringConverter getConverter(GenericModel model) { + public StringConverter getConverter(GenericModel model) { Class clazz = model.getGeneric().getInstanceValueClassConstraint(); if (clazz == null) clazz = String.class; return ApiStatics.STRING_CONVERTERS.get(clazz); } - public static class GSInputTextEditorWithConversion extends GSInputTextWithConversion { + public static class GSInputTextEditorWithConversion extends GSInputTextWithConversion { public GSInputTextEditorWithConversion(GSTag parent) { super(parent); @@ -92,7 +72,7 @@ public GSInputTextEditorWithConversion(GSTag parent) { } @Override - public StringConverter getConverter(GenericModel model) { + public StringConverter getConverter(GenericModel model) { Class clazz = model.getGeneric().getMeta().getInstanceValueClassConstraint(); if (clazz == null) { if (model.getGeneric().getValue() != null)