diff --git a/libs/com.gluon/charm-glisten-4.4.1.jar b/libs/com.gluon/charm-glisten-4.4.1.jar
new file mode 100644
index 0000000..fc3e437
Binary files /dev/null and b/libs/com.gluon/charm-glisten-4.4.1.jar differ
diff --git a/pom.xml b/pom.xml
index d58b88c..341d416 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,13 @@
ikonli-javafx
12.3.1
+
+ com.gluonhq
+ charm-glisten
+ 4.4.1
+ system
+ ${project.basedir}/libs/com.gluon/charm-glisten-4.4.1.jar
+
eu.hansolo
tilesfx
diff --git a/src/main/java/fabrik/simulator/pic16f84/Controller_FileSelect.java b/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java
similarity index 67%
rename from src/main/java/fabrik/simulator/pic16f84/Controller_FileSelect.java
rename to src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java
index 030e9d8..6405448 100644
--- a/src/main/java/fabrik/simulator/pic16f84/Controller_FileSelect.java
+++ b/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java
@@ -1,5 +1,6 @@
package fabrik.simulator.pic16f84;
+import com.gluonhq.charm.glisten.control.ToggleButtonGroup;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
@@ -23,7 +24,7 @@ import javafx.stage.Stage;
import java.util.Arrays;
-public class Controller_FileSelect {
+public class Controller_Frontend {
private int [] prog;
@@ -74,10 +75,6 @@ public class Controller_FileSelect {
System.out.println(Arrays.toString(Arrays.stream(prog).toArray()));
displayLSTFileContent(selectedFile);
}
-
-
-
-
}
private File chooseLSTFile() {
@@ -106,7 +103,48 @@ public class Controller_FileSelect {
}
}
+ @FXML
+ private ToggleButtonGroup bgA0;
+ @FXML
+ private ToggleButtonGroup bgA1;
+ @FXML
+ private ToggleButtonGroup bgA2;
+ @FXML
+ private ToggleButtonGroup bgA3;
+ @FXML
+ private ToggleButtonGroup bgA4;
+ @FXML
+ private ToggleButtonGroup bgA5;
+ @FXML
+ private ToggleButtonGroup bgA6;
+ @FXML
+ private ToggleButtonGroup bgA7;
+ @FXML
+ private ToggleButtonGroup bgB0;
+ @FXML
+ private ToggleButtonGroup bgB1;
+ @FXML
+ private ToggleButtonGroup bgB2;
+ @FXML
+ private ToggleButtonGroup bgB3;
+ @FXML
+ private ToggleButtonGroup bgB4;
+ @FXML
+ private ToggleButtonGroup bgB5;
+ @FXML
+ private ToggleButtonGroup bgB6;
+ @FXML
+ private ToggleButtonGroup bgB7;
+
+
+ public void initialize() {
+ ToggleButtonGroup [] allButtons = {bgA0, bgA1, bgA2, bgA3, bgA4, bgA5, bgA6, bgA7, bgB0, bgB1, bgB2, bgB3, bgB4, bgB5, bgB6, bgB7};
+ for (int i = 0; i<16; i++) {
+ // GEHT NICHT
+ ToggleButtonGroupExt.get().addAlwaysOneSelectedSupport(allButtons[i]);
+ }
}
+}
diff --git a/src/main/java/fabrik/simulator/pic16f84/Controller_MainBody.java b/src/main/java/fabrik/simulator/pic16f84/Controller_MainBody.java
deleted file mode 100644
index 6b2e25f..0000000
--- a/src/main/java/fabrik/simulator/pic16f84/Controller_MainBody.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package fabrik.simulator.pic16f84;
-
-public class Controller_MainBody {
-
-}
diff --git a/src/main/java/fabrik/simulator/pic16f84/ToggleButtonGroupExt.java b/src/main/java/fabrik/simulator/pic16f84/ToggleButtonGroupExt.java
new file mode 100644
index 0000000..837048a
--- /dev/null
+++ b/src/main/java/fabrik/simulator/pic16f84/ToggleButtonGroupExt.java
@@ -0,0 +1,46 @@
+package fabrik.simulator.pic16f84;
+
+import com.gluonhq.charm.glisten.control.ToggleButtonGroup;
+import javafx.collections.ListChangeListener;
+import javafx.event.EventHandler;
+import javafx.scene.control.Toggle;
+import javafx.scene.control.ToggleButton;
+import javafx.scene.input.MouseEvent;
+
+public class ToggleButtonGroupExt {
+ private static ToggleButtonGroupExt me;
+
+ private ToggleButtonGroupExt() {
+ }
+
+ public static ToggleButtonGroupExt get() {
+ if (me == null) {
+ me = new ToggleButtonGroupExt();
+ }
+ return me;
+ }
+
+
+ public void addAlwaysOneSelectedSupport(final ToggleButtonGroup toggleGroup) {
+ toggleGroup.getToggles().addListener((ListChangeListener.Change extends Toggle> c) -> {
+ while (c.next()) {
+ for (final Toggle addedToggle : c.getAddedSubList()) {
+ addConsumeMouseEventfilter(addedToggle);
+ }
+ }
+ });
+ toggleGroup.getToggles().forEach(this::addConsumeMouseEventfilter);
+ }
+
+ private void addConsumeMouseEventfilter(Toggle toggle) {
+ ((ToggleButton) toggle).addEventFilter(MouseEvent.MOUSE_PRESSED, consumeMouseEventfilter);
+ ((ToggleButton) toggle).addEventFilter(MouseEvent.MOUSE_RELEASED, consumeMouseEventfilter);
+ ((ToggleButton) toggle).addEventFilter(MouseEvent.MOUSE_CLICKED, consumeMouseEventfilter);
+ }
+
+ public EventHandler consumeMouseEventfilter = (MouseEvent mouseEvent) -> {
+ if (((Toggle) mouseEvent.getSource()).isSelected()) {
+ mouseEvent.consume();
+ }
+ };
+}
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index 65fb616..d03bae5 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -6,6 +6,7 @@ module fabrik.simulator.pic16f84 {
requires org.controlsfx.controls;
requires org.kordamp.ikonli.javafx;
requires eu.hansolo.tilesfx;
+ requires charm.glisten;
opens fabrik.simulator.pic16f84 to javafx.fxml;
exports fabrik.simulator.pic16f84;
diff --git a/src/main/resources/fabrik/simulator/pic16f84/FileSelector.fxml b/src/main/resources/fabrik/simulator/pic16f84/FileSelector.fxml
deleted file mode 100644
index 14da142..0000000
--- a/src/main/resources/fabrik/simulator/pic16f84/FileSelector.fxml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/resources/fabrik/simulator/pic16f84/MainBody.fxml b/src/main/resources/fabrik/simulator/pic16f84/MainBody.fxml
deleted file mode 100644
index 684e44a..0000000
--- a/src/main/resources/fabrik/simulator/pic16f84/MainBody.fxml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml b/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml
index 7042209..11b48a9 100644
--- a/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml
+++ b/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml
@@ -1,11 +1,674 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+