From 7441654b206ea3f571ab4a83eef6aca06f1f78d0 Mon Sep 17 00:00:00 2001 From: Nico Mack Date: Mon, 14 Sep 2020 14:13:27 +0200 Subject: [PATCH] Added Bootstrapping capabilities to RotaryEncoder class --- CPS/config/CpsNamespace.properties | 1 + .../itis/dkd/tui/utility/CpsNamespace.java | 1 + .../itis/dkd/tui/utility/RotaryEncoder.java | 33 +++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/CPS/config/CpsNamespace.properties b/CPS/config/CpsNamespace.properties index dd201af..7a6c5bb 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 3f109ad..a726cd4 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 399c604..9a253f6 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; -- GitLab