Skip to content

Commit 443918e

Browse files
committed
#415 #393 clean up and removal of spring from Embedded Java app (generator to follow)
1 parent 60467d0 commit 443918e

File tree

29 files changed

+314
-223
lines changed

29 files changed

+314
-223
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.2.0-SNAPSHOT</version>
16+
<version>4.2.0-BETA</version>
1717
<url>https://www.thecoderscorner.com/products/arduino-libraries/tc-menu/</url>
1818

1919
<licenses>

embedCONTROLCore/src/main/java/com/thecoderscorner/embedcontrol/core/service/GlobalSettings.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919
public class GlobalSettings {
2020

2121
final static Map<ConditionalColoring.ColorComponentType, ControlColor> DEFAULT_LIGHT_COLORS = Map.ofEntries(
22-
Map.entry(CUSTOM, new ControlColor("", "")),
23-
Map.entry(TEXT_FIELD, new ControlColor("", "")),
24-
Map.entry(HIGHLIGHT, new ControlColor("", "")),
25-
Map.entry(BUTTON, new ControlColor("", "")),
26-
Map.entry(DIALOG, new ControlColor("", "")),
27-
Map.entry(ERROR, new ControlColor("", "")),
22+
Map.entry(CUSTOM, new ControlColor("#000000", "#0A81F7")),
23+
Map.entry(TEXT_FIELD, new ControlColor(BLACK, WHITE)),
24+
Map.entry(HIGHLIGHT, new ControlColor("#000000", "#0A81F7")),
25+
Map.entry(BUTTON, new ControlColor(WHITE, DARK_SLATE_BLUE)),
26+
Map.entry(DIALOG, new ControlColor(WHITE, DARK_BLUE)),
27+
Map.entry(ERROR, new ControlColor(WHITE, RED)),
2828
Map.entry(PENDING, new ControlColor(LIGHT_GRAY, GREY))
2929
);
3030
final static Map<ConditionalColoring.ColorComponentType, ControlColor> DEFAULT_DARK_COLORS = Map.ofEntries(
@@ -59,7 +59,7 @@ public GlobalSettings(ApplicationThemeManager themeManager) {
5959
appUuid = UUID.randomUUID().toString();
6060
appName = "untitled";
6161
defaultFontSize = 16;
62-
setColorsForDefault(false);
62+
resetColorsToDefault();
6363
}
6464

6565
public static int defaultFontSize() {
@@ -85,7 +85,6 @@ private ControlColor wrapWithDefault(ConditionalColoring.ColorComponentType comp
8585
if(controlColor.isInUse()) return controlColor;
8686
var colorMap = isDarkMode() ? DEFAULT_DARK_COLORS : DEFAULT_LIGHT_COLORS;
8787
return colorMap.containsKey(componentType) ? colorMap.get(componentType) : new ControlColor(WHITE, BLACK);
88-
8988
}
9089

9190
/**
@@ -137,6 +136,18 @@ public ControlColor getDialogColor() {
137136
return wrapWithDefault(DIALOG, dialogColor);
138137
}
139138

139+
public ControlColor getUnderlyingColor(ConditionalColoring.ColorComponentType ty) {
140+
return switch (ty) {
141+
case TEXT_FIELD -> textColor;
142+
case BUTTON -> buttonColor;
143+
case HIGHLIGHT -> highlightColor;
144+
case CUSTOM -> updateColor;
145+
case DIALOG -> dialogColor;
146+
case ERROR -> errorColor;
147+
case PENDING -> pendingColor;
148+
};
149+
}
150+
140151
public Map<ConditionalColoring.ColorComponentType, ControlColor> getColorsToSave() {
141152
return Map.of(
142153
CUSTOM, updateColor,
@@ -181,9 +192,8 @@ public void setAppName(String appName) {
181192

182193
/**
183194
* This is used to reset colorschemes back to the default settings.
184-
* @param darkMode if dark background colors should be used
185195
*/
186-
public void setColorsForDefault(boolean darkMode) {
196+
public void resetColorsToDefault() {
187197
updateColor = new ControlColor();
188198
pendingColor = new ControlColor();
189199
buttonColor = new ControlColor();

embedCONTROLCore/src/main/java/com/thecoderscorner/embedcontrol/customization/GlobalColorCustomizable.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ public ColorStatus getColorStatus(ConditionalColoring.ColorComponentType compone
2222
return getActualUnderlyingColor(componentType).isInUse() ? ColorStatus.AVAILABLE : ColorStatus.NOT_PROVIDED;
2323
}
2424

25+
@Override
26+
public ControlColor getActualUnderlyingColor(ConditionalColoring.ColorComponentType componentType) {
27+
return globalSettings.getUnderlyingColor(componentType);
28+
}
29+
2530
@Override
2631
public ControlColor getColorFor(ConditionalColoring.ColorComponentType componentType) {
2732
return switch (componentType) {

embedCONTROLCore/src/main/java/com/thecoderscorner/embedcontrol/jfx/controlmgr/panels/ColorSettingsController.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -130,18 +130,6 @@ public void closePressed() {
130130

131131
}
132132

133-
public void onResetToDark(ActionEvent actionEvent) {
134-
globalSettings.setColorsForDefault(true);
135-
prepareFromSubMenuSelection();
136-
changed = true;
137-
}
138-
139-
public void onResetToLight(ActionEvent actionEvent) {
140-
globalSettings.setColorsForDefault(false);
141-
prepareFromSubMenuSelection();
142-
changed = true;
143-
}
144-
145133
public void onSaveChanges(ActionEvent actionEvent) {
146134
save();
147135
navigator.popNavigation();
@@ -186,4 +174,11 @@ public void onAddNew(ActionEvent actionEvent) {
186174
refreshColorSets(newCustom.getColorSchemeName());
187175
}
188176
}
177+
178+
public void onResetScheme(ActionEvent actionEvent) {
179+
globalSettings.resetColorsToDefault();
180+
prepareFromSubMenuSelection();
181+
changed = true;
182+
183+
}
189184
}

embedCONTROLCore/src/main/resources/core_fxml/generalSettings.fxml

Lines changed: 46 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -3,66 +3,65 @@
33
<?import javafx.geometry.Insets?>
44
<?import javafx.scene.control.*?>
55
<?import javafx.scene.layout.*?>
6-
<BorderPane xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.thecoderscorner.embedcontrol.jfx.controlmgr.panels.ColorSettingsController">
6+
<BorderPane xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1"
7+
fx:controller="com.thecoderscorner.embedcontrol.jfx.controlmgr.panels.ColorSettingsController">
78
<padding>
8-
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
9+
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
910
</padding>
1011
<center>
1112
<GridPane BorderPane.alignment="CENTER">
1213
<columnConstraints>
13-
<ColumnConstraints hgrow="SOMETIMES" />
14-
<ColumnConstraints hgrow="SOMETIMES" />
15-
<ColumnConstraints hgrow="SOMETIMES" />
14+
<ColumnConstraints hgrow="SOMETIMES"/>
15+
<ColumnConstraints hgrow="SOMETIMES"/>
16+
<ColumnConstraints hgrow="SOMETIMES"/>
1617
</columnConstraints>
1718
<rowConstraints>
18-
<RowConstraints vgrow="SOMETIMES" />
19-
<RowConstraints vgrow="SOMETIMES" />
20-
<RowConstraints vgrow="SOMETIMES" />
21-
<RowConstraints vgrow="SOMETIMES" />
22-
<RowConstraints vgrow="SOMETIMES" />
23-
<RowConstraints vgrow="SOMETIMES" />
24-
<RowConstraints vgrow="SOMETIMES" />
25-
<RowConstraints vgrow="SOMETIMES" />
26-
<RowConstraints vgrow="SOMETIMES" />
19+
<RowConstraints vgrow="SOMETIMES"/>
20+
<RowConstraints vgrow="SOMETIMES"/>
21+
<RowConstraints vgrow="SOMETIMES"/>
22+
<RowConstraints vgrow="SOMETIMES"/>
23+
<RowConstraints vgrow="SOMETIMES"/>
24+
<RowConstraints vgrow="SOMETIMES"/>
25+
<RowConstraints vgrow="SOMETIMES"/>
26+
<RowConstraints vgrow="SOMETIMES"/>
27+
<RowConstraints vgrow="SOMETIMES"/>
2728
</rowConstraints>
28-
<children>
29-
<Label text="Color" GridPane.rowIndex="1" />
30-
<ColorPicker fx:id="pendingFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="2" />
31-
<ColorPicker fx:id="pendingBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="2" />
32-
<ColorPicker fx:id="dialogFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="3" />
33-
<ColorPicker fx:id="dialogBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="3" />
34-
<ColorPicker fx:id="highlightFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="4" />
35-
<ColorPicker fx:id="highlightBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="4" />
36-
<ColorPicker fx:id="buttonFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="5" />
37-
<ColorPicker fx:id="errorFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="8" />
38-
<ColorPicker fx:id="buttonBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="5" />
39-
<ColorPicker fx:id="errorBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="8" />
40-
<Label text="Foreground" GridPane.columnIndex="1" GridPane.rowIndex="1" />
41-
<Label text="Background" GridPane.columnIndex="2" GridPane.rowIndex="1" />
42-
<ColorPicker fx:id="textFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="6" />
43-
<ColorPicker fx:id="textBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="6" />
44-
<ColorPicker fx:id="updateFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="7" />
45-
<ColorPicker fx:id="updateBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="7" />
46-
<Label text="Color Set Name" />
47-
<ComboBox fx:id="colorSetCombo" prefHeight="26.0" prefWidth="394.0" GridPane.columnIndex="1" GridPane.columnSpan="2" />
48-
<CheckBox fx:id="pendingCheck" mnemonicParsing="false" text="Pending" GridPane.rowIndex="2" />
49-
<CheckBox fx:id="dialogCheck" mnemonicParsing="false" text="Dialog" GridPane.rowIndex="3" />
50-
<CheckBox fx:id="highlightCheck" mnemonicParsing="false" text="Highlight" GridPane.rowIndex="4" />
51-
<CheckBox fx:id="buttonCheck" mnemonicParsing="false" text="Button" GridPane.rowIndex="5" />
52-
<CheckBox fx:id="textCheck" mnemonicParsing="false" text="Text" GridPane.rowIndex="6" />
53-
<CheckBox fx:id="updateCheck" mnemonicParsing="false" text="Update" GridPane.rowIndex="7" />
54-
<CheckBox fx:id="errorCheck" mnemonicParsing="false" text="Error" GridPane.rowIndex="8" />
55-
</children>
29+
<Label text="Color" GridPane.rowIndex="1"/>
30+
<ColorPicker fx:id="pendingFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="2"/>
31+
<ColorPicker fx:id="pendingBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="2"/>
32+
<ColorPicker fx:id="dialogFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="3"/>
33+
<ColorPicker fx:id="dialogBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="3"/>
34+
<ColorPicker fx:id="highlightFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="4"/>
35+
<ColorPicker fx:id="highlightBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="4"/>
36+
<ColorPicker fx:id="buttonFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="5"/>
37+
<ColorPicker fx:id="errorFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="8"/>
38+
<ColorPicker fx:id="buttonBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="5"/>
39+
<ColorPicker fx:id="errorBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="8"/>
40+
<Label text="Foreground" GridPane.columnIndex="1" GridPane.rowIndex="1"/>
41+
<Label text="Background" GridPane.columnIndex="2" GridPane.rowIndex="1"/>
42+
<ColorPicker fx:id="textFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="6"/>
43+
<ColorPicker fx:id="textBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="6"/>
44+
<ColorPicker fx:id="updateFgEditor" GridPane.columnIndex="1" GridPane.rowIndex="7"/>
45+
<ColorPicker fx:id="updateBgEditor" GridPane.columnIndex="2" GridPane.rowIndex="7"/>
46+
<Label text="Color Set Name"/>
47+
<ComboBox fx:id="colorSetCombo" prefHeight="26.0" prefWidth="394.0" GridPane.columnIndex="1"
48+
GridPane.columnSpan="2"/>
49+
<CheckBox fx:id="pendingCheck" mnemonicParsing="false" text="Pending" GridPane.rowIndex="2"/>
50+
<CheckBox fx:id="dialogCheck" mnemonicParsing="false" text="Dialog" GridPane.rowIndex="3"/>
51+
<CheckBox fx:id="highlightCheck" mnemonicParsing="false" text="Highlight" GridPane.rowIndex="4"/>
52+
<CheckBox fx:id="buttonCheck" mnemonicParsing="false" text="Button" GridPane.rowIndex="5"/>
53+
<CheckBox fx:id="textCheck" mnemonicParsing="false" text="Text" GridPane.rowIndex="6"/>
54+
<CheckBox fx:id="updateCheck" mnemonicParsing="false" text="Update" GridPane.rowIndex="7"/>
55+
<CheckBox fx:id="errorCheck" mnemonicParsing="false" text="Error" GridPane.rowIndex="8"/>
5656
</GridPane>
5757
</center>
5858
<bottom>
5959
<ButtonBar prefHeight="40.0" prefWidth="200.0" BorderPane.alignment="CENTER">
6060
<buttons>
61-
<Button mnemonicParsing="false" onAction="#onResetToDark" text="Dark Defaults" />
62-
<Button mnemonicParsing="false" onAction="#onResetToLight" text="Light Defaults" />
63-
<Button fx:id="addButton" mnemonicParsing="false" text="Add" onAction="#onAddNew" />
64-
<Button fx:id="removeButton" mnemonicParsing="false" onAction="#onRemoveOverride" text="Remove" />
65-
<Button mnemonicParsing="false" onAction="#onSaveChanges" text="Save" />
61+
<Button mnemonicParsing="false" onAction="#onResetScheme" text="Reset Colors"/>
62+
<Button fx:id="addButton" mnemonicParsing="false" text="Add" onAction="#onAddNew"/>
63+
<Button fx:id="removeButton" mnemonicParsing="false" onAction="#onRemoveOverride" text="Remove"/>
64+
<Button mnemonicParsing="false" onAction="#onSaveChanges" text="Save"/>
6665
</buttons>
6766
</ButtonBar>
6867
</bottom>

embeddedJavaExample/pom.xml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
<jdk.version>20</jdk.version>
1111
<jfx.version>20</jfx.version>
1212
<jserialcomm.version>2.9.2</jserialcomm.version>
13-
<tcmenu.api.version>4.2.0-SNAPSHOT</tcmenu.api.version>
14-
<springframework.version>5.3.23</springframework.version>
13+
<tcmenu.api.version>4.2.0-BETA</tcmenu.api.version>
1514
<timestamp>${maven.build.timestamp}</timestamp>
1615
</properties>
1716

@@ -26,11 +25,6 @@
2625
<artifactId>tcMenuJavaAPI</artifactId>
2726
<version>${tcmenu.api.version}</version>
2827
</dependency>
29-
<dependency>
30-
<groupId>org.springframework</groupId>
31-
<artifactId>spring-context</artifactId>
32-
<version>${springframework.version}</version>
33-
</dependency>
3428
<dependency>
3529
<groupId>com.thecoderscorner.tcmenu</groupId>
3630
<artifactId>embedCONTROLCore</artifactId>

embeddedJavaExample/src/main/java/com/thecoderscorner/menuexample/tcmenu/EmbeddedJavaDemoApp.java

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,37 @@
11
package com.thecoderscorner.menuexample.tcmenu;
22

3-
import com.thecoderscorner.menu.mgr.*;
4-
import com.thecoderscorner.menu.persist.MenuStateSerialiser;
5-
import org.springframework.context.ApplicationContext;
6-
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
7-
import com.thecoderscorner.menuexample.tcmenu.plugins.*;
3+
import com.thecoderscorner.menu.mgr.MenuInMenu;
4+
import com.thecoderscorner.menu.mgr.MenuManagerServer;
5+
import com.thecoderscorner.menu.remote.ConnectMode;
6+
import com.thecoderscorner.menu.remote.LocalIdentifier;
7+
import com.thecoderscorner.menu.remote.MenuCommandProtocol;
8+
import com.thecoderscorner.menu.remote.socket.SocketBasedConnector;
9+
import com.thecoderscorner.menuexample.tcmenu.plugins.JfxLocalAutoUI;
10+
import com.thecoderscorner.menuexample.tcmenu.plugins.TcJettyWebServer;
811
import javafx.application.Application;
9-
import com.thecoderscorner.menu.remote.*;
10-
import com.thecoderscorner.menu.remote.socket.*;
11-
import java.util.concurrent.*;
12-
import java.time.*;
12+
13+
import java.time.Clock;
14+
import java.util.concurrent.ScheduledExecutorService;
1315

1416
/**
1517
* This class is the application class and should not be edited, it will be recreated on each code generation
1618
*/
1719
public class EmbeddedJavaDemoApp {
1820
private final MenuManagerServer manager;
19-
private final ApplicationContext context;
21+
private final MenuConfig context;
2022
private final TcJettyWebServer webServer;
2123

2224
public EmbeddedJavaDemoApp() {
23-
context = new AnnotationConfigApplicationContext(MenuConfig.class);
24-
manager = context.getBean(MenuManagerServer.class);
25-
webServer = context.getBean(TcJettyWebServer.class);
25+
context = new MenuConfig(null);
26+
manager = context.getMenuManagerServer();
27+
webServer = context.getWebServer();
2628
}
2729

2830
public void start() {
29-
var serializer = context.getBean(MenuStateSerialiser.class);
31+
var serializer = context.getMenuStateSerialiser();
3032
serializer.loadMenuStatesAndApply();
3133
Runtime.getRuntime().addShutdownHook(new Thread(serializer::saveMenuStates));
32-
manager.addMenuManagerListener(context.getBean(EmbeddedJavaDemoController.class));
34+
manager.addMenuManagerListener(context.getMenuController());
3335
buildMenuInMenuComponents();
3436
JfxLocalAutoUI.setAppContext(context);
3537
manager.addConnectionManager(webServer);
@@ -41,9 +43,9 @@ public static void main(String[] args) {
4143
}
4244

4345
public void buildMenuInMenuComponents() {
44-
MenuManagerServer menuManager = context.getBean(MenuManagerServer.class);
45-
MenuCommandProtocol protocol = context.getBean(MenuCommandProtocol.class);
46-
ScheduledExecutorService executor = context.getBean(ScheduledExecutorService.class);
46+
MenuManagerServer menuManager = context.getMenuManagerServer();
47+
MenuCommandProtocol protocol = context.getWebServer().getProtocol();
48+
ScheduledExecutorService executor = context.getScheduledExecutorService();
4749
LocalIdentifier localId = new LocalIdentifier(menuManager.getServerUuid(), menuManager.getServerName());
4850
var remMenuAvrBoardConnector = new SocketBasedConnector(localId, executor, Clock.systemUTC(), protocol, "192.168.0.96", 3333, ConnectMode.FULLY_AUTHENTICATED);
4951
var remMenuAvrBoard = new MenuInMenu(remMenuAvrBoardConnector, menuManager, menuManager.getManagedMenu().getMenuById(16).orElseThrow(), MenuInMenu.ReplicationMode.REPLICATE_ADD_STATUS_ITEM, 100000, 65000);

0 commit comments

Comments
 (0)