Zeilen
This commit is contained in:
@ -31,6 +31,8 @@ import java.util.Objects;
|
||||
public class Controller_Frontend {
|
||||
|
||||
private int [] prog;
|
||||
private int [][] read;
|
||||
private int [] ind;
|
||||
|
||||
|
||||
@FXML
|
||||
@ -74,57 +76,14 @@ public class Controller_Frontend {
|
||||
|
||||
@FXML
|
||||
private void autoRun(ActionEvent event) throws IOException {
|
||||
if (lstContentListView.getItems().isEmpty()) {
|
||||
// Datei ist nicht geladen oder leer
|
||||
return;
|
||||
}
|
||||
|
||||
// Aktuelle Zeile abrufen
|
||||
int currentIndex = lstContentListView.getSelectionModel().getSelectedIndex();
|
||||
currentIndex = (currentIndex == -1) ? 0 : currentIndex + 1;
|
||||
|
||||
// Durch das gesamte Programm laufen
|
||||
while (currentIndex < lstContentListView.getItems().size()) {
|
||||
// Scrollen zur ausgewählten Zeile
|
||||
lstContentListView.scrollTo(currentIndex);
|
||||
|
||||
// CSS-Stil nur auf die Zellen der ausgewählten Zeile anwenden
|
||||
String selectedRowStyle = "-fx-control-inner-background: red;";
|
||||
int finalCurrentIndex = currentIndex;
|
||||
lstContentListView.setCellFactory(column -> {
|
||||
return new ListCell<String>() {
|
||||
@Override
|
||||
protected void updateItem(String item, boolean empty) {
|
||||
super.updateItem(item, empty);
|
||||
setText(item);
|
||||
if (getIndex() == finalCurrentIndex) {
|
||||
setStyle(selectedRowStyle);
|
||||
} else {
|
||||
setStyle(""); // Zurücksetzen des Stils für andere Zellen
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
// Befehle ausführen
|
||||
Commands.decode(prog[DataRegister.getPC()]);
|
||||
DataRegister.increasePC();
|
||||
Table.refresh();
|
||||
Stage stage = (Stage) autoRunButton.getScene().getWindow();
|
||||
CreateWindow.refreshTable(stage);
|
||||
|
||||
|
||||
while (DataRegister.getPC() < prog.length) {
|
||||
stepintoButton(event);
|
||||
try {
|
||||
Thread.sleep(500); // Millisekunden
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
currentIndex++;
|
||||
}
|
||||
|
||||
// Wenn das Ende der Datei erreicht ist, zeige eine Meldung an
|
||||
System.out.println("End of file reached.");
|
||||
}
|
||||
|
||||
@FXML
|
||||
@ -135,45 +94,27 @@ public class Controller_Frontend {
|
||||
}
|
||||
|
||||
// Aktuelle Zeile abrufen
|
||||
int currentIndex = lstContentListView.getSelectionModel().getSelectedIndex();
|
||||
|
||||
// Wenn keine Zeile ausgewählt ist, starte von der ersten Zeile
|
||||
if (currentIndex == -1) {
|
||||
currentIndex = 1;
|
||||
} else {
|
||||
// Gehe zur nächsten Zeile
|
||||
currentIndex++;
|
||||
}
|
||||
|
||||
// Überprüfen, ob currentIndex innerhalb der Grenzen liegt
|
||||
if (currentIndex >= lstContentListView.getItems().size()) {
|
||||
// Wenn das Ende der Datei erreicht ist, zeige eine Meldung an
|
||||
System.out.println("End of file reached.");
|
||||
return;
|
||||
}
|
||||
int currentIndex = ind[DataRegister.getPC()];
|
||||
|
||||
// Scrollen zur ausgewählten Zeile
|
||||
lstContentListView.scrollTo(currentIndex);
|
||||
lstContentListView.scrollTo(currentIndex -2);
|
||||
|
||||
// Zeile auswählen
|
||||
lstContentListView.getSelectionModel().clearSelection();
|
||||
lstContentListView.getSelectionModel().select(currentIndex);
|
||||
|
||||
String selectedRowStyle = "-fx-control-inner-background: red;";
|
||||
int finalCurrentIndex = currentIndex + 1;
|
||||
lstContentListView.setCellFactory(column -> {
|
||||
return new ListCell<String>() {
|
||||
@Override
|
||||
protected void updateItem(String item, boolean empty) {
|
||||
super.updateItem(item, empty);
|
||||
setText(item);
|
||||
if (getIndex() == finalCurrentIndex) {
|
||||
setStyle(selectedRowStyle);
|
||||
} else {
|
||||
setStyle("");
|
||||
}
|
||||
lstContentListView.setCellFactory(column -> new ListCell<String>() {
|
||||
@Override
|
||||
protected void updateItem(String item, boolean empty) {
|
||||
super.updateItem(item, empty);
|
||||
setText(item);
|
||||
if (getIndex() == currentIndex) {
|
||||
setStyle(selectedRowStyle);
|
||||
} else {
|
||||
setStyle("");
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// Befehle ausführen
|
||||
@ -182,6 +123,7 @@ public class Controller_Frontend {
|
||||
Table.refresh();
|
||||
Stage stage = (Stage) stepintoButton.getScene().getWindow();
|
||||
CreateWindow.refreshTable(stage);
|
||||
IOPorts.refreshUI(getTRISbuttons(), getPORTbuttons());
|
||||
}
|
||||
|
||||
|
||||
@ -189,7 +131,9 @@ public class Controller_Frontend {
|
||||
protected void selectFileLST(ActionEvent event){
|
||||
File selectedFile = chooseLSTFile();
|
||||
if(selectedFile != null){
|
||||
prog = ParseFile.parseDatei(selectedFile.getAbsolutePath());
|
||||
read = ParseFile.parseDatei(selectedFile.getAbsolutePath());
|
||||
prog = read [0];
|
||||
ind = read[1];
|
||||
System.out.println(Arrays.toString(Arrays.stream(prog).toArray()));
|
||||
displayLSTFileContent(selectedFile);
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ParseFile {
|
||||
public static int[] parseDatei(String dateiPfad) {
|
||||
public static int[][] parseDatei(String dateiPfad) {
|
||||
List<String> zeilen = new ArrayList<>();
|
||||
|
||||
// Bei diesem Schritt wird jetzt Zeile für Zeile das richtige Programm eingelesen
|
||||
@ -23,10 +23,12 @@ public class ParseFile {
|
||||
|
||||
// Initialisierung des Programmspeichers mit 1024 Speicherplätzen
|
||||
int[] programmspeicher = new int[1024]; // Wie viele Programmspeicherplätze gibt es? → 1024
|
||||
int[] zeilenspeicher = new int[1024];
|
||||
|
||||
// Adresse und Befehle werden ignoriert und nur die Befehle werden in den Programmspeicher gespeichert
|
||||
|
||||
for (String zeile : zeilen) {
|
||||
for (int i = 0; i<zeilen.toArray().length; i++) {
|
||||
String zeile = zeilen.get(i);
|
||||
String[] teile = zeile.split("\\s+"); // Spaltenweise werden die einzelnen Befehle getrennt
|
||||
if (teile.length >= 2) {
|
||||
try {
|
||||
@ -36,6 +38,7 @@ public class ParseFile {
|
||||
// Ausgabe der eingelesenen Zeile
|
||||
System.out.printf("Gelesene Zeile: %s%n", zeile);
|
||||
|
||||
zeilenspeicher[adresse] = i;
|
||||
programmspeicher[adresse] = befehl; // Befehl im Programmspeicher speichern
|
||||
} catch (NumberFormatException e) {
|
||||
// Wenn ein Fehler aufkommt, wird diese Zeile ignoriert funktioniert
|
||||
@ -44,6 +47,6 @@ public class ParseFile {
|
||||
}
|
||||
}
|
||||
|
||||
return programmspeicher;
|
||||
return new int[][]{programmspeicher, zeilenspeicher};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user