diff --git a/src/main/java/projekt/enigma/model/Codierer.java b/src/main/java/projekt/enigma/model/Codierer.java index c12c1e827d48c65f9db8aaf25d2563fcdb730454..bc724b67d83d2c395daf40cbec40e2bb6fc4a42f 100644 --- a/src/main/java/projekt/enigma/model/Codierer.java +++ b/src/main/java/projekt/enigma/model/Codierer.java @@ -283,14 +283,13 @@ public class Codierer { * * @param port : int : Kabel Nummer, welches am Steckbrett eingesteckt wird. * @param verbindung : String : Verbindung, welche die vertauschten Buchstaben angibt. - * @return boolean : Wenn true, darf das Kabel gesteckt werden, wenn false, steckt da bereits schon eines. */ - public boolean setzeSteckbrett(int port, String verbindung) { + public void setzeSteckbrett(int port, String verbindung) { if (verbindung.equals("")) { verbindung = " "; } - return this.hardware.getSteckbrett().setzeVertauschung(port, verbindung.charAt(0), verbindung.charAt(1)); + this.hardware.getSteckbrett().setzeVertauschung(port, verbindung.charAt(0), verbindung.charAt(1)); } //endregion diff --git a/src/main/java/projekt/enigma/model/Walze.java b/src/main/java/projekt/enigma/model/Walze.java index 46eafd21b7002875f91a349f83b1eaf6aa4d8c66..cd2324cb51c59469af1f51245a1e5bcae6eb603b 100644 --- a/src/main/java/projekt/enigma/model/Walze.java +++ b/src/main/java/projekt/enigma/model/Walze.java @@ -131,7 +131,6 @@ public class Walze { * * @param walzenNr : int : Walzennummer. */ - //TODO: Überprüfung notwendig? Wo findet Überprüfung statt? private void setWalzenNr(int walzenNr) { if ((walzenNr > 0) && (walzenNr < 6)) { this.walzenNr = walzenNr - 1; diff --git a/src/main/java/projekt/enigma/view/ChkBoxGridPane.java b/src/main/java/projekt/enigma/view/ChkBoxGridPane.java index 395dac8569059894936b70fc20ab8e44617f44d6..209bf39a7e81921a17be825f3251d6e877ddba1c 100644 --- a/src/main/java/projekt/enigma/view/ChkBoxGridPane.java +++ b/src/main/java/projekt/enigma/view/ChkBoxGridPane.java @@ -10,22 +10,40 @@ import projekt.enigma.model.Codierer; import java.util.Arrays; /** - * TODO: Doku + * Die Klasse ChkBoxGripPane erweitert das GridPane Objekt. + * Wir erstellen ein GridPane in welches Checkboxen gelegt werden. + * Die Anzahl der Checkboxen wird durch die verfuegbarenBuchstaben festgelegt. + * Für jeden Buchstaben in diesem char Array, wird eine Checkbox erstellt und auf das Gridpane gelegt. */ public class ChkBoxGridPane extends GridPane { + + // Der globale Checkbox Array private CheckBox[] checkbox; + // Die Buchstaben die für das jeweilige Pane selectiert werden sollen private String checkedBuchstaben; + // Die Anzahl der möglichen Checkboxen private int charSize; + // Das Codierer Objekt. Dieses wird benötigt um auf die Funktionen für das Steckbrett zuzugreifen private Codierer codierer; + // Der Steckbrett Port für welchen das Pane und die Checkboxen erstellt werden sollen private int port; + // Die verfügbaren Buchstaben für den jeweiligen Port private char[] verfuegbareBuchstaben; + // Das Button Objekt des Ports über den dieses Pane gesteuert wird private ToggleButton tBtnPort; /** - * TODO: Doku + * Hier werfen wir die Checkboxen auf das Gridpane und weißen ihnen die Propertys zu. + * Außerdem wird hier auch der Listener generiert womit wir prüfen ob die maximale Auswahlmöglichkeit + * erreicht ist. + * Es können maximal zwei Checkboxen ausgewählt werden. Wenn zwei erreicht sind, werden die restlichen Checkboxen + * deaktiviert. Wenn nur noch eine oder keine Box ausgewählt ist, werden die restlichen wieder aktiviert. + * Bei null und zwei Boxen, werden die Buchstaben in das Steckbrett geschrieben. + * Andere Auswahlmöglchkeiten stehen nicht zur Verfügung, da ein Kabel nur zwei Enden hat in der Regel. * - * @param codierer : Codierer + * @param codierer : Codierer Objekt * @param port : int + * @param tBtnPort : ToogleButton */ public ChkBoxGridPane(Codierer codierer, int port, ToggleButton tBtnPort) { this.codierer = codierer; @@ -48,8 +66,7 @@ public class ChkBoxGridPane extends GridPane { this.setAlignment(Pos.CENTER); - System.out.println("----->>>>>" + String.valueOf(this.verfuegbareBuchstaben)); - + // Für jeden verfügbaren Buchstaben einen Durchlauf for (int i = 0; i < this.verfuegbareBuchstaben.length; i++) { if (this.verfuegbareBuchstaben[i] != 20 && this.verfuegbareBuchstaben[i] != ' ') { checkbox[i] = new CheckBox(this.verfuegbareBuchstaben[i] + ""); @@ -66,15 +83,18 @@ public class ChkBoxGridPane extends GridPane { checkbox[i].setDisable(false); } + // Der Listener für die jeweilige Checkbox checkbox[i].selectedProperty().addListener((observable, oldValue, newValue) -> { String portSelection = ""; int zaehler = 0; + // Die selektierten Chechkboxen zählen for (CheckBox cb : checkbox) { if (cb != null && cb.isSelected()) { zaehler++; } } + // Wenn nur eine oder keine Checkbox ausgewählt ist if (zaehler == 1 || zaehler == 0) { for (CheckBox cb : checkbox) { if (cb != null && cb.isDisabled()) { @@ -82,10 +102,14 @@ public class ChkBoxGridPane extends GridPane { } } } + // Es ist keine Checkbox ausgewählt if (zaehler == 0) { + // Daten ins Steckbrett schreiben this.codierer.setzeSteckbrett(this.port, ""); + // Und den Button neu beschreiben tBtnPort.setText(portSelection); } + // Das Maximum an selektierten Checkboxen (2) ist erreicht if (zaehler == 2) { for (CheckBox cb : checkbox) { if (cb != null && !cb.isSelected()) { @@ -96,40 +120,28 @@ public class ChkBoxGridPane extends GridPane { } } } + // Daten ins Steckbrett schreiben this.codierer.setzeSteckbrett(this.port, ""); this.codierer.setzeSteckbrett(this.port, portSelection); + // Und den Button neu beschreiben tBtnPort.setText(portSelection); } }); + // Eine neue Row im Gridpane anlegen für den nächsten Button this.addRow(i + 1); this.add(checkbox[i], 2, i + 1, 1, 1); } } + // Das Pane anzeigen this.setVisible(true); } /** - * Prüft welche CheckBox aus gewählt und gibt deren - * Index zurück - * - * @return Integer - */ - private Integer isCheckedChkBoxIndex() { - for (int i = 0; i < charSize; i++) { - if (checkbox[i].isSelected()) { - return i; - } else { - return null; - } - } - return null; - } - - /** - * TODO: Doku + * Gibt den Anzahl der zur Verfügung stehenden Buchstaben zurück. + * Anhang dieses Wertes, wird die Anzahl der Checkboxen festgelegt. * - * @return + * @return int : Anzahl der möglcihen chars */ public int getCharSize() { return charSize;