From 06e934801645e32dea5415ccb4f38368a1667df6 Mon Sep 17 00:00:00 2001 From: Paul Martin Date: Mon, 26 May 2025 14:06:07 +0200 Subject: [PATCH] Introduce FrontendSpecifics --- .../fabrik/simulator/pic16f84/Commands.java | 2 +- .../pic16f84/Controller_Frontend.java | 23 +++++----- .../simulator/pic16f84/CreateWindow.java | 23 ++++++---- .../simulator/pic16f84/DataRegister.java | 2 +- .../simulator/pic16f84/ExecutionState.java | 22 ++++----- .../fabrik/simulator/pic16f84/IOPorts.java | 25 ++++++++-- .../fabrik/simulator/pic16f84/Interrupts.java | 2 +- .../java/fabrik/simulator/pic16f84/Main.java | 2 - .../simulator/pic16f84/PICComponent.java | 4 +- .../java/fabrik/simulator/pic16f84/Table.java | 46 ++++++------------- .../java/fabrik/simulator/pic16f84/Timer.java | 2 +- .../pic16f84/ToggleButtonGroupExt.java | 8 ++-- .../FrontendSpecificObject.java | 4 ++ .../FrontendSpecificToggleButtonGroup.java | 5 ++ .../FrontendSpecificVBox.java | 4 ++ .../frontendspecifics/ToggleButtonGroup.java | 13 ++++++ .../pic16f84/frontendspecifics/VBox.java | 7 +++ .../FrontendControllerInterface.java | 7 ++- .../pic16f84/interfaces/IOPortInterface.java | 12 +++-- .../pic16f84/interfaces/TableInterface.java | 5 +- .../interfaces/ToggleButtonInterface.java | 5 +- .../pic16f84/interfaces/WindowManagement.java | 2 +- src/main/java/module-info.java | 2 + .../fabrik/simulator/pic16f84/frontend.fxml | 1 + 24 files changed, 140 insertions(+), 88 deletions(-) create mode 100644 src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificObject.java create mode 100644 src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificToggleButtonGroup.java create mode 100644 src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificVBox.java create mode 100644 src/main/java/fabrik/simulator/pic16f84/frontendspecifics/ToggleButtonGroup.java create mode 100644 src/main/java/fabrik/simulator/pic16f84/frontendspecifics/VBox.java diff --git a/src/main/java/fabrik/simulator/pic16f84/Commands.java b/src/main/java/fabrik/simulator/pic16f84/Commands.java index f34645b..5fef11c 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Commands.java +++ b/src/main/java/fabrik/simulator/pic16f84/Commands.java @@ -252,7 +252,7 @@ public class Commands extends PICComponent implements CommandInterface { } public void SLEEP() { - frontendController.sleep(); + ExecutionState.sleep(); } public void RETFIE() { diff --git a/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java b/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java index 6b5ea96..f6cd6c4 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java +++ b/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java @@ -1,6 +1,8 @@ package fabrik.simulator.pic16f84; -import com.gluonhq.charm.glisten.control.ToggleButtonGroup; + +import fabrik.simulator.pic16f84.frontendspecifics.FrontendSpecificToggleButtonGroup; +import fabrik.simulator.pic16f84.frontendspecifics.ToggleButtonGroup; import fabrik.simulator.pic16f84.interfaces.*; import javafx.application.Platform; @@ -219,7 +221,7 @@ public class Controller_Frontend extends PICComponent implements FrontendControl commands.decode(0); } watchdogTimer.testAndTrigger(); - Table.refresh(); + table.refresh(); CreateWindow.refreshTable(); ioPorts.refreshUI(getTRISbuttons(), getPORTbuttons()); updateStack(); @@ -285,7 +287,7 @@ public class Controller_Frontend extends PICComponent implements FrontendControl commands.resetTotalExecutionTime(); watchdogTimer.reset(); wdtCheck.setSelected(false); - Table.refresh(); + table.refresh(); read = ParseFile.parseDatei(fileAddress); prog = read [0]; ind = read[1]; @@ -477,27 +479,27 @@ public class Controller_Frontend extends PICComponent implements FrontendControl - private static void setTRISbuttons(ToggleButtonGroup[] allButtons) { + private void setTRISbuttons(ToggleButtonGroup[] allButtons) { allTRISbuttons = allButtons; } - public static ToggleButtonGroup [] getTRISbuttons() { + public FrontendSpecificToggleButtonGroup [] getTRISbuttons() { return allTRISbuttons; } - private static void setPORTbuttons(ToggleButtonGroup[] allButtons) { + private void setPORTbuttons(ToggleButtonGroup[] allButtons) { allPORTbuttons = allButtons; } - public static ToggleButtonGroup [] getPORTbuttons() { + public ToggleButtonGroup [] getPORTbuttons() { return allPORTbuttons; } - public static Circle[] getLEDsA() { + public Circle[] getLEDsA() { return allLEDsA; } - public static Circle[] getLEDsB() { + public Circle[] getLEDsB() { return allLEDsB; } @@ -570,6 +572,3 @@ public class Controller_Frontend extends PICComponent implements FrontendControl } } - - - diff --git a/src/main/java/fabrik/simulator/pic16f84/CreateWindow.java b/src/main/java/fabrik/simulator/pic16f84/CreateWindow.java index 5ccceeb..f2d7308 100644 --- a/src/main/java/fabrik/simulator/pic16f84/CreateWindow.java +++ b/src/main/java/fabrik/simulator/pic16f84/CreateWindow.java @@ -1,5 +1,6 @@ package fabrik.simulator.pic16f84; +import fabrik.simulator.pic16f84.frontendspecifics.VBox; import fabrik.simulator.pic16f84.interfaces.*; import javafx.application.Application; @@ -8,7 +9,6 @@ import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.layout.GridPane; -import javafx.scene.layout.VBox; import javafx.stage.Stage; import java.io.IOException; @@ -17,19 +17,25 @@ import java.util.Objects; public class CreateWindow extends Application implements WindowManagement { private static PICComponentLocator picComponents; // Subjekt public static GridPane grid = new GridPane(); - private static VBox table; + private TableInterface table; + private static VBox tableBox; @Override public void start(Stage primaryStage) throws IOException { + picComponents.registerComponent(ToggleButtonInterface.class, new ToggleButtonGroupExt()); + picComponents.registerComponent(IOPortInterface.class, new IOPorts()); + picComponents.registerComponent(TableInterface.class, new Table()); picComponents.registerComponent(FrontendControllerInterface.class, new Controller_Frontend()); picComponents.initAll(); + table = picComponents.getComponent(TableInterface.class); + FXMLLoader codewindow = new FXMLLoader(CreateWindow.class.getResource("frontend.fxml")); codewindow.setController(picComponents.getComponent(FrontendControllerInterface.class)); Parent code = codewindow.load(); - table = Table.init(picComponents); - grid.add(table, 1, 1); + tableBox = (VBox) table.getTable(); + grid.add(tableBox, 1, 1); grid.add(code, 0, 1); grid.relocate(0, 0); @@ -50,9 +56,11 @@ public class CreateWindow extends Application implements WindowManagement { } public static void refreshTable() { - grid.getChildren().remove(table); - table= Table.refresh(); - grid.add(table, 1, 1); + TableInterface table = picComponents.getComponent(TableInterface.class); + grid.getChildren().remove(table.getTable()); + table.refresh(); + tableBox = (VBox) table.getTable(); + grid.add(tableBox, 1, 1); } @Override @@ -61,7 +69,6 @@ public class CreateWindow extends Application implements WindowManagement { } public CreateWindow (){ - } } diff --git a/src/main/java/fabrik/simulator/pic16f84/DataRegister.java b/src/main/java/fabrik/simulator/pic16f84/DataRegister.java index a88328e..38712d9 100644 --- a/src/main/java/fabrik/simulator/pic16f84/DataRegister.java +++ b/src/main/java/fabrik/simulator/pic16f84/DataRegister.java @@ -60,7 +60,7 @@ public class DataRegister extends PICComponent implements DataRegisterInterface carryFlag = 0; zeroFlag = 0; digitCarryFlag = 0; - ioPorts.resetTRIS(); + if (null != ioPorts) ioPorts.resetTRIS(); System.out.println(Arrays.toString(dataRegister)); } diff --git a/src/main/java/fabrik/simulator/pic16f84/ExecutionState.java b/src/main/java/fabrik/simulator/pic16f84/ExecutionState.java index f35c969..62e1e1e 100644 --- a/src/main/java/fabrik/simulator/pic16f84/ExecutionState.java +++ b/src/main/java/fabrik/simulator/pic16f84/ExecutionState.java @@ -2,18 +2,18 @@ package fabrik.simulator.pic16f84; public class ExecutionState { - private static boolean isAutoRunActive = false; - private static boolean isSleeping = false; - private static double executionTimeMultiplier = 1; + private static boolean isAutoRunActive = false; + private static boolean isSleeping = false; + private static double executionTimeMultiplier = 1; - public static boolean isAutoRunActive() { return isAutoRunActive; } - public static void setAutoRunActive(boolean active) { isAutoRunActive = active; } + public static boolean isAutoRunActive() { return isAutoRunActive; } + public static void setAutoRunActive(boolean active) { isAutoRunActive = active; } - public static boolean isSleeping() { return isSleeping; } - public static void sleep() { isSleeping = true; } - public static void wakeUp() { isSleeping = false; } + public static boolean isSleeping() { return isSleeping; } + public static void sleep() { isSleeping = true; } + public static void wakeUp() { isSleeping = false; } - public static double getExecutionTimeMultiplier() { return executionTimeMultiplier; } - public static void setExecutionTimeMultiplier(double multiplier) { executionTimeMultiplier = multiplier; } - } + public static double getExecutionTimeMultiplier() { return executionTimeMultiplier; } + public static void setExecutionTimeMultiplier(double multiplier) { executionTimeMultiplier = multiplier; } +} diff --git a/src/main/java/fabrik/simulator/pic16f84/IOPorts.java b/src/main/java/fabrik/simulator/pic16f84/IOPorts.java index f8f675e..526804e 100644 --- a/src/main/java/fabrik/simulator/pic16f84/IOPorts.java +++ b/src/main/java/fabrik/simulator/pic16f84/IOPorts.java @@ -1,6 +1,7 @@ package fabrik.simulator.pic16f84; -import com.gluonhq.charm.glisten.control.ToggleButtonGroup; +import fabrik.simulator.pic16f84.frontendspecifics.FrontendSpecificToggleButtonGroup; +import fabrik.simulator.pic16f84.frontendspecifics.ToggleButtonGroup; import fabrik.simulator.pic16f84.interfaces.*; import javafx.collections.ObservableList; import javafx.scene.control.ToggleButton; @@ -77,7 +78,7 @@ public class IOPorts extends PICComponent implements IOPortInterface { dataRegister.setDirectRegister(TRISB, trisLatch[B]); if (((trisLatch[A] >> 4) & 1 )== 1) timer.incrementFromPin(dataRegister.getDirectRegister(PORTA)); - ToggleButtonGroup[] buttons = Controller_Frontend.getPORTbuttons(); + ToggleButtonGroup[] buttons = (ToggleButtonGroup[]) frontendController.getPORTbuttons(); for (int i = 0; i < buttons.length; i++){ int port = (i < 8) ? PORTA : PORTB; int bit = i % 8; @@ -139,7 +140,7 @@ public class IOPorts extends PICComponent implements IOPortInterface { int tris = params[0]; int bit = params[1]; int value = params[2]; - ToggleButtonGroup [] buttonsPORT = Controller_Frontend.getPORTbuttons(); + ToggleButtonGroup [] buttonsPORT = (ToggleButtonGroup[]) frontendController.getPORTbuttons(); if (value == 1){ setBit(tris, bit); buttonsPORT[(tris-TRISA)*8 + bit].setDisable(false); @@ -192,7 +193,7 @@ public class IOPorts extends PICComponent implements IOPortInterface { } public void refreshTable(ToggleButtonGroup parent) { - Table.refresh(); + table.refresh(); CreateWindow.refreshTable(); } @@ -231,4 +232,20 @@ public class IOPorts extends PICComponent implements IOPortInterface { super.initialize(locator); System.out.println("IOPorts.\n"); } + + @Override + public void setPORTfromUI(FrontendSpecificToggleButtonGroup parent) throws IOException { + setPORTfromUI((ToggleButtonGroup) parent); + } + + @Override + public void setTRISfromUI(FrontendSpecificToggleButtonGroup parent) throws IOException { + setTRISfromUI((ToggleButtonGroup) parent); + } + + @Override + public void refreshUI(FrontendSpecificToggleButtonGroup[] trisButtons, + FrontendSpecificToggleButtonGroup[] portButtons) { + refreshUI((ToggleButtonGroup[]) trisButtons, (ToggleButtonGroup[]) portButtons); + } } diff --git a/src/main/java/fabrik/simulator/pic16f84/Interrupts.java b/src/main/java/fabrik/simulator/pic16f84/Interrupts.java index 8561389..5b37b53 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Interrupts.java +++ b/src/main/java/fabrik/simulator/pic16f84/Interrupts.java @@ -30,7 +30,7 @@ public class Interrupts extends PICComponent implements InterruptInterface { enableFlag = dataRegister.getDirectBit(INTCON, enableFlag); int globalFlag = dataRegister.getDirectBit(INTCON, GIE); if (enableFlag == 1) { - frontendController.wakeUpFromSleep(); + ExecutionState.wakeUp(); if (globalFlag == 1) { dataRegister.clearBit(INTCON, GIE); commands.CALL(ISR); diff --git a/src/main/java/fabrik/simulator/pic16f84/Main.java b/src/main/java/fabrik/simulator/pic16f84/Main.java index b59cd38..3454c59 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Main.java +++ b/src/main/java/fabrik/simulator/pic16f84/Main.java @@ -7,11 +7,9 @@ public class Main { public static void main(String[] args) { picComponents.registerComponent(CommandInterface.class, new Commands()); - picComponents.registerComponent(ToggleButtonInterface.class, new ToggleButtonGroupExt()); picComponents.registerComponent(DataRegisterInterface.class, new DataRegister()); picComponents.registerComponent(EEPROMInterface.class, new EEPROM()); picComponents.registerComponent(InterruptInterface.class, new Interrupts()); - picComponents.registerComponent(IOPortInterface.class, new IOPorts()); picComponents.registerComponent(PreScalerInterface.class, new PreScaler()); picComponents.registerComponent(ProgramStackInterface.class, new ProgramStack()); picComponents.registerComponent(TimerInterface.class, new Timer()); diff --git a/src/main/java/fabrik/simulator/pic16f84/PICComponent.java b/src/main/java/fabrik/simulator/pic16f84/PICComponent.java index c1c70ab..98e9a28 100644 --- a/src/main/java/fabrik/simulator/pic16f84/PICComponent.java +++ b/src/main/java/fabrik/simulator/pic16f84/PICComponent.java @@ -9,13 +9,14 @@ public abstract class PICComponent { IOPortInterface ioPorts; TimerInterface timer; InterruptInterface interrupts; + TableInterface table; FrontendControllerInterface frontendController; WatchdogTimerInterface watchdogTimer; ProgramStackInterface programStack; CommandInterface commands; ToggleButtonInterface toggleButtonExt; - void initialize(PICComponentLocator locator) { + public void initialize(PICComponentLocator locator) { toggleButtonExt = locator.getComponent(ToggleButtonInterface.class); dataRegister = locator.getComponent(DataRegisterInterface.class); eeprom = locator.getComponent(EEPROMInterface.class); @@ -27,5 +28,6 @@ public abstract class PICComponent { watchdogTimer = locator.getComponent(WatchdogTimerInterface.class); programStack = locator.getComponent(ProgramStackInterface.class); commands = locator.getComponent(CommandInterface.class); + table = locator.getComponent(TableInterface.class); } } diff --git a/src/main/java/fabrik/simulator/pic16f84/Table.java b/src/main/java/fabrik/simulator/pic16f84/Table.java index e00ee18..aaa54cc 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Table.java +++ b/src/main/java/fabrik/simulator/pic16f84/Table.java @@ -1,5 +1,6 @@ package fabrik.simulator.pic16f84; +import fabrik.simulator.pic16f84.frontendspecifics.VBox; import fabrik.simulator.pic16f84.interfaces.*; import javafx.beans.property.SimpleStringProperty; import javafx.geometry.Insets; @@ -10,24 +11,15 @@ import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.layout.HBox; -import javafx.scene.layout.VBox; import static javafx.application.Application.launch; -public class Table { - - - //Hier wird die Tabelle aktualisiert - //Tabelle aktualisieren - private static DataRegisterInterface dataRegister; - private static CommandInterface commands; - +public class Table extends PICComponent implements TableInterface { + private VBox tableBox; private static final int NUM_COLUMNS = 8; // Anzahl der Spalten private static final double TABLE_WIDTH = 425; // Breite der TableView private static final double TABLE_HEIGHT = 600; // Höhe der TableView - private static IOPortInterface ioPorts; - private static PreScalerInterface preScaler; private static String formatHex(String s) { return (s.length() == 1) ? "0" + s : s; @@ -45,27 +37,16 @@ public class Table { return s; } - public static VBox init(PICComponentLocator picComponents){ - dataRegister = (DataRegisterInterface) picComponents.getComponent(DataRegisterInterface.class); - commands = (CommandInterface) picComponents.getComponent(CommandInterface.class); - ioPorts = (IOPortInterface) picComponents.getComponent(IOPortInterface.class); - preScaler = (PreScalerInterface) picComponents.getComponent(PreScalerInterface.class); - return refresh(); + public VBox getTable(){ + refresh(); + return tableBox; } - public static VBox refresh() { - - // Erstelle eine Instanz der dataRegister-Klasse - - + public void refresh() { // Erstelle eine TableView für die Datenanzeige TableView tableView = new TableView<>(); tableView.setPrefWidth(TABLE_WIDTH); tableView.setPrefHeight(TABLE_HEIGHT); - - - - // Erstelle Spalten für die TableView for (int i = 0; i < NUM_COLUMNS; i++) { TableColumn column = new TableColumn<>("0" + (i)); @@ -79,7 +60,6 @@ public class Table { }); tableView.getColumns().add(column); } - // Fülle die TableView mit Daten aus dem Array int numRows = (int) Math.ceil((double) dataRegister.getDataRegister().length / NUM_COLUMNS); for (int row = 0; row < numRows; row++) { @@ -135,14 +115,12 @@ public class Table { VBox table = new VBox(); table.getChildren().addAll(tableView, labelsAndButton); VBox.setMargin(tableView, new Insets(0, 0, 0, 0)); - - return table; - + tableBox = table; } - private static void triggerReset() { + private void triggerReset() { dataRegister.initDataRegister(); - ioPorts.refreshUI(Controller_Frontend.getTRISbuttons(), Controller_Frontend.getPORTbuttons()); + ioPorts.refreshUI(frontendController.getTRISbuttons(), frontendController.getPORTbuttons()); CreateWindow.refreshTable(); } @@ -169,5 +147,7 @@ public class Table { } } - + public void initialize(PICComponentLocator picComponents) { + super.initialize(picComponents); + } } diff --git a/src/main/java/fabrik/simulator/pic16f84/Timer.java b/src/main/java/fabrik/simulator/pic16f84/Timer.java index 45415b8..81ba34f 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Timer.java +++ b/src/main/java/fabrik/simulator/pic16f84/Timer.java @@ -27,7 +27,7 @@ public class Timer extends PICComponent implements TimerInterface { public void incrementFromPin (int register){ - if ((dataRegister.getDirectBit(OPTION, T0CS) == 1) && !frontendController.isSleeping()){ + if ((dataRegister.getDirectBit(OPTION, T0CS) == 1) && !ExecutionState.isSleeping()){ int newpin = (register >> 4) & 1; if (newpin != oldpin) { if (dataRegister.getDirectBit(OPTION, T0SE) == 0) { diff --git a/src/main/java/fabrik/simulator/pic16f84/ToggleButtonGroupExt.java b/src/main/java/fabrik/simulator/pic16f84/ToggleButtonGroupExt.java index 4868ca9..3fe6425 100644 --- a/src/main/java/fabrik/simulator/pic16f84/ToggleButtonGroupExt.java +++ b/src/main/java/fabrik/simulator/pic16f84/ToggleButtonGroupExt.java @@ -1,6 +1,8 @@ package fabrik.simulator.pic16f84; -import com.gluonhq.charm.glisten.control.ToggleButtonGroup; + +import fabrik.simulator.pic16f84.frontendspecifics.FrontendSpecificObject; +import fabrik.simulator.pic16f84.frontendspecifics.ToggleButtonGroup; import fabrik.simulator.pic16f84.interfaces.ToggleButtonInterface; import javafx.collections.ListChangeListener; import javafx.event.EventHandler; @@ -10,7 +12,7 @@ import javafx.scene.input.MouseEvent; import java.io.IOException; -public class ToggleButtonGroupExt extends PICComponent implements ToggleButtonInterface { +public class ToggleButtonGroupExt extends PICComponent implements ToggleButtonInterface, FrontendSpecificObject { private static ToggleButtonGroupExt me; @@ -57,7 +59,7 @@ public class ToggleButtonGroupExt extends PICComponent implements ToggleButtonIn } }; - @Override + public void initialize(PICComponentLocator locator) { System.out.println("ToggleButtonGroupExt"); super.initialize(locator); diff --git a/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificObject.java b/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificObject.java new file mode 100644 index 0000000..09caaed --- /dev/null +++ b/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificObject.java @@ -0,0 +1,4 @@ +package fabrik.simulator.pic16f84.frontendspecifics; + +public interface FrontendSpecificObject { +} diff --git a/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificToggleButtonGroup.java b/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificToggleButtonGroup.java new file mode 100644 index 0000000..8510ae3 --- /dev/null +++ b/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificToggleButtonGroup.java @@ -0,0 +1,5 @@ +package fabrik.simulator.pic16f84.frontendspecifics; + +public interface FrontendSpecificToggleButtonGroup extends FrontendSpecificObject{ + +} diff --git a/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificVBox.java b/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificVBox.java new file mode 100644 index 0000000..0c5109b --- /dev/null +++ b/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/FrontendSpecificVBox.java @@ -0,0 +1,4 @@ +package fabrik.simulator.pic16f84.frontendspecifics; + +public interface FrontendSpecificVBox extends FrontendSpecificObject { +} diff --git a/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/ToggleButtonGroup.java b/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/ToggleButtonGroup.java new file mode 100644 index 0000000..09e18cc --- /dev/null +++ b/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/ToggleButtonGroup.java @@ -0,0 +1,13 @@ +package fabrik.simulator.pic16f84.frontendspecifics; + +import javafx.scene.control.ToggleButton; + +public class ToggleButtonGroup extends com.gluonhq.charm.glisten.control.ToggleButtonGroup implements FrontendSpecificToggleButtonGroup { + public ToggleButtonGroup(){ + super(); + } + + public ToggleButtonGroup(ToggleButton... toggles) { + super(toggles); + } +} \ No newline at end of file diff --git a/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/VBox.java b/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/VBox.java new file mode 100644 index 0000000..5b4f467 --- /dev/null +++ b/src/main/java/fabrik/simulator/pic16f84/frontendspecifics/VBox.java @@ -0,0 +1,7 @@ +package fabrik.simulator.pic16f84.frontendspecifics; + +public class VBox extends javafx.scene.layout.VBox implements FrontendSpecificVBox { + public VBox(){ + super(); + } +} diff --git a/src/main/java/fabrik/simulator/pic16f84/interfaces/FrontendControllerInterface.java b/src/main/java/fabrik/simulator/pic16f84/interfaces/FrontendControllerInterface.java index fb3e010..444cc6d 100644 --- a/src/main/java/fabrik/simulator/pic16f84/interfaces/FrontendControllerInterface.java +++ b/src/main/java/fabrik/simulator/pic16f84/interfaces/FrontendControllerInterface.java @@ -1,8 +1,13 @@ package fabrik.simulator.pic16f84.interfaces; -public interface FrontendControllerInterface extends PICComponentInterface { +import fabrik.simulator.pic16f84.frontendspecifics.FrontendSpecificObject; +import fabrik.simulator.pic16f84.frontendspecifics.FrontendSpecificToggleButtonGroup; +public interface FrontendControllerInterface extends PICComponentInterface, FrontendSpecificObject { + FrontendSpecificToggleButtonGroup[] getPORTbuttons(); + + FrontendSpecificToggleButtonGroup[] getTRISbuttons(); void stopRunFromBackend(String watchdogTimer); } diff --git a/src/main/java/fabrik/simulator/pic16f84/interfaces/IOPortInterface.java b/src/main/java/fabrik/simulator/pic16f84/interfaces/IOPortInterface.java index 90e3221..1ae1413 100644 --- a/src/main/java/fabrik/simulator/pic16f84/interfaces/IOPortInterface.java +++ b/src/main/java/fabrik/simulator/pic16f84/interfaces/IOPortInterface.java @@ -1,11 +1,13 @@ package fabrik.simulator.pic16f84.interfaces; -import com.gluonhq.charm.glisten.control.ToggleButtonGroup; import javafx.scene.shape.Circle; import java.io.IOException; -public interface IOPortInterface extends PICComponentInterface { +import fabrik.simulator.pic16f84.frontendspecifics.FrontendSpecificObject; +import fabrik.simulator.pic16f84.frontendspecifics.FrontendSpecificToggleButtonGroup; + +public interface IOPortInterface extends PICComponentInterface, FrontendSpecificObject { void resetTRIS(); void setRegister(int i, int content); @@ -14,11 +16,11 @@ public interface IOPortInterface extends PICComponentInterface { void setBit(int i, int bit); - void setPORTfromUI(ToggleButtonGroup parent) throws IOException; + void setPORTfromUI(FrontendSpecificToggleButtonGroup parent) throws IOException; - void setTRISfromUI(ToggleButtonGroup parent) throws IOException; + void setTRISfromUI(FrontendSpecificToggleButtonGroup parent) throws IOException; - void refreshUI(ToggleButtonGroup[] triSbuttons, ToggleButtonGroup[] porTbuttons); + void refreshUI(FrontendSpecificToggleButtonGroup[] trisButtons, FrontendSpecificToggleButtonGroup[] portButtons); void reset(); diff --git a/src/main/java/fabrik/simulator/pic16f84/interfaces/TableInterface.java b/src/main/java/fabrik/simulator/pic16f84/interfaces/TableInterface.java index 8d6e594..54a3045 100644 --- a/src/main/java/fabrik/simulator/pic16f84/interfaces/TableInterface.java +++ b/src/main/java/fabrik/simulator/pic16f84/interfaces/TableInterface.java @@ -1,7 +1,10 @@ package fabrik.simulator.pic16f84.interfaces; +import fabrik.simulator.pic16f84.frontendspecifics.FrontendSpecificVBox; import javafx.scene.layout.VBox; public interface TableInterface extends PICComponentInterface { - VBox refresh(); + void refresh(); + + FrontendSpecificVBox getTable(); } diff --git a/src/main/java/fabrik/simulator/pic16f84/interfaces/ToggleButtonInterface.java b/src/main/java/fabrik/simulator/pic16f84/interfaces/ToggleButtonInterface.java index e90d3f1..e6eee42 100644 --- a/src/main/java/fabrik/simulator/pic16f84/interfaces/ToggleButtonInterface.java +++ b/src/main/java/fabrik/simulator/pic16f84/interfaces/ToggleButtonInterface.java @@ -1,7 +1,8 @@ package fabrik.simulator.pic16f84.interfaces; -import com.gluonhq.charm.glisten.control.ToggleButtonGroup; +import fabrik.simulator.pic16f84.frontendspecifics.FrontendSpecificObject; +import fabrik.simulator.pic16f84.frontendspecifics.ToggleButtonGroup; -public interface ToggleButtonInterface extends PICComponentInterface { +public interface ToggleButtonInterface extends PICComponentInterface, FrontendSpecificObject { void addAlwaysOneSelectedSupport(ToggleButtonGroup allTRISButton); } diff --git a/src/main/java/fabrik/simulator/pic16f84/interfaces/WindowManagement.java b/src/main/java/fabrik/simulator/pic16f84/interfaces/WindowManagement.java index 75c3dca..3cffa8e 100644 --- a/src/main/java/fabrik/simulator/pic16f84/interfaces/WindowManagement.java +++ b/src/main/java/fabrik/simulator/pic16f84/interfaces/WindowManagement.java @@ -4,4 +4,4 @@ public interface WindowManagement extends PICComponentInterface { static void refreshTable() {} static void startFromMain(String[] args) {} -} +} \ No newline at end of file diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 125bf6f..4e7bdd3 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -11,7 +11,9 @@ module fabrik.simulator.pic16f84 { requires json.simple; opens fabrik.simulator.pic16f84 to javafx.fxml; + opens fabrik.simulator.pic16f84.frontendspecifics to javafx.fxml; exports fabrik.simulator.pic16f84; exports fabrik.simulator.pic16f84.interfaces; + exports fabrik.simulator.pic16f84.frontendspecifics; opens fabrik.simulator.pic16f84.interfaces to javafx.fxml; } \ No newline at end of file diff --git a/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml b/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml index 26d74de..f59eabf 100644 --- a/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml +++ b/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml @@ -1,5 +1,6 @@ +