diff --git a/CPS/config/CpsNamespace.properties b/CPS/config/CpsNamespace.properties index dd201afaa39cca23420378226cba6207d4ed133a..7a6c5bb542aecc4156b5d02eabe047d81cb36403 100644 --- a/CPS/config/CpsNamespace.properties +++ b/CPS/config/CpsNamespace.properties @@ -10,6 +10,7 @@ DISPLAY_MODE_NODE=displayMode FACE_IS_TOUCHABLE_NODE=faceIsTouchable FOREGROUND_NODE=foreground ITEMS_VARIABLE_NODE=itemsVariable +INITIAL_VALUE_NODE=initialValue HTML_TEMPLATE_NODE=htmlTemplate LABEL_TRANSLATION_NODE=labelTranslation LANDING_LINE_LENGTH_NODE=landingLineLength diff --git a/CPS/src/lu/list/itis/dkd/tui/utility/CpsNamespace.java b/CPS/src/lu/list/itis/dkd/tui/utility/CpsNamespace.java index 3f109ad81ca5690e81e37e389289d2d864196fab..a726cd453b321db70b6a606bab122bf998bf38f1 100644 --- a/CPS/src/lu/list/itis/dkd/tui/utility/CpsNamespace.java +++ b/CPS/src/lu/list/itis/dkd/tui/utility/CpsNamespace.java @@ -43,6 +43,7 @@ public class CpsNamespace extends NLS { public static String HTML_TEMPLATE_NODE; + public static String INITIAL_VALUE_NODE; public static String ITEMS_VARIABLE_NODE; public static String LABEL_TRANSLATION_NODE; diff --git a/CPS/src/lu/list/itis/dkd/tui/utility/RotaryEncoder.java b/CPS/src/lu/list/itis/dkd/tui/utility/RotaryEncoder.java index 399c604184cc2a94040174d0d2db2ddbf7b67a16..9a253f6ac3b240039204d0707d9c43067d4bddce 100644 --- a/CPS/src/lu/list/itis/dkd/tui/utility/RotaryEncoder.java +++ b/CPS/src/lu/list/itis/dkd/tui/utility/RotaryEncoder.java @@ -13,8 +13,15 @@ */ package lu.list.itis.dkd.tui.utility; +import lu.list.itis.dkd.dbc.annotation.Nullable; +import lu.list.itis.dkd.tui.bootstrapping.BootstrapCallback; +import lu.list.itis.dkd.tui.bootstrapping.BootstrapContext; +import lu.list.itis.dkd.tui.bootstrapping.BootstrappingUtils; +import lu.list.itis.dkd.tui.exception.BuildException; import lu.list.itis.dkd.tui.widget.state.StateManager.Direction; +import org.jdom2.Element; + /** * @author Nico Mack [nico.mack@list.lu] * @since 1.8 @@ -76,12 +83,38 @@ public class RotaryEncoder { this.buildFromProperties(); } + // --------------------------------------------------------------------------- + + public RotaryEncoder(Element rootNode) throws BuildException { + this.buildFromBootstrap(rootNode, null, null); + this.buildFromProperties(); + } + + // --------------------------------------------------------------------------- + + public RotaryEncoder(@Nullable Element rootNode, BootstrapContext context, BootstrapCallback callback) throws BuildException { + this.buildFromBootstrap(rootNode, context, callback); + this.buildFromProperties(); + } + // --------------------------------------------------------------------------- // *************************************************************************** // * Primitive(s) * // *************************************************************************** // --------------------------------------------------------------------------- + private void buildFromBootstrap(@Nullable Element rootNode, BootstrapContext context, BootstrapCallback callback) throws BuildException { + this.initialValue = BootstrappingUtils.getContentAsDouble(rootNode, CpsNamespace.INITIAL_VALUE_NODE, BootstrappingUtils.OPTIONAL, 0d, context); + this.value = this.initialValue; + this.lowerBound = BootstrappingUtils.getContentAsDouble(rootNode, Externalization.LOWER_BOUND_NODE, BootstrappingUtils.OPTIONAL, 0d, context); + this.upperBound = BootstrappingUtils.getContentAsDouble(rootNode, Externalization.UPPER_BOUND_NODE, BootstrappingUtils.MANDATORY, null, context);; + this.lowerStopAngle = BootstrappingUtils.getContentAsRadians(rootNode, CpsNamespace.LOWER_STOP_ANGLE_NODE, BootstrappingUtils.OPTIONAL, Double.NaN, context); + this.upperStopAngle = BootstrappingUtils.getContentAsRadians(rootNode, CpsNamespace.UPPER_STOP_ANGLE_NODE, BootstrappingUtils.OPTIONAL, Double.NaN, context); + this.multiTurn = BootstrappingUtils.getContentAsBoolean(rootNode, CpsNamespace.MULTITURN_NODE, BootstrappingUtils.OPTIONAL, Boolean.FALSE, context); + } + + // --------------------------------------------------------------------------- + private void buildFromProperties() { lastAngle = Double.NaN;