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 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 @@ - - - - - - - - - - -