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;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
......@@ -12,7 +10,9 @@ import javafx.scene.input.MouseEvent;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Circle;
import javafx.stage.StageStyle;
import org.apache.http.HttpException;
import org.controlsfx.dialog.ProgressDialog;
import projekt.enigma.model.Codierer;
import projekt.enigma.model.Fehler;
......@@ -21,71 +21,62 @@ import java.util.ArrayList;
import java.util.Arrays;
public class GuiController {
//region Klassenvariablen
//region Klassenvariablen
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[] 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 static final String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private String textEingabe;
private String textCodiert;
private char chiffrierterBuchstabe;
private ArrayList<MenuItem> mItem;
private boolean resetDisplay;
private Codierer codierer;
private enum BUCHSTABE_LEUCHTET {AN, AUS}
@FXML
private static ToggleButton[] tBtnPort;
//endregion
//endregion
//region GUI-Elemente
//deklariert die benötigten Buttons
@FXML
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,
btnPort0, btnPort1, btnPort2, btnPort3, btnPort4, btnPort5, btnPort6, btnPort7, btnPort8, btnPort9;
btnR, btnS, btnT, btnU, btnV, btnW, btnX, btnY, btnZ, btnSenden, btnEmpfangen, btnDelete, btnReset;
//deklariert die benötigten Kreise
@FXML
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;
//deklariert die benötigten Label
@FXML
private Label lblA, lblB, lblC, lblD, lblE, lblF, lblG, lblH, lblI, lblJ, lblK, lblL, lblM, lblN, lblO, lblP, lblQ,
lblR, lblS, lblT, lblU, lblV, lblW, lblX, lblY, lblZ, lblLadeNachricht, lblTagesschluessel,
lblSpruchschluessel, lblKenngruppe, lblProgressText;
//deklariert den ProgressIndicator
@FXML
private ProgressIndicator piProgress;
private Label lblSpruchschluessel, lblKenngruppe;
//deklariert die MenueButtons
@FXML
private MenuButton mBtnWalzPos1, mBtnWalzPos2, mBtnWalzPos3, mBtnNotchPos1, mBtnNotchPos2, mBtnNotchPos3,
mBtnStartPos1, mBtnStartPos2, mBtnStartPos3;
//deklariert die benötigten Textfelder
@FXML
private TextField tfStecker1, tfStecker2, tfStecker3, tfStecker4, tfStecker5, tfStecker6, tfStecker7, tfStecker8,
tfStecker9, tfStecker10, tfCodiert, tfKlartext;
private TextField tfCodiert, tfKlartext;
//deklariert benötigtes pane
@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
@FXML
private GridPane mainGrid;
//endregion
//endregion
//region Init
/**
* Initialisiert die Elemente GUI und setzt deren Startwerte
*/
@FXML
void initialize() {
// Variablen setzen
textEingabe = "";
textCodiert = "";
......@@ -108,7 +99,7 @@ public class GuiController {
menu(mBtnStartPos2, position);
myToggleButtons(10);
myToggleButtons();
}
......@@ -117,7 +108,6 @@ public class GuiController {
* Hier wird die Funktion zum erstellen und Befüllen der Boxen, die Funktion zehn mal aufgerufen.
*/
private void generateSteckbrett() {
for (int i = 0; i <= 9; i++) {
this.createSteckbrettPort(i);
}
......@@ -131,7 +121,6 @@ public class GuiController {
* @param port : int : Kabel Nummer (0-9)
*/
private void createSteckbrettPort(int port) {
// Holt die verfügbaren Buchstaben für diesen Port ab und erstellt ein char Array daraus
char[] verfuegbareBuchstaben = this.codierer.fetchVerfuegbareBuchstaben(port).toCharArray();
......@@ -165,8 +154,7 @@ public class GuiController {
* @param button : Button für die die Einträge erstellt werden sollen
*/
private void menu(MenuButton button, String[] str) {
mItem = new ArrayList<>();
ArrayList<MenuItem> mItem = new ArrayList<>();
for (int i = 0; i < str.length; i++) {
//Eintrag aus str der Arraylist mi hinzufügen
......@@ -175,15 +163,15 @@ public class GuiController {
button.getItems().add(mItem.get(i));
int finalI = i;
//Listener für die einzelnen Einträge
ArrayList<MenuItem> finalMi = mItem;
mItem.get(i).setOnAction(e -> setMenuBtnText(button, finalMi.get(finalI)));
mItem.get(i).setOnAction(e -> setMenuBtnText(button, mItem.get(finalI)));
}
}
/**
* 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) {
switch (port) {
......@@ -224,47 +212,34 @@ public class GuiController {
}
/**
* TODO
*
* @param countOfBtn
* TODO: Doku
*/
private void myToggleButtons(int countOfBtn) {
private void myToggleButtons() {
final ToggleGroup cabelConnect = new ToggleGroup();
tBtnPort = new ToggleButton[countOfBtn];
for (int i = 0; i < countOfBtn; i++) {
switchPortVisible(i, false);
tBtnPort = new ToggleButton[10];
for (int i = 0; i < 10; i++) {
tBtnPort[i] = new ToggleButton(i + "Port");
tBtnPort[i].setAlignment(Pos.CENTER_RIGHT);
tBtnPort[i].setToggleGroup(cabelConnect);
//if (i == 0) tBtnPort[0].setSelected(true);
/* tBtnPort[i].setOnAction(event -> {
*//* portPane[].setVisible(false);*//*
});*/
mainGrid.setMargin(tBtnPort[i], new Insets(0, 15, 0, 15));
GridPane.setMargin(tBtnPort[i], new Insets(0, 15, 0, 15));
mainGrid.add(tBtnPort[i], i + 1, 8);
cabelConnect.selectedToggleProperty().
addListener(new ChangeListener<Toggle>() {
@Override
public void changed(ObservableValue<? extends Toggle> observable, Toggle oldValue, Toggle newValue) {
//TODO
for (int j = 0; j < 10; j++) {
if (cabelConnect.getSelectedToggle() == tBtnPort[j]) {
switchPortVisible(j, true);
} else if (cabelConnect.getSelectedToggle() != tBtnPort[j]) {
/* if (cabelConnect.getSelectedToggle() == tBtnPort[i]) {*/
switchPortVisible(j, false);
/* }*/
}
addListener((observable, oldValue, newValue) -> {
//TODO
for (int j = 0; j < 10; j++) {
if (cabelConnect.getSelectedToggle() == tBtnPort[j]) {
switchPortVisible(j, true);
} else if (cabelConnect.getSelectedToggle() != tBtnPort[j]) {
switchPortVisible(j, false);
}
}
});
}
}
//endregion
//region EventHandler/Listener
/**
* Wird ausgelöst wenn der gedrückte Button losgelassen wird.
* Setzt die Hintergrundfarbe des Kreises mit dem chiffrierten Buchstaben auf grau,
......@@ -440,14 +415,13 @@ public class GuiController {
if (e.getSource() == btnReset) {
codierer.resetHardware();
this.resetDisplay = true;
this.lblSpruchschluessel.setText("");
this.setzeTagesSchluessel();
}
}
//endregion
//region Methoden
/**
* Setzt die Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf gelb bzw. auf grau.
*
......@@ -587,7 +561,6 @@ public class GuiController {
* sowie den Klartext in das Textfeld tfKlartext. Setzt den Spruchschlüssel
*/
private void empfangeFunkspruch() {
progressDialogue("rx");
try {
......@@ -613,7 +586,6 @@ public class GuiController {
* Löscht die Textfelder tfKlartext und tfCodiert
*/
private void sendeFunkspruch() {
this.tfKlartext.setText("");
this.tfCodiert.setText("");
......@@ -623,16 +595,16 @@ public class GuiController {
/**
* TODO
*
* @param strRxTx
* @param strRxTx : String : RX oder TX
*/
private void progressDialogue(String strRxTx) {
Task copyWorker = createWorker(strRxTx);
ProgressIndicator pi = new ProgressIndicator();
pi.setProgress(-1);
ProgressDialog dialog = new ProgressDialog(copyWorker);
dialog.initStyle(StageStyle.TRANSPARENT);
dialog.setGraphic(null);
dialog.initStyle(StageStyle.TRANSPARENT);
dialog.setTitle("Kommunikation zum Funkraum");
if (strRxTx.equals("rx")) {
dialog.setContentText("Empfange Nachricht");
......@@ -640,7 +612,7 @@ public class GuiController {
dialog.setContentText("Sende Nachricht");
}
dialog.setHeaderText(null);
dialog.setGraphic(null);
dialog.setGraphic(pi);
dialog.initStyle(StageStyle.UTILITY);
new Thread(copyWorker).start();
dialog.showAndWait();
......@@ -649,13 +621,13 @@ public class GuiController {
/**
* TODO
*
* @param strRxTx
* @return
* @param strRxTx : String : RX oder TX
* @return boolean
*/
public Task createWorker(String strRxTx) {
return new Task() {
@Override
protected Object call() throws Exception {
protected Object call() {
if (strRxTx.equals("rx")) {
empfangeneNachricht = codierer.empfangeNachricht();
} else if (strRxTx.equals("tx")) {
......@@ -761,37 +733,16 @@ public class GuiController {
* @param walzeNr => gibt die Walzennummer an
*/
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) {
case 1:
mBtnWalzPos1.setText(walzenNr[walzeNr]);
mBtnWalzPos1.setText(walzenNr[walzeNr - 1]);
//codierer.setWalze(walzeNr, walzenPosition)
break;
case 2:
mBtnWalzPos2.setText(walzenNr[walzeNr]);
mBtnWalzPos2.setText(walzenNr[walzeNr - 1]);
break;
case 3:
mBtnWalzPos3.setText(walzenNr[walzeNr]);
mBtnWalzPos3.setText(walzenNr[walzeNr - 1]);
break;
default:
break;
......@@ -866,8 +817,11 @@ public class GuiController {
// Steckbrett Felder setzen
setzeSteckverbindungen();
// Setzt das Steckbrett
generateSteckbrett();
// Felder zurück setzen
this.textCodiert = "";
this.textEingabe = "";
this.tfKlartext.setText("");
......@@ -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) {
// Initialisieren des Codierers und setzen der Kenngruppe
codierer = new Codierer(kenngruppe);
codierer = new Codierer(kenngruppe.toUpperCase());
this.codierer.resetHardware();
//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.
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