diff --git a/Praesentation/praesentation.md b/Praesentation/praesentation.md
index 53962343be84c75631a6e08c8d70973bf8cd77d8..bb8bcc59e07c57393205430b2a0b0fe0fd19c8e9 100644
--- a/Praesentation/praesentation.md
+++ b/Praesentation/praesentation.md
@@ -95,12 +95,12 @@
 * Kenngruppe Abfrage
   * Testen Kenngruppe Dialog und Fehler
 * Enigma
-  * Setzen von Walzen
-  * Setzen von Ringen
-  * Setzen von Startpunkten
-  * Zurücksetzen
+  * Senden ohne Nachricht und Fehler
+  * Empfangen ohne hinterlegte Nachricht und Fehler
   * Tagesschlüssel
-  * Verschlüsseln von Nachrichten
-  * Senden von Nachrichten
-  * Abrufen und entschlüsseln von Nachrichten
-  * Setzen einer anderen Kenngruppe und zeigen was passiert wenn man dann Nachrichten abrufen möchte
+  * Eingabe Nachricht
+  * Senden einer Nachricht
+  * Empfang einer Nachricht
+  * Zurücksetzen
+  * Setzen von Walzen und Ringen
+  * Senden & Empfangen
diff --git a/src/main/java/projekt/enigma/GuiController.java b/src/main/java/projekt/enigma/GuiController.java
index 05b30eaefd2a1fd6fcaf3cbaad5ab471fc1c4238..0bacfd4f7d045c533bfc944e1c1fdec64062774d 100644
--- a/src/main/java/projekt/enigma/GuiController.java
+++ b/src/main/java/projekt/enigma/GuiController.java
@@ -22,120 +22,111 @@ import java.util.Arrays;
 
 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 String[] empfangeneNachricht;
-    private String textEingabe;
-    private String textCodiert;
-    private char chiffrierterBuchstabe;
-    private boolean resetDisplay;
-    private Codierer codierer;
-    private enum BUCHSTABE_LEUCHTET {AN, AUS}
-
-    @FXML
-    private static ToggleButton[] tBtnPort;
-    //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;
-
-    //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 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 tfCodiert, tfKlartext;
-
-    //deklariert benötigtes pane
-    @FXML
-    private Pane portPane0, portPane1, portPane2, portPane3, portPane4, portPane5, portPane6, portPane7, portPane8, portPane9;
-
-    //deklariert benötigtes GridPane
-    @FXML
-    private GridPane mainGrid;
-    //endregion
-
-    //region Init
-    /**
-     * 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);
-
-
-        myToggleButtons();
-    }
-
-
-    /**
-     * Für das Steckbrett müssen zehn CheckComboBoxen erstellt werden.
-     * 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);
-        }
-    }
-
-    /**
-     * Die Funktion createSteckbrettPort erstellt zehn CheckComboBoxen, holt sich die verfügbaren Buchstaben,
-     * die bereits gesteckten Kabel und weißt sie zu.
-     * Im Anschluss werden die CheckComboBoxen auf dem GridPane positioniert.
-     *
-     * @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();
-
-        // Sortiert das Array nach dem Alphabet
-        Arrays.sort(verfuegbareBuchstaben);
-
-        StringBuilder sb = new StringBuilder();
-
-        /*
-         * Die Buchstaben in die CheckComboBox laden und zusätzlich in einen String um später den
-         * Index des Buchstaben auslesen zu können
-         */
-        for (char c : verfuegbareBuchstaben) {
-            sb.append(c);
-        }
+	//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"};
+	@FXML
+	private static ToggleButton[] tBtnPort;
+	private String[] empfangeneNachricht;
+	private String textEingabe;
+	private String textCodiert;
+	private char chiffrierterBuchstabe;
+	private boolean resetDisplay;
+	private Codierer codierer;
+	//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;
+	//endregion
+	//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 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 tfCodiert, tfKlartext;
+	//deklariert benötigtes pane
+	@FXML
+	private Pane portPane0, portPane1, portPane2, portPane3, portPane4, portPane5, portPane6, portPane7, portPane8, portPane9;
+	//deklariert benötigtes GridPane
+	@FXML
+	private GridPane mainGrid;
+
+	/**
+	 * 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);
+
+
+		myToggleButtons();
+	}
+	//endregion
+
+	//region Init
+
+	/**
+	 * Für das Steckbrett müssen zehn CheckComboBoxen erstellt werden.
+	 * 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);
+		}
+	}
+
+	/**
+	 * Die Funktion createSteckbrettPort erstellt zehn CheckComboBoxen, holt sich die verfügbaren Buchstaben,
+	 * die bereits gesteckten Kabel und weißt sie zu.
+	 * Im Anschluss werden die CheckComboBoxen auf dem GridPane positioniert.
+	 *
+	 * @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();
+
+		// Sortiert das Array nach dem Alphabet
+		Arrays.sort(verfuegbareBuchstaben);
+
+		StringBuilder sb = new StringBuilder();
+
+		/*
+		 * Die Buchstaben in die CheckComboBox laden und zusätzlich in einen String um später den
+		 * Index des Buchstaben auslesen zu können
+		 */
+		for (char c : verfuegbareBuchstaben) {
+			sb.append(c);
+		}
 
 /*        // ToggleButton erstellen
         tBtnPort[port] = new ToggleButton();
@@ -143,712 +134,810 @@ public class GuiController {
         mainGrid.add(tBtnPort[port], port + 1, 8);
         mainGrid.setMargin(tBtnPort[port], new Insets(0, 15, 0, 15));*/
 
-        // Die Gesteckten Buchstaben in der CheckComboBox selektieren
-        //ccb.getCheckModel().check(sb.toString().indexOf(this.codierer.fetchSteckverbindungen()[port][0]));
-        //ccb.getCheckModel().check(sb.toString().indexOf(this.codierer.fetchSteckverbindungen()[port][1]));
-    }
-
-    /**
-     * 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) {
-        ArrayList<MenuItem> 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
-            mItem.get(i).setOnAction(e -> setMenuBtnText(button, mItem.get(finalI)));
-        }
-    }
-
-    /**
-     * TODO: Doku
-     *
-     * @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) {
-            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: Doku
-     */
-    private void myToggleButtons() {
-        final ToggleGroup cabelConnect = new ToggleGroup();
-        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);
-            GridPane.setMargin(tBtnPort[i], new Insets(0, 15, 0, 15));
-            mainGrid.add(tBtnPort[i], i + 1, 8);
-
-            cabelConnect.selectedToggleProperty().
-                    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,
-     * 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);
-    }
-
-    /**
-     * Wird ausgelöst sobald eine Taste gedrückt wird (beim drücken der Taste)
-     * Auswertung welche Buchstaben-Taste gedrückt ist.
-     * Ü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
-     */
-    @FXML
-    void tasteRunter(MouseEvent e) {
-        if (e.getSource() == btnA) {
-            setText(btnA);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnB) {
-            setText(btnB);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnC) {
-            setText(btnC);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnD) {
-            setText(btnD);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnE) {
-            setText(btnE);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnF) {
-            setText(btnF);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnG) {
-            setText(btnG);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnH) {
-            setText(btnH);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnI) {
-            setText(btnI);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnJ) {
-            setText(btnJ);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnK) {
-            setText(btnK);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnL) {
-            setText(btnL);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnM) {
-            setText(btnM);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnN) {
-            setText(btnN);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnO) {
-            setText(btnO);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnP) {
-            setText(btnP);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnQ) {
-            setText(btnQ);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnR) {
-            setText(btnR);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnS) {
-            setText(btnS);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnT) {
-            setText(btnT);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnU) {
-            setText(btnU);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnV) {
-            setText(btnV);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnW) {
-            setText(btnW);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnX) {
-            setText(btnX);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnY) {
-            setText(btnY);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-        if (e.getSource() == btnZ) {
-            setText(btnZ);
-            leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
-        }
-    }
-
-    /**
-     * 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) {
-            if (tfCodiert.getText().equals("")) {
-                new Fehler().showErrorDialog("warning", "Haben Sie heute nichts zu sagen?",
-                        "Nutzung von militärischer Infrastruktur ohne Grund ist verboten.");
-            } else {
-                sendeFunkspruch();
-            }
-        }
-        if (e.getSource() == btnEmpfangen) empfangeFunkspruch();
-        if (e.getSource() == btnDelete) loeschen();
-        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.
-     *
-     * @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
-     */
-    private void leuchten(Circle leuchte, BUCHSTABE_LEUCHTET shiningLetter) {
-        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");
-        }
-    }
-
-    /**
-     * Gibt den Buchstabenkreis entsprechend des chiffrierten Buchstabens zurück
-     *
-     * @param chiffLetter => chiffrierter Buchstabe
-     * @return => Kreis des chiffrierten Buchstabens (der leuchten soll)
-     */
-    private Circle chiffCircle(char chiffLetter) {
-        switch (chiffLetter) {
-            case 'A':
-                return circA;
-            case 'B':
-                return circB;
-            case 'C':
-                return circC;
-            case 'D':
-                return circD;
-            case 'E':
-                return circE;
-            case 'F':
-                return circF;
-            case 'G':
-                return circG;
-            case 'H':
-                return circH;
-            case 'I':
-                return circI;
-            case 'J':
-                return circJ;
-            case 'K':
-                return circK;
-            case 'L':
-                return circL;
-            case 'M':
-                return circM;
-            case 'N':
-                return circN;
-            case 'O':
-                return circO;
-            case 'P':
-                return circP;
-            case 'Q':
-                return circQ;
-            case 'R':
-                return circR;
-            case 'S':
-                return circS;
-            case 'T':
-                return circT;
-            case 'U':
-                return circU;
-            case 'V':
-                return circV;
-            case 'W':
-                return circW;
-            case 'X':
-                return circX;
-            case 'Y':
-                return circY;
-            case 'Z':
-                return circZ;
-        }
-        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) {
-        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 der ToggelButtons gesetzt, welche die Steckverbindungen darstellen,
-     * mit den Werten die von der Klasse Codierer zur Verfügung gestellt werden.
-     */
-    private void setzeSteckverbindungen() {
-
-        for (int i = 0; i <= 9; i++) {
-            tBtnPort[i].setText(codierer.fetchSteckverbindungen()[i][0] + ""
-                    + codierer.fetchSteckverbindungen()[i][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 Spruchschlüssel
-     */
-    private void empfangeFunkspruch() {
-        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.");
-        }
-    }
-
-    /**
-     * Senden der Nachricht mit Hilfe der Klasse Codierer
-     * Löscht die Textfelder tfKlartext und tfCodiert
-     */
-    private void sendeFunkspruch() {
-        this.tfKlartext.setText("");
-        this.tfCodiert.setText("");
-
-        progressDialogue("tx");
-    }
-
-    /**
-     * TODO
-     *
-     * @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.setTitle("Kommunikation zum Funkraum");
-        if (strRxTx.equals("rx")) {
-            dialog.setContentText("Empfange Nachricht");
-        } else if (strRxTx.equals("tx")) {
-            dialog.setContentText("Sende Nachricht");
-        }
-        dialog.setHeaderText(null);
-        dialog.setGraphic(pi);
-        dialog.initStyle(StageStyle.UTILITY);
-        new Thread(copyWorker).start();
-        dialog.showAndWait();
-    }
-
-    /**
-     * TODO
-     *
-     * @param strRxTx : String : RX oder TX
-     * @return boolean
-     */
-    public Task createWorker(String strRxTx) {
-        return new Task() {
-            @Override
-            protected Object call() {
-                if (strRxTx.equals("rx")) {
-                    empfangeneNachricht = codierer.empfangeNachricht();
-                } else if (strRxTx.equals("tx")) {
-                    try {
-                        codierer.sendeNachricht();
-                    } catch (HttpException | IOException e) {
-                        e.printStackTrace();
-                    }
-                }
-
-                return true;
-            }
-        };
-    }
-
-    /**
-     * 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.lblSpruchschluessel.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 = 3;
-                break;
-            case "V":
-                walzeNr = 4;
-                break;
-            default:
-                break;
-        }
-
-        switch (walzenPosition) {
-            case 1:
-                mBtnWalzPos1.setText(walzenNr[walzeNr]);
-                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) {
-        switch (walzenPosition) {
-            case 1:
-                mBtnWalzPos1.setText(walzenNr[walzeNr - 1]);
-                //codierer.setWalze(walzeNr, walzenPosition)
-                break;
-            case 2:
-                mBtnWalzPos2.setText(walzenNr[walzeNr - 1]);
-                break;
-            case 3:
-                mBtnWalzPos3.setText(walzenNr[walzeNr - 1]);
-                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
-        setzeSteckverbindungen();
-
-        // Setzt das Steckbrett
-        generateSteckbrett();
-
-        // Felder zurück setzen
-        this.textCodiert = "";
-        this.textEingabe = "";
-        this.tfKlartext.setText("");
-        this.tfCodiert.setText("");
-    }
-
-    /**
-     * TODO: Doku
-     *
-     * @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.toUpperCase());
-
-        this.codierer.resetHardware();
-
-        //Setzt die Kenngruppe in der GUI
-        lblKenngruppe.setText("Kenngruppe: " + this.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
+		// Die Gesteckten Buchstaben in der CheckComboBox selektieren
+		//ccb.getCheckModel().check(sb.toString().indexOf(this.codierer.fetchSteckverbindungen()[port][0]));
+		//ccb.getCheckModel().check(sb.toString().indexOf(this.codierer.fetchSteckverbindungen()[port][1]));
+	}
+
+	/**
+	 * 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) {
+		ArrayList<MenuItem> 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
+			mItem.get(i).setOnAction(e -> setMenuBtnText(button, mItem.get(finalI)));
+		}
+	}
+
+	/**
+	 * TODO: Doku
+	 *
+	 * @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) {
+			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: Doku
+	 */
+	private void myToggleButtons() {
+		final ToggleGroup cabelConnect = new ToggleGroup();
+		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);
+			GridPane.setMargin(tBtnPort[i], new Insets(0, 15, 0, 15));
+			mainGrid.add(tBtnPort[i], i + 1, 8);
+
+			cabelConnect.selectedToggleProperty().
+					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);
+							}
+						}
+					});
+		}
+	}
+
+	/**
+	 * 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);
+	}
+	//endregion
+
+	//region EventHandler/Listener
+
+	/**
+	 * Wird ausgelöst sobald eine Taste gedrückt wird (beim drücken der Taste)
+	 * Auswertung welche Buchstaben-Taste gedrückt ist.
+	 * Ü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
+	 */
+	@FXML
+	void tasteRunter(MouseEvent e) {
+		if (e.getSource() == btnA) {
+			setText(btnA);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnB) {
+			setText(btnB);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnC) {
+			setText(btnC);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnD) {
+			setText(btnD);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnE) {
+			setText(btnE);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnF) {
+			setText(btnF);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnG) {
+			setText(btnG);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnH) {
+			setText(btnH);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnI) {
+			setText(btnI);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnJ) {
+			setText(btnJ);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnK) {
+			setText(btnK);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnL) {
+			setText(btnL);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnM) {
+			setText(btnM);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnN) {
+			setText(btnN);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnO) {
+			setText(btnO);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnP) {
+			setText(btnP);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnQ) {
+			setText(btnQ);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnR) {
+			setText(btnR);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnS) {
+			setText(btnS);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnT) {
+			setText(btnT);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnU) {
+			setText(btnU);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnV) {
+			setText(btnV);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnW) {
+			setText(btnW);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnX) {
+			setText(btnX);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnY) {
+			setText(btnY);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+		if (e.getSource() == btnZ) {
+			setText(btnZ);
+			leuchten(chiffCircle(chiffrierterBuchstabe), BUCHSTABE_LEUCHTET.AN);
+		}
+	}
+
+	/**
+	 * 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) {
+			if (tfCodiert.getText().equals("")) {
+				new Fehler().showErrorDialog("warning", "Haben Sie heute nichts zu sagen?",
+						"Nutzung von militärischer Infrastruktur ohne Grund ist verboten.");
+			} else {
+				sendeFunkspruch();
+			}
+		}
+		if (e.getSource() == btnEmpfangen) empfangeFunkspruch();
+		if (e.getSource() == btnDelete) loeschen();
+		if (e.getSource() == btnReset) {
+			codierer.resetHardware();
+			this.resetDisplay = true;
+			this.lblSpruchschluessel.setText("");
+			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 shiningLetter => "AN"  -> setzt Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf gelb
+	 *                      "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) {
+			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
+	 * @return => Kreis des chiffrierten Buchstabens (der leuchten soll)
+	 */
+	private Circle chiffCircle(char chiffLetter) {
+		switch (chiffLetter) {
+			case 'A':
+				return circA;
+			case 'B':
+				return circB;
+			case 'C':
+				return circC;
+			case 'D':
+				return circD;
+			case 'E':
+				return circE;
+			case 'F':
+				return circF;
+			case 'G':
+				return circG;
+			case 'H':
+				return circH;
+			case 'I':
+				return circI;
+			case 'J':
+				return circJ;
+			case 'K':
+				return circK;
+			case 'L':
+				return circL;
+			case 'M':
+				return circM;
+			case 'N':
+				return circN;
+			case 'O':
+				return circO;
+			case 'P':
+				return circP;
+			case 'Q':
+				return circQ;
+			case 'R':
+				return circR;
+			case 'S':
+				return circS;
+			case 'T':
+				return circT;
+			case 'U':
+				return circU;
+			case 'V':
+				return circV;
+			case 'W':
+				return circW;
+			case 'X':
+				return circX;
+			case 'Y':
+				return circY;
+			case 'Z':
+				return circZ;
+		}
+		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) {
+		if (mBtn.getId().equals(mBtnStartPos1.getId())) {
+			setzePosition(1, mItm.getText().charAt(0));
+			this.codierer.setzeWalzenPosition(0, mItm.getText().charAt(0));
+		}
+		if (mBtn.getId().equals(mBtnStartPos2.getId())) {
+			setzePosition(2, mItm.getText().charAt(0));
+			this.codierer.setzeWalzenPosition(1, mItm.getText().charAt(0));
+		}
+		if (mBtn.getId().equals(mBtnStartPos3.getId())) {
+			setzePosition(3, mItm.getText().charAt(0));
+			this.codierer.setzeWalzenPosition(2, mItm.getText().charAt(0));
+		}
+		if (mBtn.getId().equals(mBtnWalzPos1.getId())) {
+            setzeWalze(1, mItm.getText());
+            if (!mBtnWalzPos1.getText().equals(mBtnWalzPos2.getText()) &&
+                    !mBtnWalzPos1.getText().equals(mBtnWalzPos3.getText())) {
+				this.codierer.setzeWalzeNr(0,
+                        convertRoemischToZahl(mItm.getText()) + 1,
+                        mBtnNotchPos1.getText().charAt(0));
+			} else {
+				setzeWalze(1, convertZahlToRoemisch(this.codierer.fetchWalzenNr(0)));
+				new Fehler().showErrorDialog("error",
+                        "Walze nicht gefunden",
+                        "Es scheint so das wir von jeder Walze nur eine da haben");
+			}
+		}
+		if (mBtn.getId().equals(mBtnWalzPos2.getId())) {
+            setzeWalze(2, mItm.getText());
+            if (!mBtnWalzPos1.getText().equals(mBtnWalzPos2.getText()) &&
+                    !mBtnWalzPos2.getText().equals(mBtnWalzPos3.getText())) {
+				this.codierer.setzeWalzeNr(1,
+                        convertRoemischToZahl(mItm.getText()) + 1,
+                        mBtnNotchPos2.getText().charAt(0));
+			} else {
+				setzeWalze(2, convertZahlToRoemisch(this.codierer.fetchWalzenNr(1)));
+				new Fehler().showErrorDialog("error",
+                        "Walze nicht gefunden",
+                        "Es scheint so das wir von jeder Walze nur eine da haben");
+			}
+		}
+		if (mBtn.getId().equals(mBtnWalzPos3.getId())) {
+            setzeWalze(3, mItm.getText());
+            if (!mBtnWalzPos1.getText().equals(mBtnWalzPos3.getText()) &&
+                    !mBtnWalzPos2.getText().equals(mBtnWalzPos3.getText())) {
+				this.codierer.setzeWalzeNr(2,
+                        convertRoemischToZahl(mItm.getText()) + 1,
+                        mBtnNotchPos3.getText().charAt(0));
+			} else {
+				setzeWalze(3, convertZahlToRoemisch(this.codierer.fetchWalzenNr(2)));
+				new Fehler().showErrorDialog("error",
+                        "Walze nicht gefunden",
+                        "Es scheint so das wir von jeder Walze nur eine da haben");
+			}
+		}
+		if (mBtn.getId().equals(mBtnNotchPos1.getId())) {
+			setzeRing(1, Integer.parseInt(mItm.getText()) - 1);
+			this.codierer.setzeRing(0, Integer.parseInt(mItm.getText()) - 1);
+		}
+		if (mBtn.getId().equals(mBtnNotchPos2.getId())) {
+			setzeRing(2, Integer.parseInt(mItm.getText()) - 1);
+			this.codierer.setzeRing(1, Integer.parseInt(mItm.getText()) - 1);
+		}
+		if (mBtn.getId().equals(mBtnNotchPos3.getId())) {
+			setzeRing(3, Integer.parseInt(mItm.getText()) - 1);
+			this.codierer.setzeRing(2, Integer.parseInt(mItm.getText()) - 1);
+		}
+		tfCodiert.setText("");
+		tfKlartext.setText("");
+	}
+
+	/**
+	 * Hier werden die TextFelder der ToggelButtons gesetzt, welche die Steckverbindungen darstellen,
+	 * mit den Werten die von der Klasse Codierer zur Verfügung gestellt werden.
+	 */
+	private void setzeSteckverbindungen() {
+		for (int i = 0; i <= 9; i++) {
+			tBtnPort[i].setText(codierer.fetchSteckverbindungen()[i][0] + ""
+					+ codierer.fetchSteckverbindungen()[i][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 Spruchschlüssel
+	 */
+	private void empfangeFunkspruch() {
+		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.");
+		}
+	}
+
+	/**
+	 * Senden der Nachricht mit Hilfe der Klasse Codierer
+	 * Löscht die Textfelder tfKlartext und tfCodiert
+	 */
+	private void sendeFunkspruch() {
+		this.tfKlartext.setText("");
+		this.tfCodiert.setText("");
+
+		progressDialogue("tx");
+	}
+
+	/**
+	 * TODO
+	 *
+	 * @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.setTitle("Kommunikation zum Funkraum");
+		if (strRxTx.equals("rx")) {
+			dialog.setContentText("Empfange Nachricht");
+		} else if (strRxTx.equals("tx")) {
+			dialog.setContentText("Sende Nachricht");
+		}
+		dialog.setHeaderText(null);
+		dialog.setGraphic(pi);
+		dialog.initStyle(StageStyle.UTILITY);
+		new Thread(copyWorker).start();
+		dialog.showAndWait();
+	}
+
+	/**
+	 * TODO
+	 *
+	 * @param strRxTx : String : RX oder TX
+	 * @return boolean
+	 */
+	private Task createWorker(String strRxTx) {
+		return new Task() {
+			@Override
+			protected Object call() {
+				if (strRxTx.equals("rx")) {
+					empfangeneNachricht = codierer.empfangeNachricht();
+				} else if (strRxTx.equals("tx")) {
+					try {
+						codierer.sendeNachricht();
+					} catch (IOException e) {
+						e.printStackTrace();
+					}
+				}
+
+				return true;
+			}
+		};
+	}
+
+	/**
+	 * 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.lblSpruchschluessel.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]));
+		}
+	}
+
+	/**
+	 * Konvertiert eine rämische Zahl in eine arabische Zahl
+	 *
+	 * @param nummer : String : Römische Zahl
+	 * @return int : arabische Zahl
+	 */
+	private int convertRoemischToZahl(String nummer) {
+		int result = 0;
+
+		switch (nummer) {
+			case "I":
+				result = 0;
+				break;
+			case "II":
+				result = 1;
+				break;
+			case "III":
+				result = 2;
+				break;
+			case "IV":
+				result = 3;
+				break;
+			case "V":
+				result = 4;
+				break;
+			default:
+				break;
+		}
+		return result;
+	}
+
+	/**
+	 * Konvertiert eine arabische Zahl in eine rämische Zahl
+	 *
+	 * @param nummer : int : arabische Zahl
+	 * @return String : römische Zahl
+	 */
+	private String convertZahlToRoemisch(int nummer) {
+		String result = "";
+
+		switch (nummer) {
+			case 0:
+				result = "I";
+				break;
+			case 1:
+				result = "II";
+				break;
+			case 2:
+				result = "III";
+				break;
+			case 3:
+				result = "IV";
+				break;
+			case 4:
+				result = "V";
+				break;
+			default:
+				break;
+		}
+		return result;
+	}
+
+	/**
+	 * 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) {
+		switch (walzenPosition) {
+			case 1:
+				mBtnWalzPos1.setText(walzenNr[convertRoemischToZahl(walzeRoemischNr)]);
+				break;
+			case 2:
+				mBtnWalzPos2.setText(walzenNr[convertRoemischToZahl(walzeRoemischNr)]);
+				break;
+			case 3:
+				mBtnWalzPos3.setText(walzenNr[convertRoemischToZahl(walzeRoemischNr)]);
+				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) {
+		switch (walzenPosition) {
+			case 1:
+				mBtnWalzPos1.setText(walzenNr[walzeNr - 1]);
+				//codierer.setWalze(walzeNr, walzenPosition)
+				break;
+			case 2:
+				mBtnWalzPos2.setText(walzenNr[walzeNr - 1]);
+				break;
+			case 3:
+				mBtnWalzPos3.setText(walzenNr[walzeNr - 1]);
+				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
+		setzeSteckverbindungen();
+
+		// Setzt das Steckbrett
+		generateSteckbrett();
+
+		// Felder zurück setzen
+		this.textCodiert = "";
+		this.textEingabe = "";
+		this.tfKlartext.setText("");
+		this.tfCodiert.setText("");
+	}
+
+	/**
+	 * TODO: Doku
+	 *
+	 * @param kenngruppe : String : Die Kenngruppe die gesetzt werden soll
+	 */
+	void setKenngruppe(String kenngruppe) {
+
+		// Initialisieren des Codierers und setzen der Kenngruppe
+		codierer = new Codierer(kenngruppe.toUpperCase());
+
+		this.codierer.resetHardware();
+
+		//Setzt die Kenngruppe in der GUI
+		lblKenngruppe.setText("Kenngruppe: " + this.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();
+	}
+
+	private enum BUCHSTABE_LEUCHTET {AN, AUS}
+	//endregion
 }
diff --git a/src/main/java/projekt/enigma/model/Codierer.java b/src/main/java/projekt/enigma/model/Codierer.java
index ff768c68e1e7683d1b066b34e4d5d6ec55aa9488..6fa901140aa87c852570c26e7f472e26d22343f5 100644
--- a/src/main/java/projekt/enigma/model/Codierer.java
+++ b/src/main/java/projekt/enigma/model/Codierer.java
@@ -345,6 +345,25 @@ public class Codierer {
         return this.hardware.getSteckbrett().fetchVerfuegbareBuchstaben(port);
     }
     //endregion
+    /** Gibt die Walzennummer einer Walze auf Position (walzePos) zurück
+    *
+    * @param walzePos : int : Position der Walze
+    * @return int : Nummer der eingesetzten Walze
+    */
+	public int fetchWalzenNr(int walzePos) {
+	    return this.hardware.getWalzen()[walzePos].getWalzenNr();
+    }
+
+	/**
+	 * Ueberprueft welche Buchstaben noch zur Vertauschung verfügbar sind
+	 *
+	 * @param port: Zahl zwischen 0-9: entspricht der Kabelnummer.
+	 * @return String: liefert einen String mit den verfuegbaren Buchstaben zurueck.
+	 */
+	public String fetchVerfuegbareBuchstaben(int port) {
+		return this.hardware.getSteckbrett().fetchVerfuegbareBuchstaben(port);
+	}
+	//endregion
 
     //region codierer
 
diff --git a/src/main/java/projekt/enigma/model/Walze.java b/src/main/java/projekt/enigma/model/Walze.java
index b064f6910f70aed6d735be95af321c65406ec622..eebb0ff1799d96dd6a301a0acb01b4fe3e8e22fd 100644
--- a/src/main/java/projekt/enigma/model/Walze.java
+++ b/src/main/java/projekt/enigma/model/Walze.java
@@ -70,7 +70,7 @@ public class Walze {
 	 * @param richtung : int : 1 dreht die Walze weiter und -1 dreht sie einen Schritt zurueck
 	 * @return checkRing : boolean : gibt true zurueck wenn der Umspringpunkt erreicht wurde
 	 */
-	public boolean dreheWalze(int richtung) {
+	boolean dreheWalze(int richtung) {
 		boolean checkRing = false;
 		int korrekturFaktor = 0;
 
@@ -108,7 +108,7 @@ public class Walze {
 	 * @param buchstabe : char : Buchstabe, der decodiert werden soll
 	 * @return char : decodierter Buchstabe
 	 */
-	public char codiere2(char buchstabe) {
+	char codiere2(char buchstabe) {
 		return this.alphabet.charAt((this.fetchWalze().indexOf(buchstabe) - this.turns + 260) % 26);
 	}
 
@@ -127,7 +127,7 @@ public class Walze {
 	 *
 	 * @param walzenNr : int : Walzennummer
 	 */
-	public void setWalzenNr(int walzenNr) {
+	private void setWalzenNr(int walzenNr) {
 		if ((walzenNr > 0) && (walzenNr < 6)) {
 			this.walzenNr = walzenNr - 1;
 		} else {
@@ -144,7 +144,7 @@ public class Walze {
 	 *
 	 * @param ringstellung : int : Punkt an dem die Nachbarwalze umspringt
 	 */
-	public void setRingstellung(int ringstellung) {
+	void setRingstellung(int ringstellung) {
 		if ((ringstellung > 0) && (ringstellung <= 26)) {
 			this.ringstellung = this.alphabet.charAt(ringstellung - 1);
 		} else {
@@ -158,7 +158,7 @@ public class Walze {
 	 *
 	 * @param buchstabe : Character : Einstellung der Walze
 	 */
-	public void setPosition(Character buchstabe) {
+	void setPosition(Character buchstabe) {
 		this.turns = alphabet.indexOf(buchstabe);
 	}
 	//endregion
@@ -169,8 +169,12 @@ public class Walze {
 	 *
 	 * @return char : Ermittelte stelle im Alphabet, anhand der aktuellen Anzahl der Drehungen
 	 */
-	public Character getPosition() {
+	Character getPosition() {
 		return this.alphabet.charAt(turns % 26);
 	}
+
+	int getWalzenNr() {
+		return this.walzenNr;
+	}
 	//endregion
 }
\ No newline at end of file
diff --git a/src/main/java/projekt/enigma/view/ChkBoxGridPane.java b/src/main/java/projekt/enigma/view/ChkBoxGridPane.java
new file mode 100644
index 0000000000000000000000000000000000000000..bd47f665bdb95e920fc7e2b891d4d0a633dc3cc4
--- /dev/null
+++ b/src/main/java/projekt/enigma/view/ChkBoxGridPane.java
@@ -0,0 +1,74 @@
+package projekt.enigma.view;
+
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ContentDisplay;
+import javafx.scene.control.Label;
+import javafx.scene.layout.GridPane;
+
+public class ChkBoxGridPane extends GridPane {
+    /*private static JPanel panel = new JPanel();*/
+    private static CheckBox[] checkbox;
+    private static Character[] alphabet;/* = {'A','B','C','D'};*/
+    private static int charSize;
+
+    public ChkBoxGridPane(Character[] alphabet) {
+        this.charSize = alphabet.length;
+        this.alphabet = alphabet;
+        initializeComponents();
+    }
+
+    /**
+     * Es wird ein GridPane erzeugt, das zwei Spalten und abhängig von der Länge des
+     * Arrays (Character[] alphabet) Reihen hat. Das Label der CheckBoxen soll
+     * abhängig von deren Index links bzw. recht erzeugt werden
+     */
+    private void initializeComponents() {
+        this.checkbox = new CheckBox[charSize];
+        /* => bei ungerader Anzahl Buchstaben
+         *CheckBox und deren Label erzeugen,  bei geraden Index Zahlen
+         * das Label rechts setzen bei ungeraden links
+         */
+        if (!(charSize % 2 == 0)) {
+            for (int i = 0; i < charSize; i++) {
+                Label lb = new Label(alphabet[i] + "");
+                lb.setGraphic(checkbox[i] = new CheckBox());
+                if(i%2==0)lb.setContentDisplay(ContentDisplay.RIGHT);
+                else if(!(i%2==0)) lb.setContentDisplay(ContentDisplay.LEFT);
+                this.add(checkbox[i],2,(charSize + 1) / 2);
+                //if (i==0)checkbox[0].setSelected(true);
+            }
+
+        }
+        /* => bei gerader Anzahl Buchstaben
+         *CheckBox und deren Label erzeugen,  bei geraden Index Zahlen
+         * das Label rechts setzen bei ungeraden links
+         */
+        else {
+            for (int i = 0; i < charSize; i++) {
+                Label lb = new Label(alphabet[i] + "");
+                lb.setGraphic(checkbox[i] = new CheckBox());
+                if(i%2==0)lb.setContentDisplay(ContentDisplay.RIGHT);
+                else if(!(i%2==0)) lb.setContentDisplay(ContentDisplay.LEFT);
+                this.add(checkbox[i],2,(charSize / 2));
+            }
+        }
+        this.setVisible(true);
+    }
+
+    /**
+     * Prüft welche CheckBox aus gewählt und gibt deren
+     * Index zurück
+     * @return
+     */
+    private Integer isCheckedChkBoxIndex() {
+        for (int i = 0; i < charSize; i++) {
+            if (checkbox[i].isSelected()) {
+                return i;
+            } else {
+               return null;
+            }
+        }
+        return null;
+    }
+}
+
diff --git a/src/main/java/projekt/enigma/view/ChkBoxPanel.java b/src/main/java/projekt/enigma/view/ChkBoxPanel.java
deleted file mode 100644
index 04b93074aa47a1b13447584a66b580b8c8a2d284..0000000000000000000000000000000000000000
--- a/src/main/java/projekt/enigma/view/ChkBoxPanel.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package projekt.enigma.view;
-
-import java.awt.*;
-import javax.swing.*;
-
-public class ChkBoxPanel extends JPanel {
-    /*private static JPanel panel = new JPanel();*/
-    private static JCheckBox[] checkbox;
-    private static Character[] alphabet;/* = {'A','B','C','D'};*/
-    private static int charSize;
-
-    public ChkBoxPanel(Character[] alphabet) {
-        this.charSize = alphabet.length;
-        this.alphabet = alphabet;
-        /*this.setTitle("Vertausche Buchstaben");
-        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/
-        this.setSize(30, charSize * 25);
-        //this.setLocation(getMousePosition()/*.x, getMousePosition().y+this.getHeight()+30*/);
-        initializeComponents();
-    }
-
-    private void initializeComponents() {
-        this.checkbox = new JCheckBox[charSize];
-        GridLayout panelLayout = new GridLayout();
-        this.setLayout(panelLayout);
-        if (!(charSize % 2 == 0)) {
-            this.setSize(30, (charSize + 1) * 20);
-            panelLayout.setRows((charSize + 1) / 2);
-        } else {
-            this.setSize(30, charSize * 10);
-            panelLayout.setRows(charSize / 2);
-        }
-        panelLayout.setColumns(2);
-        //panelLayout.setVgap(5);
-        //panelLayout.setHgap(-5);
-
-
-        for (int i = 0; i < charSize; i++) {
-            checkbox[i] = new JCheckBox(alphabet[i] + "");
-            checkbox[i].setSize(15, 20);
-            checkbox[i].setHorizontalTextPosition(SwingConstants.CENTER);
-            checkbox[i].setVerticalTextPosition(SwingConstants.TOP);
-/*            if (!(i%2==0)){
-            }*/
-            checkbox[i].setMargin(new Insets(0, 20, 0, 20));
-            //checkbox[i].setLocation(20, (i + 1) * 30);
-            this.add(checkbox[i]);
-        }
-        /* this.getContentPane().add(panel);*/
-        checkbox[0].setSelected(true);
-        //this.add(panel);
-        //this.setLocation(100, 100);
-        this.setVisible(true);
-    }
-
-
-    private int isChecked() {
-        for (int i = 0; i < charSize; i++) {
-            if (checkbox[i].isSelected()) {
-
-                // do something...
-
-            } else {
-
-                // do something else...
-
-            }
-        }
-        return 0;
-    }
-
-
-}
-