From 764c0e36705a3f2841e604071b2394bb98cac57e Mon Sep 17 00:00:00 2001 From: Nico Mack Date: Fri, 22 Dec 2017 13:28:02 +0100 Subject: [PATCH] Modified VariableHtmlBox to make use of HtmlTemplate helper class. --- .../itis/dkd/tui/utility/HtmlTemplate.java | 6 +++ .../tui/widget/corona/VariableHtmlBox.java | 53 ++++--------------- 2 files changed, 16 insertions(+), 43 deletions(-) diff --git a/CPS/src/lu/list/itis/dkd/tui/utility/HtmlTemplate.java b/CPS/src/lu/list/itis/dkd/tui/utility/HtmlTemplate.java index 6e95b34..15beff5 100644 --- a/CPS/src/lu/list/itis/dkd/tui/utility/HtmlTemplate.java +++ b/CPS/src/lu/list/itis/dkd/tui/utility/HtmlTemplate.java @@ -62,6 +62,12 @@ public class HtmlTemplate implements VariableBased { // --------------------------------------------------------------------------- + public boolean dependsOnVariables() { + return !this.identifiers.isEmpty(); + } + + // --------------------------------------------------------------------------- + public String render() { return Interpolator.render(chunks); } diff --git a/CPS/src/lu/list/itis/dkd/tui/widget/corona/VariableHtmlBox.java b/CPS/src/lu/list/itis/dkd/tui/widget/corona/VariableHtmlBox.java index 713a076..654da70 100644 --- a/CPS/src/lu/list/itis/dkd/tui/widget/corona/VariableHtmlBox.java +++ b/CPS/src/lu/list/itis/dkd/tui/widget/corona/VariableHtmlBox.java @@ -17,14 +17,9 @@ import lu.list.itis.dkd.tui.cps.InputChangeListener; import lu.list.itis.dkd.tui.cps.InputEvent; import lu.list.itis.dkd.tui.cps.system.VariableBased; import lu.list.itis.dkd.tui.cps.variable.Variable; -import lu.list.itis.dkd.tui.utility.interpolation.Chunk; -import lu.list.itis.dkd.tui.utility.interpolation.Interpolator; +import lu.list.itis.dkd.tui.utility.HtmlTemplate; import lu.list.itis.dkd.tui.widget.corona.builder.BaseVariableHtmlBoxBuilder; -import org.python.google.common.base.Strings; - -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -41,10 +36,7 @@ import java.util.Map; public class VariableHtmlBox extends HtmlBox implements VariableBased, InputChangeListener { - private String htmlTemplate; - private List> htmlChunks; - private List identifiers; - private Map> parameters; + private HtmlTemplate htmlTemplate; // --------------------------------------------------------------------------- // *************************************************************************** @@ -58,16 +50,9 @@ public class VariableHtmlBox extends HtmlBox implements VariableBased, InputChan public VariableHtmlBox(BaseVariableHtmlBoxBuilder builder) { super(builder); - htmlTemplate = builder.htmlTemplate; - - this.parameters = new HashMap<>(); - - if (!Strings.isNullOrEmpty(this.htmlTemplate)) { - identifiers = Interpolator.extractVariableIdentifiers(this.htmlTemplate); - if (identifiers.isEmpty()) { - this.htmlContent = this.htmlTemplate; - this.setInformation(this.htmlContent); - } + htmlTemplate = new HtmlTemplate(builder.htmlTemplate); + if (!htmlTemplate.dependsOnVariables()) { + this.setInformation(builder.htmlTemplate); } } @@ -87,21 +72,7 @@ public class VariableHtmlBox extends HtmlBox implements VariableBased, InputChan @Override public List> connectWithSystemVariables(Map> systemVariables) { - List> connected = new ArrayList<>(); - - for (String identifier : identifiers) { - if ((systemVariables != null) && systemVariables.containsKey(identifier)) { - Variable variable = systemVariables.get(identifier); - this.parameters.put(identifier, variable); - connected.add(variable); - variable.addListener(this); - } - } - - if (!connected.isEmpty()) { - htmlChunks = Interpolator.decompose(this.htmlTemplate, this.parameters); - } - return connected; + return htmlTemplate.connectWithSystemVariables(systemVariables); } // --------------------------------------------------------------------------- @@ -110,9 +81,9 @@ public class VariableHtmlBox extends HtmlBox implements VariableBased, InputChan @Override public void inputChanged(InputEvent input) { - if (parameters.containsKey(input.getSource().getName())) { - this.htmlContent = Interpolator.render(htmlChunks); - this.setInformation(this.htmlContent); + String identifier = input.getSource().getName(); + if (htmlTemplate.dependsOn(identifier)) { + this.setInformation(htmlTemplate.render()); } } @@ -122,11 +93,7 @@ public class VariableHtmlBox extends HtmlBox implements VariableBased, InputChan @Override public List> getDeclaredVariables() { - List> declared = new ArrayList<>(); - for (Variable parameter : this.parameters.values()) { - declared.add(parameter); - } - return declared; + return htmlTemplate.getDeclaredVariables(); } // --------------------------------------------------------------------------- -- GitLab