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