diff --git a/src/main/java/projekt/enigma/GuiController.java b/src/main/java/projekt/enigma/GuiController.java index 97d1b263c68c323e358af2cbe9e57a905134899e..ebb7ed816c2de08953639f201b651a80981d82f2 100644 --- a/src/main/java/projekt/enigma/GuiController.java +++ b/src/main/java/projekt/enigma/GuiController.java @@ -1,5 +1,7 @@ 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; @@ -68,7 +70,7 @@ public class GuiController { tfStecker9, tfStecker10, tfCodiert, tfKlartext; //deklariert benötigtes pane @FXML - private Pane portPane, paneProgress; + private Pane paneProgress, portPane0, portPane1, portPane2, portPane3, portPane4, portPane5, portPane6, portPane7, portPane8, portPane9; //deklariert benötigtes GridPane @FXML private GridPane mainGrid; @@ -89,6 +91,7 @@ public class GuiController { textCodiert = ""; resetDisplay = true; + //Einträge für Walzen menu(mBtnWalzPos1, walzenNr); menu(mBtnWalzPos2, walzenNr); @@ -177,24 +180,84 @@ public class GuiController { } } + /** + * TODO: Doku + * @param port + * @param status + */ + private void switchPortVisible(int port, boolean status) { + switch (port) { + case 0: + portPane0.setVisible(status); + break; + case 1: + portPane1.setVisible(status); + break; + case 2: + portPane2.setVisible(status); + break; + case 3: + portPane3.setVisible(status); + break; + case 4: + portPane4.setVisible(status); + break; + case 5: + portPane5.setVisible(status); + break; + case 6: + portPane6.setVisible(status); + break; + case 7: + portPane7.setVisible(status); + break; + case 8: + portPane8.setVisible(status); + break; + case 9: + portPane9.setVisible(status); + break; + default: + + break; + } + } + /** * TODO * * @param countOfBtn */ private void myToggleButtons(int countOfBtn) { - final ToggleGroup cabelConnect = new ToggleGroup(); - tBtnPort = new ToggleButton[countOfBtn]; for (int i = 0; i < countOfBtn; i++) { + switchPortVisible(i, false); tBtnPort[i] = new ToggleButton(i + "Port"); tBtnPort[i].setAlignment(Pos.CENTER_RIGHT); tBtnPort[i].setToggleGroup(cabelConnect); - if (i == 0) tBtnPort[0].setSelected(true); - + //if (i == 0) tBtnPort[0].setSelected(true); + /* tBtnPort[i].setOnAction(event -> { + *//* portPane[].setVisible(false);*//* + });*/ mainGrid.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); + /* }*/ + } + } + } + }); } } @@ -379,29 +442,6 @@ public class GuiController { this.resetDisplay = true; this.setzeTagesSchluessel(); } - /* if (e.getSource() == btnPort0) { - //TODO - //VBox vbox = new VBox(); - } - if (e.getSource() == btnPort1) { - }//TODO pane0 anzeigen - if (e.getSource() == btnPort2) { - }//TODO pane0 anzeigen - if (e.getSource() == btnPort3) { - }//TODO pane0 anzeigen - if (e.getSource() == btnPort4) { - }//TODO pane0 anzeigen - if (e.getSource() == btnPort5) { - }//TODO pane0 anzeigen - if (e.getSource() == btnPort6) { - }//TODO pane0 anzeigen - if (e.getSource() == btnPort7) { - }//TODO pane0 anzeigen - if (e.getSource() == btnPort8) { - }//TODO pane0 anzeigen - if (e.getSource() == btnPort9) { - }//TODO pane0 anzeigen*/ - } //endregion @@ -547,7 +587,25 @@ public class GuiController { * sowie den Klartext in das Textfeld tfKlartext. Setzt den Spruchschlüssel */ private void empfangeFunkspruch() { - funkraumProgressDialogue("rx"); + + progressDialogue("rx"); + + try { + if (this.empfangeneNachricht[2] != null && this.empfangeneNachricht[1] != null) { + setzeTagesSchluessel(); + tfKlartext.setText(this.empfangeneNachricht[2]); + tfCodiert.setText(this.empfangeneNachricht[1]); + resetDisplay = true; + + // Spruchschluessel in das Feld lblSpruchschluessel schreiben + lblSpruchschluessel.setText(codierer.empfangenerSpruchschluessel(this.empfangeneNachricht[2])); + } + } catch (NullPointerException ignored) { + new Fehler().showErrorDialog( + "warning", + "Keiner schreibt dir...", + "Es liegen keine neuen Nachrichten im Funkraum für Sie vor."); + } } /** @@ -555,10 +613,11 @@ public class GuiController { * Löscht die Textfelder tfKlartext und tfCodiert */ private void sendeFunkspruch() { + this.tfKlartext.setText(""); this.tfCodiert.setText(""); - funkraumProgressDialogue("tx"); + progressDialogue("tx"); } /** @@ -566,18 +625,25 @@ public class GuiController { * * @param strRxTx */ - private void funkraumProgressDialogue(String strRxTx) { + private void progressDialogue(String strRxTx) { + Task copyWorker = createWorker(strRxTx); + 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"); - paneProgress.setVisible(true); + dialog.setContentText("Empfange Nachricht"); } else if (strRxTx.equals("tx")) { - paneProgress.setVisible(true); - //dialog.setContentText("Sende Nachricht"); + dialog.setContentText("Sende Nachricht"); } - + dialog.setHeaderText(null); + dialog.setGraphic(null); + dialog.initStyle(StageStyle.UTILITY); new Thread(copyWorker).start(); + dialog.showAndWait(); } /** @@ -590,33 +656,16 @@ public class GuiController { return new Task() { @Override protected Object call() throws Exception { - try { - if (strRxTx.equals("rx")) { - empfangeneNachricht = codierer.empfangeNachricht(); - try { - if (empfangeneNachricht[2] != null && empfangeneNachricht[1] != null) { - setzeTagesSchluessel(); - tfKlartext.setText(empfangeneNachricht[2]); - tfCodiert.setText(empfangeneNachricht[1]); - resetDisplay = true; - - // Spruchschluessel in das Feld lblSpruchschluessel schreiben - lblSpruchschluessel.setText(codierer.empfangenerSpruchschluessel(empfangeneNachricht[2])); - } - } catch (NullPointerException ignored) { - new Fehler().showErrorDialog( - "warning", - "Keiner schreibt dir...", - "Es liegen keine neuen Nachrichten im Funkraum für Sie vor."); - } - } else if (strRxTx.equals("tx")) { + if (strRxTx.equals("rx")) { + empfangeneNachricht = codierer.empfangeNachricht(); + } else if (strRxTx.equals("tx")) { + try { codierer.sendeNachricht(); + } catch (HttpException | IOException e) { + e.printStackTrace(); } - } catch (HttpException | IOException e) { - e.printStackTrace(); - } finally { - paneProgress.setVisible(false); } + return true; } }; @@ -819,27 +868,6 @@ public class GuiController { setzeSteckverbindungen(); // Setzt das Steckbrett generateSteckbrett(); - -/* btnPort0.setText(codierer.fetchSteckverbindungen()[0][0] + "" + - codierer.fetchSteckverbindungen()[0][1]); - btnPort1.setText(codierer.fetchSteckverbindungen()[1][0] + "" + - codierer.fetchSteckverbindungen()[1][1]); - btnPort2.setText(codierer.fetchSteckverbindungen()[2][0] + "" + - codierer.fetchSteckverbindungen()[2][1]); - btnPort3.setText(codierer.fetchSteckverbindungen()[3][0] + "" + - codierer.fetchSteckverbindungen()[3][1]); - btnPort4.setText(codierer.fetchSteckverbindungen()[4][0] + "" + - codierer.fetchSteckverbindungen()[4][1]); - btnPort5.setText(codierer.fetchSteckverbindungen()[5][0] + "" + - codierer.fetchSteckverbindungen()[5][1]); - btnPort6.setText(codierer.fetchSteckverbindungen()[6][0] + "" + - codierer.fetchSteckverbindungen()[6][1]); - btnPort7.setText(codierer.fetchSteckverbindungen()[7][0] + "" + - codierer.fetchSteckverbindungen()[7][1]); - btnPort8.setText(codierer.fetchSteckverbindungen()[8][0] + "" + - codierer.fetchSteckverbindungen()[8][1]); - btnPort9.setText(codierer.fetchSteckverbindungen()[9][0] + "" + - codierer.fetchSteckverbindungen()[9][1]);*/ this.textCodiert = ""; this.textEingabe = ""; this.tfKlartext.setText(""); @@ -857,7 +885,8 @@ public class GuiController { codierer = new Codierer(kenngruppe); this.codierer.resetHardware(); - + //Setzt die Kenngruppe in der GUI + lblKenngruppe.setText(this.codierer.getKenngruppe()); // Beim nächsten Tastendruck erstmal das Display löschen damit falschen Nachrichten geschickt werden. resetDisplay = true;