diff --git a/src/main/java/projekt/enigma/App.java b/src/main/java/projekt/enigma/App.java index 553cceb55011f0c6fd0b8c8e39500c4cd98d97bf..fa705b2ed6d0f30ca2ffef815a19d5d05de37cdb 100644 --- a/src/main/java/projekt/enigma/App.java +++ b/src/main/java/projekt/enigma/App.java @@ -60,6 +60,8 @@ public class App extends Application { @Override public void start(Stage primaryStage) throws IOException { primaryStage.setTitle("Enigma"); + primaryStage.setResizable(false); + Label lblEingbae = new Label("Bitte Kenngruppe eingeben!"); TextField tfEingabe = new TextField(); Button btnKenngruppe = new Button("Kenngruppe setzen!"); diff --git a/src/main/java/projekt/enigma/GuiController.java b/src/main/java/projekt/enigma/GuiController.java index 0bacfd4f7d045c533bfc944e1c1fdec64062774d..64e863a087474ce8e95247a0f0aa5bfa87f9a025 100644 --- a/src/main/java/projekt/enigma/GuiController.java +++ b/src/main/java/projekt/enigma/GuiController.java @@ -3,18 +3,19 @@ package projekt.enigma; import javafx.concurrent.Task; import javafx.event.ActionEvent; import javafx.fxml.FXML; +import javafx.geometry.HPos; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.control.*; import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; import javafx.scene.layout.GridPane; -import javafx.scene.layout.Pane; import javafx.scene.shape.Circle; import javafx.stage.StageStyle; -import org.apache.http.HttpException; import org.controlsfx.dialog.ProgressDialog; import projekt.enigma.model.Codierer; import projekt.enigma.model.Fehler; +import projekt.enigma.view.ChkBoxGridPane; import java.io.IOException; import java.util.ArrayList; @@ -54,12 +55,13 @@ public class GuiController { //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 ChkBoxGridPane[] chkBoxGridPane; + @FXML private GridPane mainGrid; + @FXML + private AnchorPane anchorPane; /** * Initialisiert die Elemente GUI und setzt deren Startwerte @@ -71,7 +73,6 @@ public class GuiController { textCodiert = ""; resetDisplay = true; - //Einträge für Walzen menu(mBtnWalzPos1, walzenNr); menu(mBtnWalzPos2, walzenNr); @@ -86,24 +87,11 @@ public class GuiController { 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. @@ -148,81 +136,74 @@ public class GuiController { ArrayList<MenuItem> mItem = new ArrayList<>(); for (int i = 0; i < str.length; i++) { - //Eintrag aus str der Arraylist mi hinzufügen + // Eintrag aus str der Arraylist mi hinzufügen mItem.add(new MenuItem(str[i])); - //MenuItem mi dem Button button hinzufügen + // MenuItem mi dem Button button hinzufügen button.getItems().add(mItem.get(i)); int finalI = i; - //Listener für die einzelnen Einträge + // 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; + private void myToggleButtons() { + // this.codierer.setzeSteckbrett() + if (chkBoxGridPane != null) { + for (ChkBoxGridPane boxGridPane : chkBoxGridPane) { + anchorPane.getChildren().remove(boxGridPane); + } } - } + chkBoxGridPane = new ChkBoxGridPane[10]; - /** - * 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); + + for (int i = 0; i < chkBoxGridPane.length; i++) { + char[] verfuegbareBuchstaben = this.codierer.fetchVerfuegbareBuchstaben(i).toCharArray(); + char[] checkedBuchstaben = { + this.codierer.fetchSteckverbindungen()[i][0], + this.codierer.fetchSteckverbindungen()[i][1] + }; + Arrays.sort(verfuegbareBuchstaben); + + chkBoxGridPane[i] = new ChkBoxGridPane(verfuegbareBuchstaben); + chkBoxGridPane[i].setVisible(false); + chkBoxGridPane[i].setStyle("-fx-background-color: white; -fx-border-color: black;"); + chkBoxGridPane[i].setPrefHeight(chkBoxGridPane[i].getCharSize() * 20); + chkBoxGridPane[i].setPrefWidth(85.0); + chkBoxGridPane[i].setPadding(new Insets(10, 10, 10, 10)); + chkBoxGridPane[i].setAlignment(Pos.CENTER); + + tBtnPort[i] = new ToggleButton(checkedBuchstaben[0] + "" + checkedBuchstaben[1]); tBtnPort[i].setToggleGroup(cabelConnect); - GridPane.setMargin(tBtnPort[i], new Insets(0, 15, 0, 15)); + GridPane.setHalignment(tBtnPort[i], HPos.CENTER); + mainGrid.add(tBtnPort[i], i + 1, 8); + chkBoxGridPane[i].setLayoutX( + (anchorPane.getWidth() / 12) * (i + 1) - + ((chkBoxGridPane[i].getPrefWidth() - anchorPane.getWidth() / 12) / 2)); + chkBoxGridPane[i].setLayoutY( + mainGrid.getLayoutY() + ((anchorPane.getHeight() - + mainGrid.getLayoutY()) / 10 * 9) - chkBoxGridPane[i].getPrefHeight() - 15); + new Fehler().debug( + "mg LayoutY " + mainGrid.getLayoutY() + + " mg Height " + mainGrid.getHeight() + + " chkbox Height " + chkBoxGridPane[i].getHeight() + + " AP Height " + anchorPane.getHeight(), + false); + anchorPane.getChildren().add(chkBoxGridPane[i]); cabelConnect.selectedToggleProperty(). addListener((observable, oldValue, newValue) -> { //TODO for (int j = 0; j < 10; j++) { if (cabelConnect.getSelectedToggle() == tBtnPort[j]) { - switchPortVisible(j, true); + chkBoxGridPane[j].setVisible(true); } else if (cabelConnect.getSelectedToggle() != tBtnPort[j]) { - switchPortVisible(j, false); + chkBoxGridPane[j].setVisible(false); } } }); @@ -514,45 +495,45 @@ public class GuiController { 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())) { + 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)); + 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"); + "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())) { + 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)); + 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"); + "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())) { + 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)); + 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"); + "Walze nicht gefunden", + "Es scheint so das wir von jeder Walze nur eine da haben"); } } if (mBtn.getId().equals(mBtnNotchPos1.getId())) { @@ -571,17 +552,6 @@ public class GuiController { 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 @@ -903,10 +873,12 @@ public class GuiController { mBtnStartPos3.setText(String.valueOf(codierer.fetchWalzen()[2])); // Steckbrett Felder setzen - setzeSteckverbindungen(); + //setzeSteckverbindungen(); + + myToggleButtons(); // Setzt das Steckbrett - generateSteckbrett(); + //generateSteckbrett(); // Felder zurück setzen this.textCodiert = ""; @@ -935,7 +907,7 @@ public class GuiController { // Einstellungen aus dem Logbuch auslesen und setzen setzeTagesSchluessel(); - setzeSteckverbindungen(); + //setzeSteckverbindungen(); } private enum BUCHSTABE_LEUCHTET {AN, AUS} diff --git a/src/main/java/projekt/enigma/model/Codierer.java b/src/main/java/projekt/enigma/model/Codierer.java index 913b8db6d6cbfef4bed7c7b7f25448d0a112f431..87f4bff9b5cf866d1f192af0fdc8d94830ab8530 100644 --- a/src/main/java/projekt/enigma/model/Codierer.java +++ b/src/main/java/projekt/enigma/model/Codierer.java @@ -279,7 +279,6 @@ public class Codierer { /** - * TODO: Wird nicht benutzt * Setzt das Kabel in beide Ports ein und fuegt es dem Steckbrett-Array hinzu. * * @param port : int : Kabel Nummer, welches am Steckbrett eingesteckt wird. @@ -457,19 +456,6 @@ public class Codierer { //region Sonstige - /** - * TODO: Wird nicht benutzt - * Prueft ob der Port auf dem das Kabel gesteckt werden soll, noch frei ist. - * <p> - * setSteckbrett ausfuehren mit beiden Buchstaben als String. - * - * @param buchstabe : char : Der zuletzt eingegebene Buchstabe. - * @return boolean : Wenn der Buchstabe nicht vorhanden ist, wird true zurueckgegeben, ansonsten false. - */ - public boolean pruefeSteckbrettPort(char buchstabe) { - return this.hardware.getSteckbrett().ueberpruefeVertauschungen(buchstabe); - } - /** * Liest aus der empfangenen Nachricht den Spruchschluessel aus und gibt ihn zurueck. * @@ -490,6 +476,7 @@ public class Codierer { this.nachricht = this.nachricht.substring(0, this.nachricht.length() - 1); } //endregion + //endregion //region Getter diff --git a/src/main/java/projekt/enigma/model/Hardware.java b/src/main/java/projekt/enigma/model/Hardware.java index 80bedb3ea116b12a71a930b5b4e2c389a8f0fbf6..b43e18b909a9b55609e320c36ae356b901e1df51 100644 --- a/src/main/java/projekt/enigma/model/Hardware.java +++ b/src/main/java/projekt/enigma/model/Hardware.java @@ -15,24 +15,24 @@ package projekt.enigma.model; */ public class Hardware { - //region Variablen - /** - * walzen: Walze-Array: erzeugt ein privates Array mit der die Anzahl der Walzen festgelegt wird. - */ - private Walze[] walzen; + //region Variablen + /** + * walzen: Walze-Array: erzeugt ein privates Array mit der die Anzahl der Walzen festgelegt wird. + */ + private Walze[] walzen; - /** - * steckbrett: Steckbrett: erzeugt ein privates Steckbrett-Objekt - */ - private Steckbrett steckbrett; + /** + * steckbrett: Steckbrett: erzeugt ein privates Steckbrett-Objekt + */ + private Steckbrett steckbrett; - /** - * reflektor: Reflektor: erzeugt ein privates Reflektor-Objekt. - */ - private Reflektor reflektor; - //endregion + /** + * reflektor: Reflektor: erzeugt ein privates Reflektor-Objekt. + */ + private Reflektor reflektor; + //endregion - //region Konstruktor + //region Konstruktor /** * Im Konstruktor legen wir die Anzahl der Walzen fest, welche die Hardware aufnehmen kann. @@ -43,7 +43,7 @@ public class Hardware { } //endregion - //region Funktionen & Methoden + //region Funktionen & Methoden /** * Setzt eine Walze ein. @@ -94,7 +94,7 @@ public class Hardware { this.walzen[2].getPosition()); debug += "\nI\tS\t3\t2\t1\tR\t1\t2\t3\tS\n" + buchstabe; - this.dreheWalzen(1); + this.dreheWalzen(1); //Codiere Vorgang wird fuer jede Walze bis zum Reflektor mit der codiere Funktion durchgefuehrt. //Auf dem Rueckweg wird mit der codiere2 Funktion codiert. @@ -118,8 +118,8 @@ public class Hardware { debug += "\t" + buchstabe; new Fehler().debug(debug, false); - return buchstabe; - } + return buchstabe; + } /** * Nach jeder Codierung eines Buchstabens muessen die Walzen gedreht werden. @@ -148,7 +148,7 @@ public class Hardware { } //endregion - //region Setter + //region Setter /** * Setzt eine Walze ein und speichert das Objekt im Walzen Array. @@ -180,7 +180,7 @@ public class Hardware { } //endregion - //region Getter + //region Getter /** * Setzt den Reflektor ein. diff --git a/src/main/java/projekt/enigma/model/Walze.java b/src/main/java/projekt/enigma/model/Walze.java index 52ddcebfe16f2803dccbb98733b60a913db2dda7..46eafd21b7002875f91a349f83b1eaf6aa4d8c66 100644 --- a/src/main/java/projekt/enigma/model/Walze.java +++ b/src/main/java/projekt/enigma/model/Walze.java @@ -81,7 +81,7 @@ public class Walze { if ((richtung == -1) || (richtung == 1)) { if (richtung == 1) { this.turns++; - } else if (richtung == -1) { + } else { korrekturFaktor = 1; this.turns--; } diff --git a/src/main/java/projekt/enigma/view/ChkBoxGridPane.java b/src/main/java/projekt/enigma/view/ChkBoxGridPane.java index 61db71fcce93ee6151a2f8825cffd2a357be3ee5..6b762fa9c4fe24de551ec84e8c514cdbefad051e 100644 --- a/src/main/java/projekt/enigma/view/ChkBoxGridPane.java +++ b/src/main/java/projekt/enigma/view/ChkBoxGridPane.java @@ -1,19 +1,24 @@ package projekt.enigma.view; +import javafx.geometry.Pos; import javafx.scene.control.CheckBox; -import javafx.scene.control.ContentDisplay; -import javafx.scene.control.Label; import javafx.scene.layout.GridPane; +/** + * TODO: Doku + */ 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; + private CheckBox[] checkbox; + private char[] alphabet; + private int charSize; - public ChkBoxGridPane(Character[] alphabet) { + /** + * TODO: Doku + * @param alphabet + */ + public ChkBoxGridPane(char[] alphabet) { charSize = alphabet.length; - ChkBoxGridPane.alphabet = alphabet; + this.alphabet = alphabet; initializeComponents(); } @@ -24,25 +29,13 @@ public class ChkBoxGridPane extends GridPane { */ private void initializeComponents() { checkbox = new CheckBox[charSize]; + this.setAlignment(Pos.CENTER); - /* - * => bei ungerader Anzahl Buchstaben - * CheckBox und deren Label erzeugen, bei geraden Index Zahlen - * das Label rechts setzen bei ungeraden links - * => bei gerader Anzahl Buchstaben - * CheckBox und deren Label erzeugen, bei geraden Index Zahlen - * das Label rechts setzen bei ungeraden links - */ - 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); - if (!(charSize % 2 == 0)) { - this.add(checkbox[i], 2, (charSize + 1) / 2); - } else { - this.add(checkbox[i], 2, (charSize / 2)); - } + for (int i = 0; i < alphabet.length; i++) { + checkbox[i] = new CheckBox(alphabet[i] + ""); + + this.addRow(i + 1); + this.add(checkbox[i], 2, i + 1, 1, 1); //if (i==0)checkbox[0].setSelected(true); } this.setVisible(true); @@ -64,5 +57,13 @@ public class ChkBoxGridPane extends GridPane { } return null; } + + /** + * TODO: Doku + * @return + */ + public int getCharSize() { + return charSize; + } } diff --git a/src/main/resources/projekt/enigma/gui.fxml b/src/main/resources/projekt/enigma/gui.fxml index 112562e09592f1df01b708792a700174697fdab3..2fb0e1dd7cd965f66218918d708e51b6990fda7f 100644 --- a/src/main/resources/projekt/enigma/gui.fxml +++ b/src/main/resources/projekt/enigma/gui.fxml @@ -1,20 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<?import javafx.geometry.Insets?> -<?import javafx.scene.control.Button?> -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.MenuButton?> -<?import javafx.scene.control.ProgressIndicator?> -<?import javafx.scene.control.TextField?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.ColumnConstraints?> -<?import javafx.scene.layout.GridPane?> -<?import javafx.scene.layout.Pane?> -<?import javafx.scene.layout.RowConstraints?> -<?import javafx.scene.shape.Circle?> -<?import javafx.scene.text.Font?> +<?import javafx.geometry.*?> +<?import javafx.scene.control.*?> +<?import javafx.scene.layout.*?> +<?import javafx.scene.shape.*?> +<?import javafx.scene.text.*?> -<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="677.0" prefWidth="962.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="projekt.enigma.GuiController"> +<AnchorPane fx:id="anchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="677.0" prefWidth="962.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="projekt.enigma.GuiController"> <GridPane layoutX="23.0" layoutY="60.0" prefHeight="158.0" prefWidth="237.0" AnchorPane.leftAnchor="23.0" AnchorPane.topAnchor="60.0"> <columnConstraints> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> @@ -62,7 +54,7 @@ <Label fx:id="lblSpruchschluessel" prefHeight="17.0" prefWidth="181.0" GridPane.columnIndex="1" /> <Button fx:id="btnReset" mnemonicParsing="false" onAction="#gedrueckteTaste" text="Zurücksetzen" GridPane.rowIndex="1" /> </GridPane> - <GridPane fx:id="mainGrid" layoutX="6.0" layoutY="294.0" prefHeight="377.0" prefWidth="952.0" AnchorPane.bottomAnchor="6.0" AnchorPane.leftAnchor="6.0" AnchorPane.rightAnchor="9.0" AnchorPane.topAnchor="294.0"> + <GridPane fx:id="mainGrid" layoutX="6.0" layoutY="294.0" prefHeight="377.0" prefWidth="952.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="300.0"> <columnConstraints> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> @@ -583,38 +575,8 @@ <Insets left="42.0" /> </GridPane.margin> </Label> - <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="7"> - <Pane fx:id="portPane0" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> - </Pane> - <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="7"> - <Pane fx:id="portPane1" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> - </Pane> - <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="7"> - <Pane fx:id="portPane2" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> - </Pane> - <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="4" GridPane.rowIndex="7"> - <Pane fx:id="portPane3" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> - </Pane> - <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="5" GridPane.rowIndex="7"> - <Pane fx:id="portPane4" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> - </Pane> - <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="6" GridPane.rowIndex="7"> - <Pane fx:id="portPane5" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> - </Pane> - <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="7" GridPane.rowIndex="7"> - <Pane fx:id="portPane6" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> - </Pane> - <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="8" GridPane.rowIndex="7"> - <Pane fx:id="portPane7" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> - </Pane> - <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="9" GridPane.rowIndex="7"> - <Pane fx:id="portPane8" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> - </Pane> - <Pane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="10" GridPane.rowIndex="7"> - <Pane fx:id="portPane9" layoutX="-8.0" layoutY="-307.0" prefHeight="350.0" prefWidth="85.0" style="-fx-background-color: lightgrey;" visible="false" /> - </Pane> </GridPane> - <GridPane layoutX="297.0" layoutY="64.0" prefHeight="168.0" prefWidth="585.0" AnchorPane.leftAnchor="297.0" AnchorPane.rightAnchor="80.0" AnchorPane.topAnchor="64.0"> + <GridPane layoutX="297.0" layoutY="64.0" prefHeight="168.0" prefWidth="585.0"> <columnConstraints> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> @@ -640,7 +602,7 @@ </GridPane.margin> </Button> </GridPane> - <Label fx:id="lblKenngruppe" layoutX="682.0" layoutY="34.0" prefHeight="17.0" prefWidth="177.0" AnchorPane.leftAnchor="682.0" AnchorPane.rightAnchor="103.0" AnchorPane.topAnchor="34.0" /> + <Label fx:id="lblKenngruppe" layoutX="682.0" layoutY="34.0" prefHeight="17.0" prefWidth="177.0" /> <Pane layoutX="266.0" layoutY="194.0" prefHeight="200.0" prefWidth="354.0" style="-fx-background-color: white; -fx-border-color: black;" visible="false"> <ProgressIndicator layoutX="127.0" layoutY="70.0" prefHeight="99.0" prefWidth="101.0" /> <Label layoutX="79.0" layoutY="27.0" text="Kommunikation mit Funkraum...">