diff --git a/src/main/java/projekt/enigma/GuiController.java b/src/main/java/projekt/enigma/GuiController.java index 6978536e906d2950485513c82069e97cb0e1f67c..d7fa06f1c82efb98033abaf7d37fcaaa6260d7f0 100644 --- a/src/main/java/projekt/enigma/GuiController.java +++ b/src/main/java/projekt/enigma/GuiController.java @@ -14,148 +14,144 @@ import java.util.ArrayList; public class GuiController { //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 ArrayList<MenuItem> mItem; - private String textEingabe; - private String textCodiert; - private boolean resetDisplay; - private Codierer codierer; - private char chiffrierterBuchstabe; - private enum BUCHSTABE_LEUCHTET {AN, AUS} + 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 ArrayList<MenuItem> mItem; + private String textEingabe; + private String textCodiert; + private boolean resetDisplay; + private Codierer codierer; + private char chiffrierterBuchstabe; + //deklariert die benötigten Textfelder + @FXML + private TextField tfStecker1, tfStecker2, tfStecker3, tfStecker4, tfStecker5, tfStecker6, tfStecker7, tfStecker8, + tfStecker9, tfStecker10, tfCodiert, tfKlartext; //endregion - //region GUI-Elemente - - //deklariert die benötigten Textfelder - @FXML - private TextField tfStecker1, tfStecker2, tfStecker3, tfStecker4, tfStecker5, tfStecker6, tfStecker7, tfStecker8, - tfStecker9, tfStecker10, tfCodiert, tfKlartext; + //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; - + @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; //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; - + @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; - - //deklariert die ProgressBar - @FXML - private ProgressBar pbLadeNachricht; - - //deklariert die MenueButtons - @FXML - private MenuButton mBtnWalzPos1, mBtnWalzPos2, mBtnWalzPos3, mBtnNotchPos1, mBtnNotchPos2, mBtnNotchPos3, - mBtnStartPos1, mBtnStartPos2, mBtnStartPos3; -//endregion - - //region Init + @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; + //deklariert die ProgressBar + @FXML + private ProgressBar pbLadeNachricht; + //deklariert die MenueButtons + @FXML + private MenuButton mBtnWalzPos1, mBtnWalzPos2, mBtnWalzPos3, mBtnNotchPos1, mBtnNotchPos2, mBtnNotchPos3, + mBtnStartPos1, mBtnStartPos2, mBtnStartPos3; /** * Initialisiert die Elemente GUI und setzt deren Startwerte */ - @FXML - void initialize() { - - // Variablen setzen - textEingabe = ""; - textCodiert = ""; - resetDisplay = true; - - //Einträge für Walzen - menu(mBtnWalzPos1, walzenNr); - menu(mBtnWalzPos2, walzenNr); - menu(mBtnWalzPos3, walzenNr); - - //Einträge für die Ringe - menu(mBtnNotchPos1, ringNr); - menu(mBtnNotchPos2, ringNr); - menu(mBtnNotchPos3, ringNr); - - //Einträge für die Startpositionen - menu(mBtnStartPos1, position); - menu(mBtnStartPos3, position); - menu(mBtnStartPos2, position); - - // Initialisieren des Codierers und setzen der Kenngruppe - this.codierer = new Codierer(); - this.codierer.setKenngruppe("enigma"); - - // Beim nächsten Tastendruck erstmal das Display löschen damit falschen Nachrichten geschickt werden. - this.resetDisplay = true; - - // Einstellungen aus dem Logbuch auslesen und setzen - this.setzeTagesSchluessel(); - this.setzeSteckverbindungen(); - } - - /** - * init Methode zur Erstellung der Einträge und Action Listener für die einzelnen Menüs - * - * @param button : Button für die die Einträge erstellt werden sollen - */ - private void menu(MenuButton button, String[] str) { - mItem = new ArrayList<>(); - for (int i = 0; i < str.length; i++) { - //Eintrag aus str der Arraylist mi hinzufügen - mItem.add(new MenuItem(str[i])); - //MenuItem mi dem Button button hinzufügen - 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))); - } - } + @FXML + void initialize() { + + // Variablen setzen + textEingabe = ""; + textCodiert = ""; + resetDisplay = true; + + //Einträge für Walzen + menu(mBtnWalzPos1, walzenNr); + menu(mBtnWalzPos2, walzenNr); + menu(mBtnWalzPos3, walzenNr); + + //Einträge für die Ringe + menu(mBtnNotchPos1, ringNr); + menu(mBtnNotchPos2, ringNr); + menu(mBtnNotchPos3, ringNr); + + //Einträge für die Startpositionen + menu(mBtnStartPos1, position); + menu(mBtnStartPos3, position); + menu(mBtnStartPos2, position); + + // Initialisieren des Codierers und setzen der Kenngruppe + codierer = new Codierer(); + if(codierer.getKenngruppe().equals(""))codierer.setKenngruppe("enigma"); + else codierer.getKenngruppe(); + + // Beim nächsten Tastendruck erstmal das Display löschen damit falschen Nachrichten geschickt werden. + resetDisplay = true; + + // Einstellungen aus dem Logbuch auslesen und setzen + setzeTagesSchluessel(); + setzeSteckverbindungen(); + } //endregion - //region EventHandler/Listener + //region Init + + /** + * init Methode zur Erstellung der Einträge und Action Listener für die einzelnen Menüs + * + * @param button : Button für die die Einträge erstellt werden sollen + */ + private void menu(MenuButton button, String[] str) { + mItem = new ArrayList<>(); + for (int i = 0; i < str.length; i++) { + //Eintrag aus str der Arraylist mi hinzufügen + mItem.add(new MenuItem(str[i])); + //MenuItem mi dem Button button hinzufügen + 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))); + } + } /** * Wird ausgelöst wenn der gedrückte Button losgelassen wird. * Setzt die Hintergrundfarbe des Kreises mit dem chiffrierten Buchstaben auf grau, * durch Aufruf der Methode leuchten. + * * @param e => übergibt den zuletzt losgelassenen Button */ @FXML void tasteRauf(MouseEvent e) { - if (e.getSource() == btnA)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnB)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnC)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnD)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnE)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnF)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnG)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnH)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnI)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnJ)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnK)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnL)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnM)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnN)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnO)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnP)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnQ)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnR)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnS)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnT)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnU)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnV)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnW)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnX)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnY)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); - if (e.getSource() == btnZ)leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnA) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnB) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnC) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnD) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnE) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnF) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnG) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnH) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnI) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnJ) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnK) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnL) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnM) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnN) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnO) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnP) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnQ) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnR) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnS) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnT) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnU) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnV) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnW) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnX) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnY) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); + if (e.getSource() == btnZ) leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AUS); } +//endregion + + //region EventHandler/Listener /** * Wird ausgelöst sobald eine Taste gedrückt wird (beim drücken der Taste) @@ -163,7 +159,8 @@ public class GuiController { * Übergabe des entspechenden Buchstaben als Parameter der Methode setText welche den chiffrierten Buchstaben * in der Klassen-Variablen chiffrierterBuchstabe ablegt. * Setzt die Hintergrundfarbe des Kreises mit dem chiffrierten Buchstaben auf gelb - * @param e => übergibt den momentan gedrückten Buttons + * + * @param e => übergibt den momentan gedrückten Buttons */ @FXML void tasteRunter(MouseEvent e) { @@ -171,147 +168,155 @@ public class GuiController { setText(btnA); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnB){ + if (e.getSource() == btnB) { setText(btnB); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnC){ + if (e.getSource() == btnC) { setText(btnC); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnD){ + if (e.getSource() == btnD) { setText(btnD); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnE){ + if (e.getSource() == btnE) { setText(btnE); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnF){ + if (e.getSource() == btnF) { setText(btnF); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnG){ + if (e.getSource() == btnG) { setText(btnG); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnH){ + if (e.getSource() == btnH) { setText(btnH); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnI){ + if (e.getSource() == btnI) { setText(btnI); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnJ){ + if (e.getSource() == btnJ) { setText(btnJ); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnK){ + if (e.getSource() == btnK) { setText(btnK); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnL){ + if (e.getSource() == btnL) { setText(btnL); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnM){ + if (e.getSource() == btnM) { setText(btnM); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnN){ + if (e.getSource() == btnN) { setText(btnN); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnO){ + if (e.getSource() == btnO) { setText(btnO); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnP){ + if (e.getSource() == btnP) { setText(btnP); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnQ){ + if (e.getSource() == btnQ) { setText(btnQ); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnR){ + if (e.getSource() == btnR) { setText(btnR); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnS){ + if (e.getSource() == btnS) { setText(btnS); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnT){ + if (e.getSource() == btnT) { setText(btnT); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnU){ + if (e.getSource() == btnU) { setText(btnU); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnV){ + if (e.getSource() == btnV) { setText(btnV); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnW){ + if (e.getSource() == btnW) { setText(btnW); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnX){ + if (e.getSource() == btnX) { setText(btnX); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnY){ + if (e.getSource() == btnY) { setText(btnY); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnZ){ + if (e.getSource() == btnZ) { setText(btnZ); leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN); } - if (e.getSource() == btnSenden)sendeFunkspruch(); +/* if (e.getSource() == btnSenden)sendeFunkspruch(); if (e.getSource() == btnEmpfangen) empfangeFunkspruch(); - if (e.getSource() == btnDelete) loeschen(); + if (e.getSource() == btnDelete) loeschen();*/ } - /** - * Auswertung welcher Button (senden, empfangen oder löschen) gedrückt wurde. - * Funktionsaufruf entsprechend des gedrückten Button - * @param e => ActionEvent des auslösenden Button - */ - @FXML - private void gedrueckteTaste(ActionEvent e) { - if (e.getSource() == btnSenden) sendeFunkspruch(); - if (e.getSource() == btnEmpfangen) empfangeFunkspruch(); - if (e.getSource() == btnDelete) loeschen(); - if (e.getSource() == btnReset) setzeTagesSchluessel(); - } -//endregion - //region Methoden + /** + * Auswertung welcher Button (senden, empfangen oder löschen) gedrückt wurde. + * Funktionsaufruf entsprechend des gedrückten Button + * + * @param e => ActionEvent des auslösenden Button + */ + @FXML + private void gedrueckteTaste(ActionEvent e) { + if (e.getSource() == btnSenden && tfCodiert.getText() != "") sendeFunkspruch(); + if (e.getSource() == btnEmpfangen) empfangeFunkspruch(); + if (e.getSource() == btnDelete) loeschen(); + if (e.getSource() == btnReset) { + codierer.resetHardware(); + this.resetDisplay = true; + this.setzeTagesSchluessel(); + } + } /** * Setzt die Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf gelb bzw. auf grau. - * @param leuchte => gibt an welcher Kreis (chiffrierter Buchstabe) den Hintergrund ändern soll + * + * @param leuchte => gibt an welcher Kreis (chiffrierter Buchstabe) den Hintergrund ändern soll * @param shiningLetter => "AN" -> setzt Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf gelb - * "AUS" -> setzt Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf grau + * "AUS" -> setzt Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf grau */ private void leuchten(Circle leuchte, BUCHSTABE_LEUCHTET shiningLetter) { - if (shiningLetter==BUCHSTABE_LEUCHTET.AN)leuchte.setStyle("-fx-fill: #FFA500"); - else if (shiningLetter==BUCHSTABE_LEUCHTET.AUS){ + if (shiningLetter == BUCHSTABE_LEUCHTET.AN) leuchte.setStyle("-fx-fill: #FFA500"); + else if (shiningLetter == BUCHSTABE_LEUCHTET.AUS) { leuchte.setStyle("-fx-background-color: grey"); leuchte.setStyle("-fx-border-color: #000000"); } } +//endregion + + //region Methoden /** * Gibt den Buchstabenkreis entsprechend des chiffrierten Buchstabens zurück - * @param chiffLetter => chiffrierter Buchstabe + * + * @param chiffLetter => chiffrierter Buchstabe * @return => Kreis des chiffrierten Buchstabens (der leuchten soll) */ - private Circle chiffCircle(char chiffLetter){ - switch (chiffLetter){ + private Circle chiffCircle(char chiffLetter) { + switch (chiffLetter) { case 'A': return circA; case 'B': @@ -368,267 +373,324 @@ public class GuiController { return null; } + /** + * Methode zum setzen des menuButton Textes auf das ausgewählte MenuItem + * + * @param mBtn : MenuButton der Walze + * @param mItm : MenuItem + */ + private void setMenuBtnText(MenuButton mBtn, MenuItem mItm) { + // mb.setText(mi.getText()); + + if (mBtn.getId().equals(mBtnStartPos1.getId())) setzePosition(1, mItm.getText().charAt(0)); + if (mBtn.getId().equals(mBtnStartPos2.getId())) setzePosition(2, mItm.getText().charAt(0)); + if (mBtn.getId().equals(mBtnStartPos3.getId())) setzePosition(3, mItm.getText().charAt(0)); + if (mBtn.getId().equals(mBtnWalzPos1.getId())) setzeWalze(1, mItm.getText()); + if (mBtn.getId().equals(mBtnWalzPos2.getId())) setzeWalze(2, mItm.getText()); + if (mBtn.getId().equals(mBtnWalzPos3.getId())) setzeWalze(3, mItm.getText()); + if (mBtn.getId().equals(mBtnNotchPos1.getId())) + setzeRing(1, Integer.parseInt(mItm.getText()) - 1); + if (mBtn.getId().equals(mBtnNotchPos2.getId())) + setzeRing(2, Integer.parseInt(mItm.getText()) - 1); + if (mBtn.getId().equals(mBtnNotchPos3.getId())) + setzeRing(3, Integer.parseInt(mItm.getText()) - 1); +/* tfCodiert.setText(""); + tfKlartext.setText("");*/ + } + + /** + * Hier werden die TextFelder, welche die Steckverbindungen darstellen, + * mit dem Werten die die Klasse Codierer zur Verfügung stellt gefüllt. + */ + private void setzeSteckverbindungen() { + tfStecker1.setText(codierer.fetchSteckverbindungen()[0][0] + "" + codierer.fetchSteckverbindungen()[0][1]); + tfStecker2.setText(codierer.fetchSteckverbindungen()[1][0] + "" + codierer.fetchSteckverbindungen()[1][1]); + tfStecker3.setText(codierer.fetchSteckverbindungen()[2][0] + "" + codierer.fetchSteckverbindungen()[2][1]); + tfStecker4.setText(codierer.fetchSteckverbindungen()[3][0] + "" + codierer.fetchSteckverbindungen()[3][1]); + tfStecker5.setText(codierer.fetchSteckverbindungen()[4][0] + "" + codierer.fetchSteckverbindungen()[4][1]); + tfStecker6.setText(codierer.fetchSteckverbindungen()[5][0] + "" + codierer.fetchSteckverbindungen()[5][1]); + tfStecker7.setText(codierer.fetchSteckverbindungen()[6][0] + "" + codierer.fetchSteckverbindungen()[6][1]); + tfStecker8.setText(codierer.fetchSteckverbindungen()[7][0] + "" + codierer.fetchSteckverbindungen()[7][1]); + tfStecker9.setText(codierer.fetchSteckverbindungen()[8][0] + "" + codierer.fetchSteckverbindungen()[8][1]); + tfStecker10.setText(codierer.fetchSteckverbindungen()[9][0] + "" + codierer.fetchSteckverbindungen()[9][1]); + } - /** - * Methode zum setzen des menuButton Textes auf das ausgewählte MenuItem - * - * @param mBtn : MenuButton der Walze - * @param mItm : MenuItem - */ - private void setMenuBtnText(MenuButton mBtn, MenuItem mItm) { - // mb.setText(mi.getText()); - - if (mBtn.getId().equals(mBtnStartPos1.getId())) setzePosition(1, mItm.getText().charAt(0)); - if (mBtn.getId().equals(mBtnStartPos2.getId())) setzePosition(2, mItm.getText().charAt(0)); - if (mBtn.getId().equals(mBtnStartPos3.getId())) setzePosition(3, mItm.getText().charAt(0)); - if (mBtn.getId().equals(mBtnWalzPos1.getId())) setzeWalze(1, mItm.getText()); - if (mBtn.getId().equals(mBtnWalzPos2.getId())) setzeWalze(2, mItm.getText()); - if (mBtn.getId().equals(mBtnWalzPos3.getId())) setzeWalze(3, mItm.getText()); - if (mBtn.getId().equals(mBtnNotchPos1.getId())) - setzeRing(1, Integer.parseInt(mItm.getText()) - 1); - if (mBtn.getId().equals(mBtnNotchPos2.getId())) - setzeRing(2, Integer.parseInt(mItm.getText()) - 1); - if (mBtn.getId().equals(mBtnNotchPos3.getId())) - setzeRing(3, Integer.parseInt(mItm.getText()) - 1); - } - - /** - * Hier werden die TextFelder, welche die Steckverbindungen darstellen, - * mit dem Werten die die Klasse Codierer zur Verfügung stellt gefüllt. - */ - private void setzeSteckverbindungen() { - tfStecker1.setText(codierer.fetchSteckverbindungen()[0][0] + "" + codierer.fetchSteckverbindungen()[0][1]); - tfStecker2.setText(codierer.fetchSteckverbindungen()[1][0] + "" + codierer.fetchSteckverbindungen()[1][1]); - tfStecker3.setText(codierer.fetchSteckverbindungen()[2][0] + "" + codierer.fetchSteckverbindungen()[2][1]); - tfStecker4.setText(codierer.fetchSteckverbindungen()[3][0] + "" + codierer.fetchSteckverbindungen()[3][1]); - tfStecker5.setText(codierer.fetchSteckverbindungen()[4][0] + "" + codierer.fetchSteckverbindungen()[4][1]); - tfStecker6.setText(codierer.fetchSteckverbindungen()[5][0] + "" + codierer.fetchSteckverbindungen()[5][1]); - tfStecker7.setText(codierer.fetchSteckverbindungen()[6][0] + "" + codierer.fetchSteckverbindungen()[6][1]); - tfStecker8.setText(codierer.fetchSteckverbindungen()[7][0] + "" + codierer.fetchSteckverbindungen()[7][1]); - tfStecker9.setText(codierer.fetchSteckverbindungen()[8][0] + "" + codierer.fetchSteckverbindungen()[8][1]); - tfStecker10.setText(codierer.fetchSteckverbindungen()[9][0] + "" + codierer.fetchSteckverbindungen()[9][1]); - } - - /** - * Die Löschen Funktion löscht das letzte Zeichen im Klartext sowie im Codiert Feld, - * der Codierer wird aufgerufen um ebenfalls das letzte Zeichen zu löschen - */ - private void loeschen() { - if (textEingabe.length() == 0) { - tfKlartext.setText(""); - tfCodiert.setText(""); - } else { - textEingabe = textEingabe.substring(0, textEingabe.length() - 1); - textCodiert = textCodiert.substring(0, textCodiert.length() - 1); - tfKlartext.setText(textEingabe); - tfCodiert.setText(textCodiert); - codierer.letztesZeichenLoeschen(); - mBtnStartPos1.setText(String.valueOf(this.codierer.fetchWalzen()[0])); - mBtnStartPos2.setText(String.valueOf(this.codierer.fetchWalzen()[1])); - mBtnStartPos3.setText(String.valueOf(this.codierer.fetchWalzen()[2])); - } - } - - /** - * Holt Nachricht von Klasse Codierer und setzt den chiffrierten Text in das Textfeld tfCodiert, - * sowie den Klartext in das Textfeld tfKlartext. Setzt den - */ - private void empfangeFunkspruch() { - String[] empfangeneNachricht = this.codierer.empfangeNachricht(); - if (empfangeneNachricht[0] != null) { - this.tfKlartext.setText(empfangeneNachricht[2]); - this.tfCodiert.setText(empfangeneNachricht[1]); - this.resetDisplay = true; - - // Spruchschluessel in das Feld lblSpruchschluessel schreiben - lblSpruchschluessel.setText(this.codierer.empfangenerSpruchschluessel(empfangeneNachricht[2])); - - this.setzeTagesSchluessel(); - } - } - - /** - * Senden der Nachricht mit Hilfe der Klasse Codierer - * Löscht die Textfelder tfKlartext und tfCodiert - */ - private void sendeFunkspruch() { - this.tfKlartext.setText(""); - this.tfCodiert.setText(""); + /** + * Die Löschen Funktion löscht das letzte Zeichen im Klartext sowie im Codiert Feld, + * der Codierer wird aufgerufen um ebenfalls das letzte Zeichen zu löschen + */ + private void loeschen() { + if (textEingabe.length() == 0) { + tfKlartext.setText(""); + tfCodiert.setText(""); + } else { + textEingabe = textEingabe.substring(0, textEingabe.length() - 1); + textCodiert = textCodiert.substring(0, textCodiert.length() - 1); + tfKlartext.setText(textEingabe); + tfCodiert.setText(textCodiert); + codierer.letztesZeichenLoeschen(); + mBtnStartPos1.setText(String.valueOf(this.codierer.fetchWalzen()[0])); + mBtnStartPos2.setText(String.valueOf(this.codierer.fetchWalzen()[1])); + mBtnStartPos3.setText(String.valueOf(this.codierer.fetchWalzen()[2])); + } + } - try { - this.codierer.sendeNachricht(); - } catch (HttpException | IOException e) { - e.printStackTrace(); - } + /** + * Holt Nachricht von Klasse Codierer und setzt den chiffrierten Text in das Textfeld tfCodiert, + * sowie den Klartext in das Textfeld tfKlartext. Setzt den Spruchschlüssel + */ + private void empfangeFunkspruch() { + String[] empfangeneNachricht = codierer.empfangeNachricht(); + System.out.println("text: " + empfangeneNachricht[0]); + System.out.println("Klartext: " + empfangeneNachricht[2]); + System.out.println("codiert: " + empfangeneNachricht[1]); + if (empfangeneNachricht[0]!=null) { + setzeTagesSchluessel(); + System.out.println("empfange Nachricht"); + tfKlartext.setText(empfangeneNachricht[2]); + tfCodiert.setText(empfangeneNachricht[1]); + resetDisplay = true; + + // Spruchschluessel in das Feld lblSpruchschluessel schreiben + lblSpruchschluessel.setText(codierer.empfangenerSpruchschluessel(empfangeneNachricht[2])); + + + } + } - } + /** + * Senden der Nachricht mit Hilfe der Klasse Codierer + * Löscht die Textfelder tfKlartext und tfCodiert + */ + private void sendeFunkspruch() { + this.tfKlartext.setText(""); + this.tfCodiert.setText(""); + + try { + this.codierer.sendeNachricht(); + } catch (HttpException | IOException e) { + e.printStackTrace(); + } + + } - /** - * Schreibt Buchstaben des gedrückten Button in Textfeld tfKlartext. + /** + * Schreibt Buchstaben des gedrückten Button in Textfeld tfKlartext. * Übergabe des Buchstaben vom gedrückten Button an die Klasse Codierer * Ablegen des chiffrierten Buchstaben in der char Variable chiffrierterBuchstabe * Hinzufügen des chiffrierten Buchstaben in Textfeld tfCodiert * Aktualisierung der Walzenstellung - * - * @param pressedButton : gedrückter Knopf - */ - private void setText(Button pressedButton) { - if (textEingabe.length() < 250) { - if (this.resetDisplay) { - this.tfCodiert.setText(""); - this.tfKlartext.setText(""); - this.resetDisplay = false; - this.codierer.resetHardware(); - textCodiert = ""; - textEingabe = ""; - // Spruchschlüssel generieren und codieren - this.codierer.generateSpruchschluessel(); - // Spruchschluessel in das Feld lblSpruchschluessel schreiben - lblSpruchschluessel.setText(this.codierer.getSpruchschluessel()); - } - textEingabe += pressedButton.getText(); - chiffrierterBuchstabe = codierer.codiere(pressedButton.getText().charAt(0), true); - textCodiert += chiffrierterBuchstabe; - - tfKlartext.setText(textEingabe); - tfCodiert.setText(textCodiert); - - // Position der Walzen aktuallisieren - mBtnStartPos1.setText(String.valueOf(this.codierer.fetchWalzen()[0])); - mBtnStartPos2.setText(String.valueOf(this.codierer.fetchWalzen()[1])); - mBtnStartPos3.setText(String.valueOf(this.codierer.fetchWalzen()[2])); - } - } - - /** - * Setzt die Anzeige des entsprechende Gui-Element auf die entsprechende Walze - * ->d.h. welche Walze sitzt auf welcher Position - * - * @param walzeRoemischNr => gibt die Walzennummer an - * @param walzenPosition => gibt die Position der Walze - */ - private void setzeWalze(int walzenPosition, String walzeRoemischNr) { - int walzeNr = 0; - switch (walzeRoemischNr) { - case "I": - walzeNr = 0; - break; - case "II": - walzeNr = 1; - break; - case "III": - walzeNr = 2; - break; - case "IV": - walzeNr = 4; - break; - case "V": - walzeNr = 4; - break; - default: - break; - } - - switch (walzenPosition) { - case 1: - mBtnWalzPos1.setText(walzenNr[walzeNr]); - //codierer.setWalze(walzeNr, walzenPosition) - break; - case 2: - mBtnWalzPos2.setText(walzenNr[walzeNr]); - break; - case 3: - mBtnWalzPos3.setText(walzenNr[walzeNr]); - break; - default: - break; - } - } - - /** - * Setzt den Notch (position)=> die Mitnahmeposition der Walze (walze) fest - * Mitnahmeposition meint => die nächste Walze wird bei erreichen dieser Position (notch) - * um eine Stelle versetzt - * - * @param ringStellung => gibt die walze an - * @param walzenPosition => gibt den notch der Walze (walze) an - */ - private void setzeRing(int walzenPosition, int ringStellung) { - switch (walzenPosition) { - case 1: - mBtnNotchPos1.setText(ringNr[ringStellung]); - break; - case 2: - mBtnNotchPos2.setText(ringNr[ringStellung]); - break; - case 3: - mBtnNotchPos3.setText(ringNr[ringStellung]); - break; - default: - break; - } - } - - /** - * Setzt die Startposition/ aktuelle Position der Walze - * - * @param walze => gibt die walze an - * @param buchstabe gibt den Startwert bzw die aktuelle Position der Walze (walze) an - */ - private void setzePosition(int walze, char buchstabe) { - switch (walze) { - case 1: - mBtnStartPos1.setText(String.valueOf(buchstabe)); - break; - case 2: - mBtnStartPos2.setText(buchstabe + ""); - break; - case 3: - mBtnStartPos3.setText(buchstabe + ""); - break; - default: - break; - } - } - - /** - * Setzt den aktuellen TagesSchluessel und zeigt diesen in der GUI an - */ - private void setzeTagesSchluessel() { - - // Umsprungpunkte anzeigen - mBtnNotchPos1.setText(String.valueOf(codierer.fetchRingstellung()[0])); - mBtnNotchPos2.setText(String.valueOf(codierer.fetchRingstellung()[1])); - mBtnNotchPos3.setText(String.valueOf(codierer.fetchRingstellung()[2])); - // Walzennummern anzeigen - mBtnWalzPos1.setText(String.valueOf(codierer.fetchWalzenNr()[0])); - mBtnWalzPos2.setText(String.valueOf(codierer.fetchWalzenNr()[1])); - mBtnWalzPos3.setText(String.valueOf(codierer.fetchWalzenNr()[2])); - // Position der Walzen anzeigen - mBtnStartPos1.setText(String.valueOf(codierer.fetchWalzen()[0])); - mBtnStartPos2.setText(String.valueOf(codierer.fetchWalzen()[1])); - mBtnStartPos3.setText(String.valueOf(codierer.fetchWalzen()[2])); - // Steckbrett Felder setzen - tfStecker1.setText(codierer.fetchSteckverbindungen()[0][0] + "" + - codierer.fetchSteckverbindungen()[0][1]); - tfStecker2.setText(codierer.fetchSteckverbindungen()[1][0] + "" + - codierer.fetchSteckverbindungen()[1][1]); - tfStecker3.setText(codierer.fetchSteckverbindungen()[2][0] + "" + - codierer.fetchSteckverbindungen()[2][1]); - tfStecker4.setText(codierer.fetchSteckverbindungen()[3][0] + "" + - codierer.fetchSteckverbindungen()[3][1]); - tfStecker5.setText(codierer.fetchSteckverbindungen()[4][0] + "" + - codierer.fetchSteckverbindungen()[4][1]); - tfStecker6.setText(codierer.fetchSteckverbindungen()[5][0] + "" + - codierer.fetchSteckverbindungen()[5][1]); - tfStecker7.setText(codierer.fetchSteckverbindungen()[6][0] + "" + - codierer.fetchSteckverbindungen()[6][1]); - tfStecker8.setText(codierer.fetchSteckverbindungen()[7][0] + "" + - codierer.fetchSteckverbindungen()[7][1]); - tfStecker9.setText(codierer.fetchSteckverbindungen()[8][0] + "" + - codierer.fetchSteckverbindungen()[8][1]); - tfStecker10.setText(codierer.fetchSteckverbindungen()[9][0] + "" + - codierer.fetchSteckverbindungen()[9][1]); - } - //endregion + * + * @param pressedButton : gedrückter Knopf + */ + private void setText(Button pressedButton) { + if (textEingabe.length() < 250) { + if (this.resetDisplay) { + this.tfCodiert.setText(""); + this.tfKlartext.setText(""); + this.resetDisplay = false; + this.codierer.resetHardware(); + textCodiert = ""; + textEingabe = ""; + // Spruchschlüssel generieren und codieren + this.codierer.generateSpruchschluessel(); + // Spruchschluessel in das Feld lblSpruchschluessel schreiben + lblSpruchschluessel.setText(this.codierer.getSpruchschluessel()); + } + textEingabe += pressedButton.getText(); + chiffrierterBuchstabe = codierer.codiere(pressedButton.getText().charAt(0), true); + textCodiert += chiffrierterBuchstabe; + + tfKlartext.setText(textEingabe); + tfCodiert.setText(textCodiert); + + // Position der Walzen aktuallisieren + mBtnStartPos1.setText(String.valueOf(this.codierer.fetchWalzen()[0])); + mBtnStartPos2.setText(String.valueOf(this.codierer.fetchWalzen()[1])); + mBtnStartPos3.setText(String.valueOf(this.codierer.fetchWalzen()[2])); + } + } + + /** + * Setzt die Anzeige des entsprechende Gui-Element auf die entsprechende Walze + * ->d.h. welche Walze sitzt auf welcher Position + * + * @param walzeRoemischNr => gibt die Walzennummer an + * @param walzenPosition => gibt die Position der Walze + */ + private void setzeWalze(int walzenPosition, String walzeRoemischNr) { + int walzeNr = 0; + switch (walzeRoemischNr) { + case "I": + walzeNr = 0; + break; + case "II": + walzeNr = 1; + break; + case "III": + walzeNr = 2; + break; + case "IV": + walzeNr = 4; + break; + case "V": + walzeNr = 4; + break; + default: + break; + } + + switch (walzenPosition) { + case 1: + mBtnWalzPos1.setText(walzenNr[walzeNr]); + //codierer.setWalze(walzeNr, walzenPosition) + break; + case 2: + mBtnWalzPos2.setText(walzenNr[walzeNr]); + break; + case 3: + mBtnWalzPos3.setText(walzenNr[walzeNr]); + break; + default: + break; + } + } + + /** + * Setzt die Anzeige des entsprechende Gui-Element auf die entsprechende Walze + * -> d.h. welche Walze sitzt auf welcher Position + * + * @param walzenPosition => gibt die Position der Walze + * @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]); + //codierer.setWalze(walzeNr, walzenPosition) + break; + case 2: + mBtnWalzPos2.setText(walzenNr[walzeNr]); + break; + case 3: + mBtnWalzPos3.setText(walzenNr[walzeNr]); + break; + default: + break; + } + } + + /** + * Setzt den Notch (position)=> die Mitnahmeposition der Walze (walze) fest + * Mitnahmeposition meint => die nächste Walze wird bei erreichen dieser Position (notch) + * um eine Stelle versetzt + * + * @param ringStellung => gibt die walze an + * @param walzenPosition => gibt den notch der Walze (walze) an + */ + private void setzeRing(int walzenPosition, int ringStellung) { + switch (walzenPosition) { + case 1: + mBtnNotchPos1.setText(ringNr[ringStellung]); + break; + case 2: + mBtnNotchPos2.setText(ringNr[ringStellung]); + break; + case 3: + mBtnNotchPos3.setText(ringNr[ringStellung]); + break; + default: + break; + } + } + + /** + * Setzt die Startposition/ aktuelle Position der Walze + * + * @param walze => gibt die walze an + * @param buchstabe gibt den Startwert bzw die aktuelle Position der Walze (walze) an + */ + private void setzePosition(int walze, char buchstabe) { + switch (walze) { + case 1: + mBtnStartPos1.setText(String.valueOf(buchstabe)); + break; + case 2: + mBtnStartPos2.setText(buchstabe + ""); + break; + case 3: + mBtnStartPos3.setText(buchstabe + ""); + break; + default: + break; + } + } + + /** + * Setzt den aktuellen TagesSchluessel und zeigt diesen in der GUI an + */ + private void setzeTagesSchluessel() { + + // Umsprungpunkte anzeigen + mBtnNotchPos1.setText(String.valueOf(codierer.fetchRingstellung()[0])); + mBtnNotchPos2.setText(String.valueOf(codierer.fetchRingstellung()[1])); + mBtnNotchPos3.setText(String.valueOf(codierer.fetchRingstellung()[2])); + // Walzennummern anzeigen + setzeWalze(1, codierer.fetchWalzenNr()[0]); + setzeWalze(2, codierer.fetchWalzenNr()[1]); + setzeWalze(3, codierer.fetchWalzenNr()[2]); + // Position der Walzen anzeigen + mBtnStartPos1.setText(String.valueOf(codierer.fetchWalzen()[0])); + mBtnStartPos2.setText(String.valueOf(codierer.fetchWalzen()[1])); + mBtnStartPos3.setText(String.valueOf(codierer.fetchWalzen()[2])); + // Steckbrett Felder setzen + tfStecker1.setText(codierer.fetchSteckverbindungen()[0][0] + "" + + codierer.fetchSteckverbindungen()[0][1]); + tfStecker2.setText(codierer.fetchSteckverbindungen()[1][0] + "" + + codierer.fetchSteckverbindungen()[1][1]); + tfStecker3.setText(codierer.fetchSteckverbindungen()[2][0] + "" + + codierer.fetchSteckverbindungen()[2][1]); + tfStecker4.setText(codierer.fetchSteckverbindungen()[3][0] + "" + + codierer.fetchSteckverbindungen()[3][1]); + tfStecker5.setText(codierer.fetchSteckverbindungen()[4][0] + "" + + codierer.fetchSteckverbindungen()[4][1]); + tfStecker6.setText(codierer.fetchSteckverbindungen()[5][0] + "" + + codierer.fetchSteckverbindungen()[5][1]); + tfStecker7.setText(codierer.fetchSteckverbindungen()[6][0] + "" + + codierer.fetchSteckverbindungen()[6][1]); + tfStecker8.setText(codierer.fetchSteckverbindungen()[7][0] + "" + + codierer.fetchSteckverbindungen()[7][1]); + tfStecker9.setText(codierer.fetchSteckverbindungen()[8][0] + "" + + codierer.fetchSteckverbindungen()[8][1]); + tfStecker10.setText(codierer.fetchSteckverbindungen()[9][0] + "" + + codierer.fetchSteckverbindungen()[9][1]); + this.textCodiert = ""; + this.textEingabe = ""; + this.tfKlartext.setText(""); + this.tfCodiert.setText(""); + } + + private enum BUCHSTABE_LEUCHTET {AN, AUS} + //endregion } diff --git a/src/main/java/projekt/enigma/Main.java b/src/main/java/projekt/enigma/Main.java index f016016d5dd3ebc14cae30918487a14eec35ac8e..31b558dfa26a54f59783aff516c906719313387d 100644 --- a/src/main/java/projekt/enigma/Main.java +++ b/src/main/java/projekt/enigma/Main.java @@ -1,11 +1,18 @@ package projekt.enigma; +import projekt.enigma.threads.ThreadApp; +import projekt.enigma.threads.ThreadFunkraum; + import java.sql.SQLException; public class Main { public static void main(String[] args) throws SQLException { - App.main(args); + Thread app = new Thread(new ThreadApp()); +// Thread funk = new Thread(new ThreadFunkraum()); + + app.start(); +// funk.start(); } } diff --git a/src/main/java/projekt/enigma/model/Codierer.java b/src/main/java/projekt/enigma/model/Codierer.java index 71b2a93ae8e66e475d348c96c254fe16580fc2d0..33789a373f29fab20960043f7890ea8551040ad2 100644 --- a/src/main/java/projekt/enigma/model/Codierer.java +++ b/src/main/java/projekt/enigma/model/Codierer.java @@ -48,6 +48,7 @@ public class Codierer { //endregion //region Konstruktor + /** * Der Konstruktor des Codierers * Hier werden die globalen Variablen auf ihre Standart Werte gesetzt sowie die Objekte Initialisiert. @@ -66,6 +67,7 @@ public class Codierer { //region Funktionen & Methoden //region Reset & Initialisieren + /** * Hier lesen wir den heutigen Eintrag aus dem Codebuch aus und erstellen ein Codebuch Objekt * Nach dem Codebuch werden dann die Ringe auf die Walzen gesteckt und die Walzen anschließend @@ -79,6 +81,8 @@ public class Codierer { */ private void initialisiereHardware() { + this.nachricht = ""; + // Das Steckbrett initialisieren Steckbrett sb = new Steckbrett(); char[][] verbinder = this.codebuch.getSteckverbindung(); @@ -110,15 +114,16 @@ public class Codierer { this.initialisiereHardware(); } - /** - * Leer das Nachrichten Objekt um eine neue Nachricht aufnehmen zu können - */ - public void resetNachricht() { - this.nachricht = ""; + /** + * Leer das Nachrichten Objekt um eine neue Nachricht aufnehmen zu können + */ + public void resetNachricht() { + this.nachricht = ""; } //endregion //region Nachrichten handler + /** * Befehl die Nachricht an den Funker zu übergeben * @@ -183,6 +188,7 @@ public class Codierer { //endregion //region Generatoren + /** * Hier wird ein neuer Spruchschlüssel generiert. * <p> @@ -247,6 +253,7 @@ public class Codierer { //endregion //region setzte Funktionen + /** * Setzt den anzuzeigenden Buchstaben (buchstabe) auf der Walze (walzenPosition) und resetet anschließen das * Nachrichten Objekt @@ -255,7 +262,7 @@ public class Codierer { * @param buchstabe : char : Buchstabe der zugewiesen soll */ public void setzeWalze(int walzenPosition, char buchstabe) { - this.resetNachricht(); + this.resetNachricht(); this.hardware.setzePosition(walzenPosition, buchstabe); } @@ -338,6 +345,7 @@ public class Codierer { //endregion //region codierer + /** * Hier wird ein einzelner Buchstabe verschlüsselt. * Man muss hier ebenfalls mitgeben ob der codierte String in Codierer.nachricht gespeichert werden soll oder nicht. @@ -390,8 +398,8 @@ public class Codierer { private String decodiere(String codierteNachricht, int tag) { // Hardware reseten und Tageseinstellungen aus dem Codebuch laden - this.codebuch.fetchTagesschluessel(tag); - this.initialisiereHardware(); + this.codebuch.fetchTagesschluessel(tag); + this.initialisiereHardware(); // Nachricht splitten mit whitespace als delimiter String[] nachricht = codierteNachricht.split(" "); @@ -472,27 +480,13 @@ public class Codierer { */ public void letztesZeichenLoeschen() { this.hardware.dreheWalzen(-1); + this.nachricht = this.nachricht.substring(0, this.nachricht.length() - 1); } //endregion //endregion //region Setter - /** - * Setzt die Kenngruppe welche die Enigma gerade benutzt. - * - * @param kenngruppe : String : Kenngruppe welche die Enigma gerade benutzt - */ - public void setKenngruppe(String kenngruppe) { - - this.kenngruppe = kenngruppe; - this.initialisiereHardware(); - - } - //endregion - - //region Getter - /** * Gibt die bisher erstellte Nachricht zurück * @@ -501,6 +495,9 @@ public class Codierer { public String getNachricht() { return nachricht; } + //endregion + + //region Getter /** * Liest die Kenngruppe aus welche die Maschine gerade besitzt. Früher war dies eine eindeutige Nummer @@ -512,6 +509,18 @@ public class Codierer { return kenngruppe; } + /** + * Setzt die Kenngruppe welche die Enigma gerade benutzt. + * + * @param kenngruppe : String : Kenngruppe welche die Enigma gerade benutzt + */ + public void setKenngruppe(String kenngruppe) { + + this.kenngruppe = kenngruppe; + this.initialisiereHardware(); + + } + /** * Der Spruchschlüssel wird, zur internen Verwendung, auch im Klartext gespeichert. * Wir brauchen diesen dann zum codieren der eigentlichen Nachricht. diff --git a/src/main/java/projekt/enigma/model/Funkraum.java b/src/main/java/projekt/enigma/model/Funkraum.java index 96a3a35b3fa9391afad8d5193ff4923bb368c391..f596cfad8ef16c6e1479e798fb1123afc5cb8da6 100644 --- a/src/main/java/projekt/enigma/model/Funkraum.java +++ b/src/main/java/projekt/enigma/model/Funkraum.java @@ -19,24 +19,25 @@ import java.util.ArrayList; import java.util.List; /** - * Hier sitzt der Funker - * Der Funkraum kann Funksprüche empfangen und senden. - * Hierfür wird eine Verbindung zu einem externen Service aufgebaut. + * Hier sitzt der Funker. + * Der Funkraum kann Funksprueche empfangen und senden. + * Hierfuer wird eine Verbindung zu einem externen Service aufgebaut. * Dieser Servive erwartet die Nachrichten im JSON Format. Dazu wird ein k als Kenngruppe - * (Benutzername) übergeben und falls eine Nachricht gesendet werden soll, zusätzlich ein m mit der Nachricht. + * (Benutzername) uebergeben und falls eine Nachricht gesendet werden soll, zusätzlich ein m mit der Nachricht. * Beides wird als String gesendet. */ -class Funkraum { +public class Funkraum { + /** - * Zum Empfangen liefert der Server, anstatt der Kenngruppe (k) den Empfangstag der Nachricht mit damit man + * Zum Empfangen liefert der Server, anstatt der Kenngruppe (k), den Empfangstag (t) der Nachricht mit, damit man * die Grundeinstellungen aus dem Codebuch, für diesen Tag, raussuchen kann. * {'m': 'Hello world', 't': '26'} * - * @param kenngruppe : String : Kenngruppe dieser Engiam - * @return String[] : String Array wobei Index 0 dem Empfangstag entspricht und index 1 der empfangenen Nachricht + * @param kenngruppe : String : Kenngruppe dieser Enigma + * @return funkspruch : String[] : String Array wobei Index 0 dem Empfangstag entspricht und Index 1 + * der empfangenen Nachricht */ - String[] empfangeFunkspruch(String kenngruppe) { - + public String[] empfangeFunkspruch(String kenngruppe) { String[] funkspruch = new String[2]; HttpClient httpclient = HttpClients.createDefault(); @@ -73,22 +74,21 @@ class Funkraum { /** * Dem Service senden wir unsere Nachricht als POST Parameter (m) und unsere Kenngruppe (k). - * Dieser nimmt die Daten entgegeb und hierlerlegt sie auf seinem Stapel (Datenbank) von dem die Nachrichten - * irgendwann, auf Anfrage, wieder abgerufen werden können. + * Dieser nimmt die Daten entgegen und hierlerlegt sie auf seinem Stapel (Datenbank) von dem die Nachrichten + * irgendwann, auf Anfrage, wieder abgerufen werden koennen. * <p> - * Darauf antworter der Server dann mit einem JSON Object in dem das Ergebnis der Anfrage zu sehen ist. + * Darauf antwortet der Server mit einem JSON Object in dem das Ergebnis der Anfrage zu sehen ist. * {'result': 200} * <p> - * Die 200 heißt hier das alles erfolgreich durchgeführt werden konnte. Steht hier etwas anderes, ist ein Fehler + * Die 200 heißt hier, dass alles erfolgreich durchgefuehrt werden konnte. Steht hier etwas anderes, ist ein Fehler * aufgetreten und die Anfrage war nicht erfolgreich. - * In letzterem Fall sollte eine Meldung an den Benutzer ausgegeben werden und ggF später erneut versucht. + * In letzterem Fall sollte eine Meldung an den Benutzer ausgegeben werden und ggf spaeter erneut versucht werden. * - * @param funkspruch : String : Der zu sendede Funkspruch + * @param funkspruch : String : Der zu sendende Funkspruch * @param kenngruppe : String : Die Kenngruppe dieser Engima * @throws IOException : Exception : Funkspruch konnte nicht gesendet werden */ - void sendeFunkspruch(String funkspruch, String kenngruppe) throws HttpException, IOException { - + public void sendeFunkspruch(String funkspruch, String kenngruppe) throws HttpException, IOException { HttpClient httpclient = HttpClients.createDefault(); HttpPost httppost = new HttpPost("https://enigma.itstall.de/"); @@ -106,9 +106,9 @@ class Funkraum { BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); JSONObject result = new JSONObject(reader.readLine()); if (result.getInt("result") != 200) { - throw new HttpException("Der andere Funker mag deine Nachricht nicht. Rüge ihn wenn du ihn wieder siehst..."); + throw new HttpException("Der andere Funker mag deine Nachricht nicht. " + + "Rüge ihn wenn du ihn wieder siehst..."); } } - } } diff --git a/src/main/java/projekt/enigma/model/Hardware.java b/src/main/java/projekt/enigma/model/Hardware.java index 4fc0c5ba2b22eac34592a1ea65f32105ff53dec9..290f8c4951774533d1a7db8c0ed8fb603ad2ae79 100644 --- a/src/main/java/projekt/enigma/model/Hardware.java +++ b/src/main/java/projekt/enigma/model/Hardware.java @@ -96,14 +96,18 @@ public class Hardware { public void dreheWalzen(int richtung) { if (richtung > 0) { for (int i = 0; i < richtung; i++) { - if (this.walzen[2].dreheWalze(1) && this.walzen[1].dreheWalze(1)) { - this.walzen[0].dreheWalze(1); + if (this.walzen[2].dreheWalze(1)) { + if(this.walzen[1].dreheWalze(1)) { + this.walzen[0].dreheWalze(1); + } } } } else { for (int i = 0; i > richtung; richtung++) { - if (this.walzen[2].dreheWalze(-1) && this.walzen[1].dreheWalze(-1)) { - this.walzen[0].dreheWalze(-1); + if (this.walzen[2].dreheWalze(-1)) { + if(this.walzen[1].dreheWalze(-1)) { + this.walzen[0].dreheWalze(-1); + } } } } @@ -156,7 +160,6 @@ public class Hardware { //endregion //region Getter - /** * Gibt das Objekt des Steckbretts zurück * diff --git a/src/main/java/projekt/enigma/model/Walze.java b/src/main/java/projekt/enigma/model/Walze.java index e477e35fb6c22a22abf5dbbfe7a0b19616bc2413..92b244d0fa631620e50e297c1964eb0c51951a24 100644 --- a/src/main/java/projekt/enigma/model/Walze.java +++ b/src/main/java/projekt/enigma/model/Walze.java @@ -16,169 +16,168 @@ package projekt.enigma.model; */ public class Walze { - //region Variablen - /** - * Das String Array aller bekannter aktuellen Walzen - */ - private String[] walzen; - - /** - * alphabet : String dass die Buchstaben des Alphabets enthaelt - */ - private String alphabet; - - /** - * ringstellung : char : zeigt die Einstellung fuer den Umspringpunkt - */ - private char ringstellung; - - /** - * walzennr : int : Bestimmt, welche Walze genutzt wird - */ - private int walzenNr; - - /** - * Die Anzahl der getätigten Walzen Drehungen - */ - private int turns; - //endregion - - //region Konstruktor - /** - * Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mit gibt - * - * @param walzenNr : int : Nummer der gewaehlten Walze - * @param ringstellung : int : Einstellung des Umsprungpunktes - */ - public Walze(int walzenNr, int ringstellung) { - - this.walzen = new String[5]; - this.walzen[0] = "EKMFLGDQVZNTOWYHXUSPAIBRCJ"; - this.walzen[1] = "AJDKSIRUXBLHWTMCQGZNPYFVOE"; - this.walzen[2] = "BDFHJLCPRTXVZNYEIWGAKMUSQO"; - this.walzen[3] = "ESOVPZJAYQUIRHXLNFTGKDCMWB"; - this.walzen[4] = "VZBRGITYUPSDNHLXAWMJQOFECK"; - this.alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - this.turns = 0; - - this.setWalzenNr(walzenNr); - this.setRingstellung(ringstellung); - } - //endregion - - //region Funktionen & Methoden - /** - * Dreht die Walze: Zählt die Umdrehungen (Turns) um eines hoch oder runter, je nach Drehrichtung. - * <p> - * Ueberprueft, ob der Umspringpunkt der Walze nach der Drehung erreicht wurde. - * - * @param richtung : int : 1 dreht die Walze weiter und -1 dreht sie einen Schritt zurück - * @return checkRing : boolean : gibt true zurueck wenn der Umspringpunkt erreicht wurde - * TODO: Doku - */ - public boolean dreheWalze(int richtung) { - - boolean checkRing = false; - - if (richtung == -1 || richtung == 1) { - if (richtung == 1) { - this.turns++; - } else if (richtung == -1) { - this.turns--; - } - - // gleicht die Ringstellung mit der aktuellen Position ab - if (this.getPosition() + richtung == this.ringstellung) { - checkRing = true; - } - } - - return checkRing; - } - - /** - * Codiert den mitgegebenen Buchstaben anhand der gewaehlten Walze. - * - * @param buchstabe : char : Buchstabe, der verschluesselt werden soll - * @return buchstabe : char : verschluesselter Buchstabe - */ - public char codiere(char buchstabe) { - return this.fetchWalze().charAt((this.alphabet.indexOf(buchstabe) + this.turns) % 26); - } - - /** - * Decodiert den mitgegebenen Buchstaben mit Hilfe der (verschobenen) Walze - * - * @param buchstabe : char : Buchstabe, der decodiert werden soll - * @return buchstabe : char : decodierter Buchstabe - */ - public char codiere2(char buchstabe) { - return this.alphabet.charAt((this.fetchWalze().indexOf(buchstabe) - this.turns + 260) % 26); - } - - /** - * Holt den korrekten String zu der Walze - * - * @return walze : Character[] : gibt die gewaehlte Walze zurueck - */ - private String fetchWalze() { - - return walzen[walzenNr]; - } - //endregion - - //region Setter - /** - * * TODO: Funktionsname hat sich geändert - * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen. - * Buchstaben werden automatisch in Grossbuchstaben umgewandelt. - * Ist die Grundeinstellung nicht 'A', wird die Methode dreheWalze() aufgerufen. - * - * @param buchstabe : Character : Einstellung der Walze - */ - public void setPosition(Character buchstabe) { - this.turns = alphabet.indexOf(buchstabe); - } - - /** - * Setzt die Walzennummer. Es stehen fuenf Walze zur Auswahl. - * - * @param walzenNr : int : Walzennummer - */ - public void setWalzenNr(int walzenNr) { - if ((walzenNr > 0) && (walzenNr < 6)) { - this.walzenNr = walzenNr - 1; - } else { - System.err.println("Keine gültige Walzennummer"); - } - } - - /** - * Setzt die Initiale Ringstellung der Walze. - * Es sind nur Zahlen von 1 - 26 zugelassen. - * <p> - * Die Ringstellung wird zum char umgewandelt. - * Im Fehlerfall wird die Ringstellung standardmaessig auf 'Z' gesetzt. - * - * @param ringstellung : int : Punkt an dem die Walze umspringt - */ - public void setRingstellung(int ringstellung) { - if ((ringstellung > 0) && (ringstellung <= 26)) { - this.ringstellung = this.alphabet.charAt(ringstellung - 1); - } else { - this.ringstellung = 'Z'; - } - } - //endregion - - //region Getter - /** - * Gibt den Character zurueck, der aktuell in der Walze eingestellt ist - * - * @return Character am Index 0 des (verschobenen) Alphabets zurueck - */ - public Character getPosition() { - return this.alphabet.charAt(turns % 26); - } - //endregion + //region Variablen + /** + * Die Anzahl der getätigten Walzen Drehungen + * TODO: Wieder auf private setzen + */ + public int turns; + /** + * Das String Array aller bekannter aktuellen Walzen + */ + private String[] walzen; + /** + * alphabet : String dass die Buchstaben des Alphabets enthaelt + */ + private String alphabet; + /** + * ringstellung : char : zeigt die Einstellung fuer den Umspringpunkt + */ + private char ringstellung; + /** + * walzennr : int : Bestimmt, welche Walze genutzt wird + */ + private int walzenNr; + //endregion + + //region Konstruktor + /** + * Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mit gibt + * + * @param walzenNr : int : Nummer der gewaehlten Walze + * @param ringstellung : int : Einstellung des Umsprungpunktes + */ + public Walze(int walzenNr, int ringstellung) { + + this.walzen = new String[5]; + this.walzen[0] = "EKMFLGDQVZNTOWYHXUSPAIBRCJ"; + this.walzen[1] = "AJDKSIRUXBLHWTMCQGZNPYFVOE"; + this.walzen[2] = "BDFHJLCPRTXVZNYEIWGAKMUSQO"; + this.walzen[3] = "ESOVPZJAYQUIRHXLNFTGKDCMWB"; + this.walzen[4] = "VZBRGITYUPSDNHLXAWMJQOFECK"; + this.alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + this.turns = 0; + + this.setWalzenNr(walzenNr); + this.setRingstellung(ringstellung); + } + //endregion + + //region Funktionen & Methoden + /** + * Dreht die Walze: Zählt die Umdrehungen (Turns) um eines hoch oder runter, je nach Drehrichtung. + * <p> + * Ueberprueft, ob der Umspringpunkt der Walze nach der Drehung erreicht wurde. + * + * @param richtung : int : 1 dreht die Walze weiter und -1 dreht sie einen Schritt zurück + * @return checkRing : boolean : gibt true zurueck wenn der Umspringpunkt erreicht wurde + * TODO: Doku + */ + public boolean dreheWalze(int richtung) { + + boolean checkRing = false; + int korrektorFaktor = 0; + + if (richtung == -1 || richtung == 1) { + if (richtung == 1) { + this.turns++; + } else if (richtung == -1) { + korrektorFaktor = 1; + this.turns--; + } + + // gleicht die Ringstellung mit der aktuellen Position ab + if ((this.alphabet.indexOf(this.getPosition()) + korrektorFaktor) % 26 == this.alphabet.indexOf(this.ringstellung)) { + checkRing = true; + } + } + + return checkRing; + } + + /** + * Codiert den mitgegebenen Buchstaben anhand der gewaehlten Walze. + * + * @param buchstabe : char : Buchstabe, der verschluesselt werden soll + * @return buchstabe : char : verschluesselter Buchstabe + */ + public char codiere(char buchstabe) { + return this.fetchWalze().charAt((this.alphabet.indexOf(buchstabe) + this.turns) % 26); + } + + /** + * Decodiert den mitgegebenen Buchstaben mit Hilfe der (verschobenen) Walze + * + * @param buchstabe : char : Buchstabe, der decodiert werden soll + * @return buchstabe : char : decodierter Buchstabe + */ + public char codiere2(char buchstabe) { + return this.alphabet.charAt((this.fetchWalze().indexOf(buchstabe) - this.turns + 260) % 26); + } + + /** + * Holt den korrekten String zu der Walze + * + * @return walze : Character[] : gibt die gewaehlte Walze zurueck + */ + private String fetchWalze() { + + return walzen[walzenNr]; + } + //endregion + + //region Setter + /** + * Setzt die Walzennummer. Es stehen fuenf Walze zur Auswahl. + * + * @param walzenNr : int : Walzennummer + */ + public void setWalzenNr(int walzenNr) { + if ((walzenNr > 0) && (walzenNr < 6)) { + this.walzenNr = walzenNr - 1; + } else { + System.err.println("Keine gültige Walzennummer"); + } + } + + /** + * Setzt die Initiale Ringstellung der Walze. + * Es sind nur Zahlen von 1 - 26 zugelassen. + * <p> + * Die Ringstellung wird zum char umgewandelt. + * Im Fehlerfall wird die Ringstellung standardmaessig auf 'Z' gesetzt. + * + * @param ringstellung : int : Punkt an dem die Walze umspringt + */ + public void setRingstellung(int ringstellung) { + if ((ringstellung > 0) && (ringstellung <= 26)) { + this.ringstellung = this.alphabet.charAt(ringstellung - 1); + } else { + this.ringstellung = 'Z'; + } + } + + /** + * * TODO: Funktionsname hat sich geändert + * Gibt die Grundeinstellung der Walze ein. Nur Buchstaben von A - Z sind zugelassen. + * Buchstaben werden automatisch in Grossbuchstaben umgewandelt. + * Ist die Grundeinstellung nicht 'A', wird die Methode dreheWalze() aufgerufen. + * + * @param buchstabe : Character : Einstellung der Walze + */ + public void setPosition(Character buchstabe) { + this.turns = alphabet.indexOf(buchstabe); + } + //endregion + + //region Getter + /** + * Gibt den Character zurueck, der aktuell in der Walze eingestellt ist + * + * @return Character am Index 0 des (verschobenen) Alphabets zurueck + */ + public Character getPosition() { + return this.alphabet.charAt(turns % 26); + } + //endregion } \ No newline at end of file diff --git a/src/main/java/projekt/enigma/threads/ThreadApp.java b/src/main/java/projekt/enigma/threads/ThreadApp.java new file mode 100644 index 0000000000000000000000000000000000000000..47cbfb2de183fb7925ccc60722add7f58f48f166 --- /dev/null +++ b/src/main/java/projekt/enigma/threads/ThreadApp.java @@ -0,0 +1,17 @@ +package projekt.enigma.threads; + +import projekt.enigma.App; + +import java.sql.SQLException; + +public class ThreadApp implements Runnable { + private String[] args; + + @Override + public void run() { + System.out.println("ThreadApp" + Thread.currentThread()); + App app = new App(); + app.main(args); + + } +} diff --git a/src/main/java/projekt/enigma/threads/ThreadFunkraum.java b/src/main/java/projekt/enigma/threads/ThreadFunkraum.java new file mode 100644 index 0000000000000000000000000000000000000000..b4a978dd87fce4095e9471294eeabace75ca8029 --- /dev/null +++ b/src/main/java/projekt/enigma/threads/ThreadFunkraum.java @@ -0,0 +1,26 @@ +package projekt.enigma.threads; + +import org.apache.http.HttpException; +import projekt.enigma.model.Codierer; +import projekt.enigma.model.Funkraum; + +import java.io.IOException; + +public class ThreadFunkraum implements Runnable { + String kenngruppe = new Codierer().getKenngruppe(); +// String funkspruch; + @Override + public void run() { + Funkraum funkraum = new Funkraum(); + System.out.println("Threadfunkraum" + Thread.currentThread()); + funkraum.empfangeFunkspruch(kenngruppe); + +// try { +// funkraum.sendeFunkspruch(funkspruch, kenngruppe); +// } catch (HttpException he) { +// System.err.println("Error"); +// } catch (IOException io) { +// System.err.println("Error"); +// } + } +}