Skip to content

Commit 0d0bc1e

Browse files
author
dave
committed
This is an interim update to bring in line with web designer.
1 parent 250ea39 commit 0d0bc1e

35 files changed

+109
-46
lines changed

embedCONTROLCore/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<artifactId>embedCONTROLCore</artifactId>
1414
<name>embedCONTROLCore</name>
1515
<description>TcMenu embedCONTROL shared core</description>
16-
<version>4.5.0</version>
16+
<version>4.5.0-SNAPSHOT</version>
1717
<url>https://tcmenu.github.io/documentation/arduino-libraries/tc-menu/</url>
1818

1919
<licenses>

tcMenuGenerator/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<name>menuEditorUI</name>
1313
<groupId>com.thecoderscorner.tcmenu</groupId>
1414
<description>JavaFX based menu editor UI</description>
15-
<version>4.5.0</version>
15+
<version>4.5.0-SNAPSHOT</version>
1616

1717
<properties>
1818
<timestamp>${maven.build.timestamp}</timestamp>

tcMenuGenerator/src/it/com/thecoderscorner/menu/uitests/EditFontTestCase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.thecoderscorner.menu.editorui.generator.core.CreatorProperty;
77
import com.thecoderscorner.menu.editorui.generator.core.SubSystem;
88
import com.thecoderscorner.menu.editorui.generator.parameters.FontDefinition;
9+
import com.thecoderscorner.menu.editorui.generator.parameters.FontMode;
910
import com.thecoderscorner.menu.editorui.generator.validation.CannedPropertyValidators;
1011
import com.thecoderscorner.menu.editorui.util.TestUtils;
1112
import javafx.scene.Node;
@@ -37,7 +38,7 @@ public void onStart(Stage stage) {
3738

3839
@Test
3940
public void checkFontPropertyEditing(FxRobot robot) throws InterruptedException {
40-
FontDefinition defaultFont = new FontDefinition(FontDefinition.FontMode.DEFAULT_FONT, "", 1);
41+
FontDefinition defaultFont = new FontDefinition(FontMode.DEFAULT_FONT, "", 1);
4142
CreatorProperty prop = new CreatorProperty("Name", "Desc", "ExtDesc", defaultFont.toString(),
4243
SubSystem.DISPLAY, CreatorProperty.PropType.TEXTUAL, CannedPropertyValidators.fontValidator(), new AlwaysApplicable());
4344
var dialogPane = createFontDialog(robot, prop);

tcMenuGenerator/src/it/com/thecoderscorner/menu/uitests/GenerateCodeDialogTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.thecoderscorner.menu.editorui.generator.core.CreatorProperty;
99
import com.thecoderscorner.menu.editorui.generator.core.SubSystem;
1010
import com.thecoderscorner.menu.editorui.generator.parameters.FontDefinition;
11+
import com.thecoderscorner.menu.editorui.generator.parameters.FontMode;
1112
import com.thecoderscorner.menu.editorui.generator.parameters.IoExpanderDefinition;
1213
import com.thecoderscorner.menu.editorui.generator.parameters.IoExpanderDefinitionCollection;
1314
import com.thecoderscorner.menu.editorui.generator.plugin.*;
@@ -250,7 +251,7 @@ private void checkFontPropertyEditing(FxRobot robot, CreatorProperty prop, Strin
250251
withRetryOnFxThread(new TextFieldPredicate(robot, nodeName, latestValue), "nodeName check for " + latestValue);
251252

252253
var oldValue = prop.getLatestValue();
253-
FontDefinition numberedFont = new FontDefinition(FontDefinition.FontMode.NUMBERED, "", 22);
254+
FontDefinition numberedFont = new FontDefinition(FontMode.NUMBERED, "", 22);
254255
when(editorUI.showFontEditorDialog(oldValue, false)).thenReturn(Optional.of(numberedFont.toString()));
255256

256257
robot.clickOn(nodeName + "_btn");

tcMenuGenerator/src/main/java/com/thecoderscorner/menu/editorui/controller/ChooseFontController.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.thecoderscorner.menu.editorui.controller.fontsel.FontChoice;
55
import com.thecoderscorner.menu.editorui.controller.fontsel.FontType;
66
import com.thecoderscorner.menu.editorui.generator.parameters.FontDefinition;
7+
import com.thecoderscorner.menu.editorui.generator.parameters.FontMode;
78
import com.thecoderscorner.menu.editorui.util.SafeNavigator;
89
import javafx.application.Platform;
910
import javafx.collections.FXCollections;
@@ -17,7 +18,7 @@
1718
import java.util.Optional;
1819

1920
import static com.thecoderscorner.menu.editorui.dialog.AppInformationPanel.FONTS_GUIDE_URL;
20-
import static com.thecoderscorner.menu.editorui.generator.parameters.FontDefinition.FontMode.*;
21+
import static com.thecoderscorner.menu.editorui.generator.parameters.FontMode.*;
2122

2223
public class ChooseFontController {
2324
public RadioButton adafruitFontSel;
@@ -89,7 +90,7 @@ public void initialise(String currentSelection, boolean tcUnicodeEnabled) {
8990
}
9091
}
9192

92-
private void prepareChoicesForMode(FontDefinition.FontMode fontMode) {
93+
private void prepareChoicesForMode(FontMode fontMode) {
9394
if(tcUnicodeEnabled) {
9495
var allItems = new ArrayList<FontChoice>();
9596
allItems.addAll(DefaultFontChoices.getChoicesFor(FontType.TC_UNICODE));
@@ -129,7 +130,7 @@ public void onFontDefinitionsDocs(ActionEvent actionEvent) {
129130

130131
@SuppressWarnings("unused")
131132
public void onCreatePressed(ActionEvent actionEvent) {
132-
FontDefinition.FontMode mode = getFontMode();
133+
FontMode mode = getFontMode();
133134

134135
int mag;
135136
try {
@@ -155,8 +156,8 @@ public void onCreatePressed(ActionEvent actionEvent) {
155156
closeIt();
156157
}
157158

158-
private FontDefinition.FontMode getFontMode() {
159-
FontDefinition.FontMode mode;
159+
private FontMode getFontMode() {
160+
FontMode mode;
160161
if(adafruitFontSel.isSelected()) mode = ADAFRUIT;
161162
else if(adafruitLocalFontSel.isSelected()) mode = ADAFRUIT_LOCAL;
162163
else if(largeNumSelect.isSelected()) mode = NUMBERED;

tcMenuGenerator/src/main/java/com/thecoderscorner/menu/editorui/generator/parameters/FontDefinition.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import java.util.regex.Pattern;
77

88
public record FontDefinition(FontMode fontMode, String fontName, int fontNumber) {
9-
public enum FontMode {DEFAULT_FONT, ADAFRUIT_LOCAL, ADAFRUIT, NUMBERED, AVAILABLE}
109

1110
public String getFontDef() {
1211
return switch (fontMode) {
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.thecoderscorner.menu.editorui.generator.parameters;
2+
3+
public enum FontMode {DEFAULT_FONT, ADAFRUIT_LOCAL, ADAFRUIT, NUMBERED, AVAILABLE}

tcMenuGenerator/src/main/java/com/thecoderscorner/menu/editorui/generator/plugin/CodePluginItem.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class CodePluginItem {
2222
private SubSystem subsystem;
2323
private String imageFileName;
2424
private String docsLink;
25-
private boolean themeNeeded;
25+
private ThemeDescription themeMode;
2626
private CodePluginConfig config;
2727
private List<CreatorProperty> properties;
2828
private List<CodeVariable> variables;
@@ -76,11 +76,11 @@ public void setSupportedPlatforms(List<EmbeddedPlatform> supportedPlatforms) {
7676
}
7777

7878
public boolean isThemeNeeded() {
79-
return themeNeeded;
79+
return themeMode != null && themeMode.getThemeMode() != ThemeDescription.ThemeMode.NONE ;
8080
}
8181

82-
public void setThemeNeeded(boolean themeNeeded) {
83-
this.themeNeeded = themeNeeded;
82+
public void setThemeMode(ThemeDescription themeMode) {
83+
this.themeMode = themeMode;
8484
}
8585

8686
public SubSystem getSubsystem() {
@@ -195,7 +195,7 @@ public CodePluginItem deepCopy() {
195195
pluginCopy.setRequiredSourceFiles(requiredSourceFiles);
196196
pluginCopy.setSubsystem(subsystem);
197197
pluginCopy.setSupportedPlatforms(supportedPlatforms);
198-
pluginCopy.setThemeNeeded(themeNeeded);
198+
pluginCopy.setThemeMode(themeMode);
199199
pluginCopy.setManager(manager);
200200
pluginCopy.setJavaImpl(javaImpl);
201201
pluginCopy.setProperties(properties.stream().map(prop -> new CreatorProperty(
@@ -209,12 +209,12 @@ public boolean equals(Object o) {
209209
if (this == o) return true;
210210
if (o == null || getClass() != o.getClass()) return false;
211211
CodePluginItem that = (CodePluginItem) o;
212-
return themeNeeded == that.themeNeeded && Objects.equals(id, that.id) && Objects.equals(description, that.description) && Objects.equals(extendedDescription, that.extendedDescription) && Objects.equals(supportedPlatforms, that.supportedPlatforms) && Objects.equals(requiredLibraries, that.requiredLibraries) && subsystem == that.subsystem && Objects.equals(imageFileName, that.imageFileName) && Objects.equals(docsLink, that.docsLink) && Objects.equals(config, that.config);
212+
return Objects.equals(themeMode, that.themeMode) && Objects.equals(id, that.id) && Objects.equals(description, that.description) && Objects.equals(extendedDescription, that.extendedDescription) && Objects.equals(supportedPlatforms, that.supportedPlatforms) && Objects.equals(requiredLibraries, that.requiredLibraries) && subsystem == that.subsystem && Objects.equals(imageFileName, that.imageFileName) && Objects.equals(docsLink, that.docsLink) && Objects.equals(config, that.config);
213213
}
214214

215215
@Override
216216
public int hashCode() {
217-
return Objects.hash(id, description, extendedDescription, supportedPlatforms, requiredLibraries, subsystem, imageFileName, docsLink, themeNeeded, config);
217+
return Objects.hash(id, description, extendedDescription, supportedPlatforms, requiredLibraries, subsystem, imageFileName, docsLink, themeMode, config);
218218
}
219219

220220
public boolean isJavaPlugin() {

tcMenuGenerator/src/main/java/com/thecoderscorner/menu/editorui/generator/plugin/DefaultXmlPluginLoader.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.thecoderscorner.menu.persist.VersionInfo;
2525
import com.thecoderscorner.menu.persist.XMLDOMHelper;
2626
import javafx.scene.image.Image;
27+
import org.hsqldb.lib.StringUtil;
2728
import org.w3c.dom.Document;
2829
import org.w3c.dom.Element;
2930
import org.w3c.dom.Node;
@@ -36,6 +37,7 @@
3637
import java.nio.file.Paths;
3738
import java.util.*;
3839
import java.util.concurrent.CopyOnWriteArrayList;
40+
import java.util.regex.Pattern;
3941
import java.util.stream.Collectors;
4042
import java.util.stream.Stream;
4143

@@ -544,7 +546,7 @@ private CodeApplicability toSingleApplicability(Element varElement) {
544546

545547
private void generateDescriptionFromXml(Element root, CodePluginItem config) {
546548
config.setSubsystem(SubSystem.valueOf(root.getAttribute("subsystem")));
547-
config.setThemeNeeded(Boolean.parseBoolean(getAttributeOrDefault(root, "needsTheme", "false")));
549+
config.setThemeMode(themeFromAttribute(getAttributeOrDefault(root, "needsTheme", "false")));
548550
config.setId(root.getAttribute("id"));
549551
config.setDescription(withBundle(root.getAttribute("name")));
550552
config.setExtendedDescription(withBundle(textOfElementByName(root, "Description")));
@@ -555,6 +557,27 @@ private void generateDescriptionFromXml(Element root, CodePluginItem config) {
555557
if (docs != null) config.setDocsLink(docs.getAttribute("link"));
556558
}
557559

560+
private ThemeDescription themeFromAttribute(String attribute) {
561+
if(StringUtil.isEmpty(attribute) || attribute.equals("false")) {
562+
return ThemeDescription.NO_THEME;
563+
} else if(attribute.equals("true") || attribute.equals("any")) {
564+
return ThemeDescription.ANY_THEME;
565+
} else if(attribute.startsWith("color")) {
566+
return ThemeDescription.colorWithFont(pullFontInfo(attribute));
567+
} else if(attribute.equals("mono")) {
568+
return ThemeDescription.monoWithFont(pullFontInfo(attribute));
569+
} else {
570+
return ThemeDescription.NO_THEME;
571+
}
572+
}
573+
574+
private FontMode pullFontInfo(String attribute) {
575+
Pattern pattern = Pattern.compile("(color|mono|palette)\\[(.*)]");
576+
var matcher = pattern.matcher(attribute);
577+
if(!matcher.matches()) return FontMode.DEFAULT_FONT;
578+
return FontMode.valueOf(matcher.group(2));
579+
}
580+
558581
private List<EmbeddedPlatform> supportedPlatformsFromElement(Element sp) {
559582
var allWildcard = XMLDOMHelper.elementWithName(sp, "All");
560583
if(allWildcard != null) {
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.thecoderscorner.menu.editorui.generator.plugin;
2+
3+
import com.thecoderscorner.menu.editorui.generator.parameters.FontMode;
4+
public class ThemeDescription {
5+
6+
public enum ThemeMode { MONO, COLOR, PALETTE, ANY, NONE}
7+
8+
private final ThemeMode themeMode;
9+
private final FontMode fontMode;
10+
private ThemeDescription(ThemeMode themeMode, FontMode fontMode) {
11+
this.themeMode = themeMode;
12+
this.fontMode = fontMode;
13+
}
14+
15+
public static ThemeDescription NO_THEME = new ThemeDescription(ThemeMode.NONE, FontMode.DEFAULT_FONT);
16+
public static ThemeDescription ANY_THEME = new ThemeDescription(ThemeMode.ANY, FontMode.DEFAULT_FONT);
17+
public static ThemeDescription monoWithFont(FontMode fontMode) {
18+
return new ThemeDescription(ThemeMode.MONO, fontMode);
19+
}
20+
public static ThemeDescription colorWithFont(FontMode fontMode) {
21+
return new ThemeDescription(ThemeMode.COLOR, fontMode);
22+
}
23+
public static ThemeDescription paletteWithFont(FontMode fontMode) {
24+
return new ThemeDescription(ThemeMode.COLOR, fontMode);
25+
}
26+
27+
public ThemeMode getThemeMode() {
28+
return themeMode;
29+
}
30+
31+
public FontMode getFontMode() {
32+
return fontMode;
33+
}
34+
}

0 commit comments

Comments
 (0)