diff --git a/src/main/java/fabrik/simulator/pic16f84/Commands.java b/src/main/java/fabrik/simulator/pic16f84/Commands.java index a0ef629..e539ce6 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Commands.java +++ b/src/main/java/fabrik/simulator/pic16f84/Commands.java @@ -93,6 +93,7 @@ public class Commands { DECF (f, d); return; case 0b00101100000000: + //1 bzw 2 Laufzeitpunkte System.out.println("DECFSZ: " + f + " " + d); DECFSZ (f, d); return; diff --git a/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java b/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java index 70e31ed..186c949 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java +++ b/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java @@ -2,6 +2,7 @@ package fabrik.simulator.pic16f84; import com.gluonhq.charm.glisten.control.ToggleButtonGroup; +import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; @@ -68,24 +69,40 @@ public class Controller_Frontend { @FXML private Button stepButton; + + @FXML - private Button autoRunButton; + private Button autoRunGUI; + + @FXML - private void autoRun(ActionEvent event) throws IOException { - while (DataRegister.getPC() < prog.length) { - stepintoButton(event); + private void autoRunGUI(ActionEvent event) { + Thread autoRunThread = new Thread(() -> { try { - Thread.sleep(500); // Millisekunden + while (DataRegister.getPC() < prog.length) { + + Platform.runLater(() -> { + try { + stepintoButton(null); + } catch (IOException e) { + e.printStackTrace(); + } + }); + Thread.sleep(200); // Millisekunden + } } catch (InterruptedException e) { e.printStackTrace(); } - } + }); + autoRunThread.setDaemon(true); + autoRunThread.start(); } + @FXML private void stepintoButton(ActionEvent event) throws IOException { if (lstContentListView.getItems().isEmpty()) { @@ -172,6 +189,9 @@ public class Controller_Frontend { // Aktuelle Zeile abrufen int currentIndex = lstContentListView.getSelectionModel().getSelectedIndex(); + + // if (currentIndex == ) + // Wenn keine Zeile ausgewählt ist, starte von der ersten Zeile if (currentIndex == -1) { currentIndex = 1; @@ -188,6 +208,7 @@ public class Controller_Frontend { } // Zeile auswählen und anzeigen + lstContentListView.scrollTo(currentIndex); lstContentListView.getSelectionModel().select(currentIndex + 1); lstContentListView.scrollTo(currentIndex + 1); } @@ -273,6 +294,7 @@ public class Controller_Frontend { lstContentListView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); lstContentListView.getStylesheets().add(Objects.requireNonNull(getClass().getResource("styles.css")).toExternalForm()); + autoRunGUI.setOnAction(this::autoRunGUI); } private static void setTRISbuttons(ToggleButtonGroup[] allButtons) { diff --git a/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml b/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml index bc3508f..1a0ea2c 100644 --- a/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml +++ b/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml @@ -21,12 +21,13 @@ - + + +