From d5b8a62c18915c4af45f642877bb5b53ea942736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uli=20B=C3=A4hr?= <eude365sup@outlook.com> Date: Fri, 29 Nov 2019 23:45:59 +0100 Subject: [PATCH] =?UTF-8?q?GuiController=20aufger=C3=A4umt=20=3D>=20Region?= =?UTF-8?q?s=20zur=20besseren=20=C3=9Cbersicht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/projekt/enigma/GuiController.java | 224 +++++++++--------- src/main/resources/projekt/enigma/gui.fxml | 6 +- 2 files changed, 121 insertions(+), 109 deletions(-) diff --git a/src/main/java/projekt/enigma/GuiController.java b/src/main/java/projekt/enigma/GuiController.java index a38c979..d88fdd5 100644 --- a/src/main/java/projekt/enigma/GuiController.java +++ b/src/main/java/projekt/enigma/GuiController.java @@ -12,6 +12,7 @@ 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"}; @@ -20,7 +21,7 @@ public class GuiController { private String textCodiert; private boolean resetDisplay; private Codierer codierer; - +//endregion //region GUI-Elemente @FXML @@ -46,10 +47,9 @@ public class GuiController { @FXML private MenuButton mBtnWalzPos1, mBtnWalzPos2, mBtnWalzPos3, mBtnNotchPos1, mBtnNotchPos2, mBtnNotchPos3, mBtnStartPos1, mBtnStartPos2, mBtnStartPos3; - //endregion - - +//endregion + //region Init @FXML void initialize() { @@ -113,6 +113,109 @@ public class GuiController { 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))); + } + } +//endregion + + //region EventHandler/Listener + + /** + * //TODO DOKU + */ + private void leuchten(Button taste, Circle leuchte) { + + taste.setOnMousePressed(mouseEvent -> leuchte.setStyle("-fx-fill: #FFA500")); + taste.setOnMouseReleased(mouseEvent -> { + leuchte.setStyle("-fx-background-color: " + taste.getBackground()); + leuchte.setStyle("-fx-border-color: #000000"); + }); + } + + /** + * Auswertung welcher Button gedrückt wurde + * + * @param e => ActionEvent des auslösenden Button + */ + @FXML + private void gedrueckteTaste(ActionEvent e) { + + //TODO Anbindung an Klasse Hardware + if (e.getSource() == btnA) { + setText(btnA); + //leuchten(); + } + if (e.getSource() == btnB) setText(btnB); + if (e.getSource() == btnC) setText(btnC); + if (e.getSource() == btnD) setText(btnD); + if (e.getSource() == btnE) setText(btnE); + if (e.getSource() == btnF) setText(btnF); + if (e.getSource() == btnG) setText(btnG); + if (e.getSource() == btnH) setText(btnH); + if (e.getSource() == btnI) setText(btnI); + if (e.getSource() == btnJ) setText(btnJ); + if (e.getSource() == btnK) setText(btnK); + if (e.getSource() == btnL) setText(btnL); + if (e.getSource() == btnM) setText(btnM); + if (e.getSource() == btnN) setText(btnN); + if (e.getSource() == btnO) setText(btnO); + if (e.getSource() == btnP) setText(btnP); + if (e.getSource() == btnQ) setText(btnQ); + if (e.getSource() == btnR) setText(btnR); + if (e.getSource() == btnS) setText(btnS); + if (e.getSource() == btnT) setText(btnT); + if (e.getSource() == btnU) setText(btnU); + if (e.getSource() == btnV) setText(btnV); + if (e.getSource() == btnW) setText(btnW); + if (e.getSource() == btnX) setText(btnX); + if (e.getSource() == btnY) setText(btnY); + if (e.getSource() == btnZ) setText(btnZ); + if (e.getSource() == btnSenden) sendeFunkspruch(); + if (e.getSource() == btnEmpfangen) empfangeFunkspruch(); + if (e.getSource() == btnDelete) loeschen(); + } +//endregion + + //region Methoden + + /** + * 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. @@ -134,7 +237,6 @@ public class GuiController { * 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 */ - @FXML private void loeschen() { if (textEingabe.length() == 0) { tfKlartext.setText(""); @@ -151,7 +253,9 @@ public class GuiController { } } - @FXML + /** + * //TODO DOKU + */ void empfangeFunkspruch() { String[] empfangeneNachricht = this.codierer.empfangeNachricht(); if (empfangeneNachricht[0] != null) { @@ -166,7 +270,9 @@ public class GuiController { } } - @FXML + /** + * //TODO DOKU + */ private void sendeFunkspruch() { this.tfKlartext.setText(""); this.tfCodiert.setText(""); @@ -179,97 +285,12 @@ public class GuiController { } - /** - * Methode zum setzen des menuButton Textes auf das ausgewählte MenuItem - * - * @param mb : MenuButton der Walze - * @param mi : MenuItem - */ - private void listener(MenuButton mb, MenuItem mi) { - // mb.setText(mi.getText()); - - if (mb.getId().equals(mBtnStartPos1.getId())) setzePosition(1, mi.getText().charAt(0)); - if (mb.getId().equals(mBtnStartPos2.getId())) setzePosition(2, mi.getText().charAt(0)); - if (mb.getId().equals(mBtnStartPos3.getId())) setzePosition(3, mi.getText().charAt(0)); - if (mb.getId().equals(mBtnWalzPos1.getId())) setzeWalze(1, mi.getText()); - if (mb.getId().equals(mBtnWalzPos2.getId())) setzeWalze(2, mi.getText()); - if (mb.getId().equals(mBtnWalzPos3.getId())) setzeWalze(3, mi.getText()); - if (mb.getId().equals(mBtnNotchPos1.getId())) - setzeRing(1, Integer.parseInt(mi.getText()) - 1); - if (mb.getId().equals(mBtnNotchPos2.getId())) - setzeRing(2, Integer.parseInt(mi.getText()) - 1); - if (mb.getId().equals(mBtnNotchPos3.getId())) - setzeRing(3, Integer.parseInt(mi.getText()) - 1); - } - - /** - * 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 -> listener(button, finalMi.get(finalI))); - } - } - - /** - * Auswertung welcher Button gedrückt wurde - * - * @param e => ActionEvent des auslösenden Button - */ - @FXML - private void gedrueckteTaste(ActionEvent e) { - - //TODO Anbindung an Klasse Hardware - if (e.getSource() == btnA){ - setText(btnA); - //leuchten(); - } - if (e.getSource() == btnB) setText(btnB); - if (e.getSource() == btnC) setText(btnC); - if (e.getSource() == btnD) setText(btnD); - if (e.getSource() == btnE) setText(btnE); - if (e.getSource() == btnF) setText(btnF); - if (e.getSource() == btnG) setText(btnG); - if (e.getSource() == btnH) setText(btnH); - if (e.getSource() == btnI) setText(btnI); - if (e.getSource() == btnJ) setText(btnJ); - if (e.getSource() == btnK) setText(btnK); - if (e.getSource() == btnL) setText(btnL); - if (e.getSource() == btnM) setText(btnM); - if (e.getSource() == btnN) setText(btnN); - if (e.getSource() == btnO) setText(btnO); - if (e.getSource() == btnP) setText(btnP); - if (e.getSource() == btnQ) setText(btnQ); - if (e.getSource() == btnR) setText(btnR); - if (e.getSource() == btnS) setText(btnS); - if (e.getSource() == btnT) setText(btnT); - if (e.getSource() == btnU) setText(btnU); - if (e.getSource() == btnV) setText(btnV); - if (e.getSource() == btnW) setText(btnW); - if (e.getSource() == btnX) setText(btnX); - if (e.getSource() == btnY) setText(btnY); - if (e.getSource() == btnZ) setText(btnZ); - if (e.getSource() == btnSenden) sendeFunkspruch(); - if (e.getSource() == btnEmpfangen) empfangeFunkspruch(); - if (e.getSource() == btnDelete) loeschen(); - } - /** * schreibt Buchstaben des gedrückten Knopfes in Textfeld tfrein * - * @param b : gedrückter Knopf + * @param pressedButton : gedrückter Knopf */ - private void setText(Button b) { + private void setText(Button pressedButton) { if (textEingabe.length() < 250) { if (this.resetDisplay) { this.tfCodiert.setText(""); @@ -283,8 +304,8 @@ public class GuiController { // Spruchschluessel in das Feld lblSpruchschluessel schreiben lblSpruchschluessel.setText(this.codierer.getSpruchschluessel()); } - textEingabe += b.getText(); - textCodiert += this.codierer.codiere(b.getText().charAt(0), true); + textEingabe += pressedButton.getText(); + textCodiert += this.codierer.codiere(pressedButton.getText().charAt(0), true); tfKlartext.setText(textEingabe); tfCodiert.setText(textCodiert); @@ -296,15 +317,6 @@ public class GuiController { } } - private void leuchten(Button taste, Circle leuchte) { - - taste.setOnMousePressed(mouseEvent -> leuchte.setStyle("-fx-fill: #FFA500")); - taste.setOnMouseReleased(mouseEvent -> { - leuchte.setStyle("-fx-background-color: " + taste.getBackground()); - leuchte.setStyle("-fx-border-color: #000000"); - }); - } - /** * Setzt die Anzeige des entsprechende Gui-Element auf die entsprechende Walze * ->d.h. welche Walze sitzt auf welcher Position @@ -341,7 +353,6 @@ public class GuiController { break; case 2: mBtnWalzPos2.setText(walzenNr[walzeNr]); - break; case 3: mBtnWalzPos3.setText(walzenNr[walzeNr]); @@ -436,4 +447,5 @@ public class GuiController { tfStecker10.setText(this.codierer.getSteckverbindungen()[9][0] + "" + this.codierer.getSteckverbindungen()[9][1]); } + //endregion } diff --git a/src/main/resources/projekt/enigma/gui.fxml b/src/main/resources/projekt/enigma/gui.fxml index fbe012f..8630069 100644 --- a/src/main/resources/projekt/enigma/gui.fxml +++ b/src/main/resources/projekt/enigma/gui.fxml @@ -241,7 +241,7 @@ <Font name="System Bold" size="18.0" /> </font> </Button> - <Button fx:id="btnDelete" minHeight="44.0" mnemonicParsing="false" onAction="#loeschen" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="<" textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="5"> + <Button fx:id="btnDelete" minHeight="44.0" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="48.0" prefWidth="51.0" style="-fx-background-radius: 100; -fx-background-color: #0d0d0d;" text="<" textFill="#fffdfd" GridPane.columnIndex="10" GridPane.rowIndex="5"> <font> <Font size="18.0" /> </font> @@ -604,9 +604,9 @@ </GridPane> <FlowPane layoutX="736.0" layoutY="51.0" prefHeight="173.0" prefWidth="195.0" AnchorPane.rightAnchor="36.0" AnchorPane.topAnchor="51.0"> <children> - <Button fx:id="btnEmpfangen" mnemonicParsing="false" onAction="#empfangeFunkspruch" prefHeight="80.0" prefWidth="195.0" text="Funkspruch empfangen" /> + <Button fx:id="btnEmpfangen" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="80.0" prefWidth="195.0" text="Funkspruch empfangen" /> <Label prefHeight="17.0" prefWidth="195.0" /> - <Button fx:id="btnSenden" mnemonicParsing="false" onAction="#sendeFunkspruch" prefHeight="80.0" prefWidth="195.0" text="An Funker senden" /> + <Button fx:id="btnSenden" mnemonicParsing="false" onAction="#gedrueckteTaste" prefHeight="80.0" prefWidth="195.0" text="An Funker senden" /> </children> </FlowPane> <GridPane layoutX="23.0" layoutY="222.0" prefHeight="60.0" prefWidth="270.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="222.0"> -- GitLab