Skip to content
Snippets Groups Projects
Commit ddb06720 authored by Dennis Eisold's avatar Dennis Eisold
Browse files

GUI Controller und fxml angepasst

parent 699beb9a
No related branches found
No related tags found
No related merge requests found
package projekt.enigma; package projekt.enigma;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Task; import javafx.concurrent.Task;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
...@@ -12,7 +10,9 @@ import javafx.scene.input.MouseEvent; ...@@ -12,7 +10,9 @@ import javafx.scene.input.MouseEvent;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
import javafx.scene.shape.Circle; import javafx.scene.shape.Circle;
import javafx.stage.StageStyle;
import org.apache.http.HttpException; import org.apache.http.HttpException;
import org.controlsfx.dialog.ProgressDialog;
import projekt.enigma.model.Codierer; import projekt.enigma.model.Codierer;
import projekt.enigma.model.Fehler; import projekt.enigma.model.Fehler;
...@@ -21,71 +21,62 @@ import java.util.ArrayList; ...@@ -21,71 +21,62 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
public class GuiController { public class GuiController {
//region Klassenvariablen
//region Klassenvariablen
private final static String[] walzenNr = {"I", "II", "III", "IV", "V"}; private final static String[] walzenNr = {"I", "II", "III", "IV", "V"};
private final static String[] ringNr = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26"}; private final static String[] ringNr = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26"};
private final static String[] position = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}; private final static String[] position = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
private String[] empfangeneNachricht; private String[] empfangeneNachricht;
private static final String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private String textEingabe; private String textEingabe;
private String textCodiert; private String textCodiert;
private char chiffrierterBuchstabe; private char chiffrierterBuchstabe;
private ArrayList<MenuItem> mItem;
private boolean resetDisplay; private boolean resetDisplay;
private Codierer codierer; private Codierer codierer;
private enum BUCHSTABE_LEUCHTET {AN, AUS} private enum BUCHSTABE_LEUCHTET {AN, AUS}
@FXML @FXML
private static ToggleButton[] tBtnPort; private static ToggleButton[] tBtnPort;
//endregion
//endregion
//region GUI-Elemente //region GUI-Elemente
//deklariert die benötigten Buttons //deklariert die benötigten Buttons
@FXML @FXML
private Button btnA, btnB, btnC, btnD, btnE, btnF, btnG, btnH, btnI, btnJ, btnK, btnL, btnM, btnN, btnO, btnP, btnQ, private Button btnA, btnB, btnC, btnD, btnE, btnF, btnG, btnH, btnI, btnJ, btnK, btnL, btnM, btnN, btnO, btnP, btnQ,
btnR, btnS, btnT, btnU, btnV, btnW, btnX, btnY, btnZ, btnSenden, btnEmpfangen, btnDelete, btnReset, btnR, btnS, btnT, btnU, btnV, btnW, btnX, btnY, btnZ, btnSenden, btnEmpfangen, btnDelete, btnReset;
btnPort0, btnPort1, btnPort2, btnPort3, btnPort4, btnPort5, btnPort6, btnPort7, btnPort8, btnPort9;
//deklariert die benötigten Kreise //deklariert die benötigten Kreise
@FXML @FXML
private Circle circA, circB, circC, circD, circE, circF, circG, circH, circI, circJ, circK, circL, circM, circN, private Circle circA, circB, circC, circD, circE, circF, circG, circH, circI, circJ, circK, circL, circM, circN,
circO, circP, circQ, circR, circS, circT, circU, circV, circW, circX, circY, circZ; circO, circP, circQ, circR, circS, circT, circU, circV, circW, circX, circY, circZ;
//deklariert die benötigten Label //deklariert die benötigten Label
@FXML @FXML
private Label lblA, lblB, lblC, lblD, lblE, lblF, lblG, lblH, lblI, lblJ, lblK, lblL, lblM, lblN, lblO, lblP, lblQ, private Label lblSpruchschluessel, lblKenngruppe;
lblR, lblS, lblT, lblU, lblV, lblW, lblX, lblY, lblZ, lblLadeNachricht, lblTagesschluessel,
lblSpruchschluessel, lblKenngruppe, lblProgressText;
//deklariert den ProgressIndicator
@FXML
private ProgressIndicator piProgress;
//deklariert die MenueButtons //deklariert die MenueButtons
@FXML @FXML
private MenuButton mBtnWalzPos1, mBtnWalzPos2, mBtnWalzPos3, mBtnNotchPos1, mBtnNotchPos2, mBtnNotchPos3, private MenuButton mBtnWalzPos1, mBtnWalzPos2, mBtnWalzPos3, mBtnNotchPos1, mBtnNotchPos2, mBtnNotchPos3,
mBtnStartPos1, mBtnStartPos2, mBtnStartPos3; mBtnStartPos1, mBtnStartPos2, mBtnStartPos3;
//deklariert die benötigten Textfelder //deklariert die benötigten Textfelder
@FXML @FXML
private TextField tfStecker1, tfStecker2, tfStecker3, tfStecker4, tfStecker5, tfStecker6, tfStecker7, tfStecker8, private TextField tfCodiert, tfKlartext;
tfStecker9, tfStecker10, tfCodiert, tfKlartext;
//deklariert benötigtes pane //deklariert benötigtes pane
@FXML @FXML
private Pane paneProgress, portPane0, portPane1, portPane2, portPane3, portPane4, portPane5, portPane6, portPane7, portPane8, portPane9; private Pane portPane0, portPane1, portPane2, portPane3, portPane4, portPane5, portPane6, portPane7, portPane8, portPane9;
//deklariert benötigtes GridPane //deklariert benötigtes GridPane
@FXML @FXML
private GridPane mainGrid; private GridPane mainGrid;
//endregion
//endregion
//region Init //region Init
/** /**
* Initialisiert die Elemente GUI und setzt deren Startwerte * Initialisiert die Elemente GUI und setzt deren Startwerte
*/ */
@FXML @FXML
void initialize() { void initialize() {
// Variablen setzen // Variablen setzen
textEingabe = ""; textEingabe = "";
textCodiert = ""; textCodiert = "";
...@@ -108,7 +99,7 @@ public class GuiController { ...@@ -108,7 +99,7 @@ public class GuiController {
menu(mBtnStartPos2, position); menu(mBtnStartPos2, position);
myToggleButtons(10); myToggleButtons();
} }
...@@ -117,7 +108,6 @@ public class GuiController { ...@@ -117,7 +108,6 @@ public class GuiController {
* Hier wird die Funktion zum erstellen und Befüllen der Boxen, die Funktion zehn mal aufgerufen. * Hier wird die Funktion zum erstellen und Befüllen der Boxen, die Funktion zehn mal aufgerufen.
*/ */
private void generateSteckbrett() { private void generateSteckbrett() {
for (int i = 0; i <= 9; i++) { for (int i = 0; i <= 9; i++) {
this.createSteckbrettPort(i); this.createSteckbrettPort(i);
} }
...@@ -131,7 +121,6 @@ public class GuiController { ...@@ -131,7 +121,6 @@ public class GuiController {
* @param port : int : Kabel Nummer (0-9) * @param port : int : Kabel Nummer (0-9)
*/ */
private void createSteckbrettPort(int port) { private void createSteckbrettPort(int port) {
// Holt die verfügbaren Buchstaben für diesen Port ab und erstellt ein char Array daraus // Holt die verfügbaren Buchstaben für diesen Port ab und erstellt ein char Array daraus
char[] verfuegbareBuchstaben = this.codierer.fetchVerfuegbareBuchstaben(port).toCharArray(); char[] verfuegbareBuchstaben = this.codierer.fetchVerfuegbareBuchstaben(port).toCharArray();
...@@ -165,8 +154,7 @@ public class GuiController { ...@@ -165,8 +154,7 @@ public class GuiController {
* @param button : Button für die die Einträge erstellt werden sollen * @param button : Button für die die Einträge erstellt werden sollen
*/ */
private void menu(MenuButton button, String[] str) { private void menu(MenuButton button, String[] str) {
ArrayList<MenuItem> mItem = new ArrayList<>();
mItem = new ArrayList<>();
for (int i = 0; i < str.length; i++) { for (int i = 0; i < str.length; i++) {
//Eintrag aus str der Arraylist mi hinzufügen //Eintrag aus str der Arraylist mi hinzufügen
...@@ -175,15 +163,15 @@ public class GuiController { ...@@ -175,15 +163,15 @@ public class GuiController {
button.getItems().add(mItem.get(i)); button.getItems().add(mItem.get(i));
int finalI = i; int finalI = i;
//Listener für die einzelnen Einträge //Listener für die einzelnen Einträge
ArrayList<MenuItem> finalMi = mItem; mItem.get(i).setOnAction(e -> setMenuBtnText(button, mItem.get(finalI)));
mItem.get(i).setOnAction(e -> setMenuBtnText(button, finalMi.get(finalI)));
} }
} }
/** /**
* TODO: Doku * TODO: Doku
* @param port *
* @param status * @param port : int : Port zu dem das Panel geändert werden soll
* @param status : aktivieren/deaktivieren
*/ */
private void switchPortVisible(int port, boolean status) { private void switchPortVisible(int port, boolean status) {
switch (port) { switch (port) {
...@@ -224,47 +212,34 @@ public class GuiController { ...@@ -224,47 +212,34 @@ public class GuiController {
} }
/** /**
* TODO * TODO: Doku
*
* @param countOfBtn
*/ */
private void myToggleButtons(int countOfBtn) { private void myToggleButtons() {
final ToggleGroup cabelConnect = new ToggleGroup(); final ToggleGroup cabelConnect = new ToggleGroup();
tBtnPort = new ToggleButton[countOfBtn]; tBtnPort = new ToggleButton[10];
for (int i = 0; i < countOfBtn; i++) { for (int i = 0; i < 10; i++) {
switchPortVisible(i, false);
tBtnPort[i] = new ToggleButton(i + "Port"); tBtnPort[i] = new ToggleButton(i + "Port");
tBtnPort[i].setAlignment(Pos.CENTER_RIGHT); tBtnPort[i].setAlignment(Pos.CENTER_RIGHT);
tBtnPort[i].setToggleGroup(cabelConnect); tBtnPort[i].setToggleGroup(cabelConnect);
//if (i == 0) tBtnPort[0].setSelected(true); GridPane.setMargin(tBtnPort[i], new Insets(0, 15, 0, 15));
/* tBtnPort[i].setOnAction(event -> {
*//* portPane[].setVisible(false);*//*
});*/
mainGrid.setMargin(tBtnPort[i], new Insets(0, 15, 0, 15));
mainGrid.add(tBtnPort[i], i + 1, 8); mainGrid.add(tBtnPort[i], i + 1, 8);
cabelConnect.selectedToggleProperty(). cabelConnect.selectedToggleProperty().
addListener(new ChangeListener<Toggle>() { addListener((observable, oldValue, newValue) -> {
@Override //TODO
public void changed(ObservableValue<? extends Toggle> observable, Toggle oldValue, Toggle newValue) { for (int j = 0; j < 10; j++) {
//TODO if (cabelConnect.getSelectedToggle() == tBtnPort[j]) {
for (int j = 0; j < 10; j++) { switchPortVisible(j, true);
if (cabelConnect.getSelectedToggle() == tBtnPort[j]) { } else if (cabelConnect.getSelectedToggle() != tBtnPort[j]) {
switchPortVisible(j, true); switchPortVisible(j, false);
} else if (cabelConnect.getSelectedToggle() != tBtnPort[j]) {
/* if (cabelConnect.getSelectedToggle() == tBtnPort[i]) {*/
switchPortVisible(j, false);
/* }*/
}
} }
} }
}); });
} }
} }
//endregion //endregion
//region EventHandler/Listener //region EventHandler/Listener
/** /**
* Wird ausgelöst wenn der gedrückte Button losgelassen wird. * Wird ausgelöst wenn der gedrückte Button losgelassen wird.
* Setzt die Hintergrundfarbe des Kreises mit dem chiffrierten Buchstaben auf grau, * Setzt die Hintergrundfarbe des Kreises mit dem chiffrierten Buchstaben auf grau,
...@@ -440,14 +415,13 @@ public class GuiController { ...@@ -440,14 +415,13 @@ public class GuiController {
if (e.getSource() == btnReset) { if (e.getSource() == btnReset) {
codierer.resetHardware(); codierer.resetHardware();
this.resetDisplay = true; this.resetDisplay = true;
this.lblSpruchschluessel.setText("");
this.setzeTagesSchluessel(); this.setzeTagesSchluessel();
} }
} }
//endregion //endregion
//region Methoden //region Methoden
/** /**
* Setzt die Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf gelb bzw. auf grau. * Setzt die Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf gelb bzw. auf grau.
* *
...@@ -587,7 +561,6 @@ public class GuiController { ...@@ -587,7 +561,6 @@ public class GuiController {
* sowie den Klartext in das Textfeld tfKlartext. Setzt den Spruchschlüssel * sowie den Klartext in das Textfeld tfKlartext. Setzt den Spruchschlüssel
*/ */
private void empfangeFunkspruch() { private void empfangeFunkspruch() {
progressDialogue("rx"); progressDialogue("rx");
try { try {
...@@ -613,7 +586,6 @@ public class GuiController { ...@@ -613,7 +586,6 @@ public class GuiController {
* Löscht die Textfelder tfKlartext und tfCodiert * Löscht die Textfelder tfKlartext und tfCodiert
*/ */
private void sendeFunkspruch() { private void sendeFunkspruch() {
this.tfKlartext.setText(""); this.tfKlartext.setText("");
this.tfCodiert.setText(""); this.tfCodiert.setText("");
...@@ -623,16 +595,16 @@ public class GuiController { ...@@ -623,16 +595,16 @@ public class GuiController {
/** /**
* TODO * TODO
* *
* @param strRxTx * @param strRxTx : String : RX oder TX
*/ */
private void progressDialogue(String strRxTx) { private void progressDialogue(String strRxTx) {
Task copyWorker = createWorker(strRxTx); Task copyWorker = createWorker(strRxTx);
ProgressIndicator pi = new ProgressIndicator();
pi.setProgress(-1);
ProgressDialog dialog = new ProgressDialog(copyWorker); ProgressDialog dialog = new ProgressDialog(copyWorker);
dialog.initStyle(StageStyle.TRANSPARENT); dialog.initStyle(StageStyle.TRANSPARENT);
dialog.setGraphic(null);
dialog.initStyle(StageStyle.TRANSPARENT);
dialog.setTitle("Kommunikation zum Funkraum"); dialog.setTitle("Kommunikation zum Funkraum");
if (strRxTx.equals("rx")) { if (strRxTx.equals("rx")) {
dialog.setContentText("Empfange Nachricht"); dialog.setContentText("Empfange Nachricht");
...@@ -640,7 +612,7 @@ public class GuiController { ...@@ -640,7 +612,7 @@ public class GuiController {
dialog.setContentText("Sende Nachricht"); dialog.setContentText("Sende Nachricht");
} }
dialog.setHeaderText(null); dialog.setHeaderText(null);
dialog.setGraphic(null); dialog.setGraphic(pi);
dialog.initStyle(StageStyle.UTILITY); dialog.initStyle(StageStyle.UTILITY);
new Thread(copyWorker).start(); new Thread(copyWorker).start();
dialog.showAndWait(); dialog.showAndWait();
...@@ -649,13 +621,13 @@ public class GuiController { ...@@ -649,13 +621,13 @@ public class GuiController {
/** /**
* TODO * TODO
* *
* @param strRxTx * @param strRxTx : String : RX oder TX
* @return * @return boolean
*/ */
public Task createWorker(String strRxTx) { public Task createWorker(String strRxTx) {
return new Task() { return new Task() {
@Override @Override
protected Object call() throws Exception { protected Object call() {
if (strRxTx.equals("rx")) { if (strRxTx.equals("rx")) {
empfangeneNachricht = codierer.empfangeNachricht(); empfangeneNachricht = codierer.empfangeNachricht();
} else if (strRxTx.equals("tx")) { } else if (strRxTx.equals("tx")) {
...@@ -761,37 +733,16 @@ public class GuiController { ...@@ -761,37 +733,16 @@ public class GuiController {
* @param walzeNr => gibt die Walzennummer an * @param walzeNr => gibt die Walzennummer an
*/ */
private void setzeWalze(int walzenPosition, int walzeNr) { private void setzeWalze(int walzenPosition, int walzeNr) {
//int walzeNr = 0;
switch (walzeNr) {
case 1:
walzeNr = 0;
break;
case 2:
walzeNr = 1;
break;
case 3:
walzeNr = 2;
break;
case 4:
walzeNr = 3;
break;
case 5:
walzeNr = 4;
break;
default:
break;
}
switch (walzenPosition) { switch (walzenPosition) {
case 1: case 1:
mBtnWalzPos1.setText(walzenNr[walzeNr]); mBtnWalzPos1.setText(walzenNr[walzeNr - 1]);
//codierer.setWalze(walzeNr, walzenPosition) //codierer.setWalze(walzeNr, walzenPosition)
break; break;
case 2: case 2:
mBtnWalzPos2.setText(walzenNr[walzeNr]); mBtnWalzPos2.setText(walzenNr[walzeNr - 1]);
break; break;
case 3: case 3:
mBtnWalzPos3.setText(walzenNr[walzeNr]); mBtnWalzPos3.setText(walzenNr[walzeNr - 1]);
break; break;
default: default:
break; break;
...@@ -866,8 +817,11 @@ public class GuiController { ...@@ -866,8 +817,11 @@ public class GuiController {
// Steckbrett Felder setzen // Steckbrett Felder setzen
setzeSteckverbindungen(); setzeSteckverbindungen();
// Setzt das Steckbrett // Setzt das Steckbrett
generateSteckbrett(); generateSteckbrett();
// Felder zurück setzen
this.textCodiert = ""; this.textCodiert = "";
this.textEingabe = ""; this.textEingabe = "";
this.tfKlartext.setText(""); this.tfKlartext.setText("");
...@@ -875,18 +829,20 @@ public class GuiController { ...@@ -875,18 +829,20 @@ public class GuiController {
} }
/** /**
* TODO * TODO: Doku
* *
* @param kenngruppe * @param kenngruppe : String : Die Kenngruppe die gesetzt werden soll
*/ */
public void setKenngruppe(String kenngruppe) { public void setKenngruppe(String kenngruppe) {
// Initialisieren des Codierers und setzen der Kenngruppe // Initialisieren des Codierers und setzen der Kenngruppe
codierer = new Codierer(kenngruppe); codierer = new Codierer(kenngruppe.toUpperCase());
this.codierer.resetHardware(); this.codierer.resetHardware();
//Setzt die Kenngruppe in der GUI //Setzt die Kenngruppe in der GUI
lblKenngruppe.setText(this.codierer.getKenngruppe()); lblKenngruppe.setText("Kenngruppe: " + this.codierer.getKenngruppe());
// Beim nächsten Tastendruck erstmal das Display löschen damit falschen Nachrichten geschickt werden. // Beim nächsten Tastendruck erstmal das Display löschen damit falschen Nachrichten geschickt werden.
resetDisplay = true; resetDisplay = true;
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment