diff --git a/src/main/java/projekt/enigma/App.java b/src/main/java/projekt/enigma/App.java index 2e97208367f7280086e9b398514f64729c03c610..249e13c9ef79c1d500911be49936702e4d6d2f3b 100644 --- a/src/main/java/projekt/enigma/App.java +++ b/src/main/java/projekt/enigma/App.java @@ -1,7 +1,6 @@ package projekt.enigma; import javafx.application.Application; -import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; @@ -9,7 +8,6 @@ import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyEvent; import javafx.scene.layout.VBox; import javafx.stage.Stage; import projekt.enigma.model.Fehler; @@ -25,85 +23,64 @@ public class App extends Application { private static String kenngruppe; private static GuiController gc; - private static int debug; - Scene sce1, sce2; - - private static Parent loadFXML(String fxml) throws IOException { - FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml")); - Parent result = fxmlLoader.load(); - - if (fxml.equals("gui")) { - gc = fxmlLoader.getController(); - gc.setKenngruppe(kenngruppe); - } - - return result; - } + private static int debug; public static void main(String[] args) { - debug = 1; + debug = 1; launch(args); } - public static int getDebug() { - return debug; - } - - public static void setDebug(int debug) { - App.debug = debug; - } + public static int getDebug() { + return debug; + } - @Override + @Override public void start(Stage primaryStage) throws IOException { primaryStage.setTitle("Kenngruppenabfrage"); - //Scene 1 Label label1 = new Label("Bitte Kenngruppe eingeben!"); label1.setTranslateX(55); Label l1 = new Label(""); Label l2 = new Label(""); TextField tfield = new TextField(); Button button1 = new Button("Kenngruppe setzen!"); + VBox layout1 = new VBox(); - - VBox layout1 = new VBox(); - - tfield.setOnKeyPressed(e -> { - if (e.getCode() == KeyCode.ENTER) { - if(enter(tfield.getText())) { - kenngruppe = tfield.getText(); - - try { - primaryStage.setScene(new Scene(loadFXML("gui"), 962, 677)); - } catch (IOException ex) { - ex.printStackTrace(); - } - } else { - tfield.setStyle("-fx-background-color:#FF0000"); - tfield.setText("Fehlerhafte Kenngruppe!"); - } - } - }); + layout1.getChildren().addAll(label1, l1, tfield, l2, button1); + Scene sceKenngruppe = new Scene(layout1, 234, 137); + + FXMLLoader guiLoader = new FXMLLoader(App.class.getResource("gui.fxml")); + + Scene sceApp = new Scene(guiLoader.load(), 962, 677); + + tfield.setOnKeyPressed(e -> { + if (e.getCode() == KeyCode.ENTER) { + if (enter(tfield.getText())) { + gc = guiLoader.getController(); + gc.setKenngruppe(tfield.getText()); + primaryStage.setScene(sceApp); + } else { + tfield.setText(""); + new Fehler().showErrorDialog("error", "Kenngruppe falsch", + "Regeln für die Kenngruppe: max. 8 Zeichen und nur Buchstaben von A-Z."); + } + } + }); button1.setOnAction(e -> { - if(enter(tfield.getText())) { - try { - primaryStage.setScene(new Scene(loadFXML("gui"), 962, 677)); - } catch (IOException ex) { - ex.printStackTrace(); - } + if (enter(tfield.getText())) { + gc = guiLoader.getController(); + gc.setKenngruppe(tfield.getText()); + primaryStage.setScene(sceApp); } else { - tfield.setStyle("-fx-background-color:#FF0000"); - tfield.setText("Fehlerhafte Kenngruppe!"); + tfield.setText(""); + new Fehler().showErrorDialog("error", "Kenngruppe falsch", + "Regeln für die Kenngruppe: 4-8 Zeichen sowie Buchstaben von A-Z."); } - }); + }); - layout1.getChildren().addAll(label1, l1, tfield, l2, button1); - - sce1 = new Scene(layout1, 234, 137); - - primaryStage.setScene(sce1); + primaryStage.setScene(sceKenngruppe); primaryStage.show(); } @@ -112,20 +89,19 @@ public class App extends Application { String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; boolean result = true; - for (char c :kenngruppe.toUpperCase().toCharArray()) { + for (char c : kenngruppe.toUpperCase().toCharArray()) { if (!alphabet.contains(String.valueOf(c))) { result = false; break; } } - if (kenngruppe.length() >= 9) { + if (kenngruppe.length() > 8 || kenngruppe.length() < 4) { result = false; } return result; } - // /** // * TODO Dokumentieren // */ diff --git a/src/main/java/projekt/enigma/GuiController.java b/src/main/java/projekt/enigma/GuiController.java index 6c73b6e4dc8abafb19363c0eb20e27c5fdac6df6..41c9b2b42205d011d49517a73a3fb3031d6ad458 100644 --- a/src/main/java/projekt/enigma/GuiController.java +++ b/src/main/java/projekt/enigma/GuiController.java @@ -1,12 +1,24 @@ package projekt.enigma; +import javafx.concurrent.Task; import javafx.event.ActionEvent; import javafx.fxml.FXML; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.input.MouseEvent; +import javafx.scene.layout.Pane; +import javafx.scene.layout.VBox; import javafx.scene.shape.Circle; +import javafx.scene.text.Text; +import javafx.stage.Modality; +import javafx.stage.Stage; +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 java.io.IOException; import java.util.ArrayList; @@ -23,6 +35,7 @@ public class GuiController { private boolean resetDisplay; private Codierer codierer; private char chiffrierterBuchstabe; + private String[] empfangeneNachricht; //deklariert die benötigten Textfelder @FXML private TextField tfStecker1, tfStecker2, tfStecker3, tfStecker4, tfStecker5, tfStecker6, tfStecker7, tfStecker8, @@ -266,7 +279,14 @@ public class GuiController { */ @FXML private void gedrueckteTaste(ActionEvent e) { - if (e.getSource() == btnSenden && !tfCodiert.getText().equals("")) sendeFunkspruch(); + 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) { @@ -422,17 +442,16 @@ public class GuiController { * sowie den Klartext in das Textfeld tfKlartext. Setzt den Spruchschlüssel */ private void empfangeFunkspruch() { + progressDialogue("rx"); - String[] empfangeneNachricht = codierer.empfangeNachricht(); - - if (empfangeneNachricht[2] != null) { + if (this.empfangeneNachricht[2] != null) { setzeTagesSchluessel(); - tfKlartext.setText(empfangeneNachricht[2]); - tfCodiert.setText(empfangeneNachricht[1]); + tfKlartext.setText(this.empfangeneNachricht[2]); + tfCodiert.setText(this.empfangeneNachricht[1]); resetDisplay = true; // Spruchschluessel in das Feld lblSpruchschluessel schreiben - lblSpruchschluessel.setText(codierer.empfangenerSpruchschluessel(empfangeneNachricht[2])); + lblSpruchschluessel.setText(codierer.empfangenerSpruchschluessel(this.empfangeneNachricht[2])); } } @@ -441,16 +460,48 @@ public class GuiController { * Löscht die Textfelder tfKlartext und tfCodiert */ private void sendeFunkspruch() { - - this.tfKlartext.setText(""); + this.tfKlartext.setText(""); this.tfCodiert.setText(""); - try { - this.codierer.sendeNachricht(); - } catch (HttpException | IOException e) { - e.printStackTrace(); - } + progressDialogue("tx"); + } + 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"); + } else if(strRxTx.equals("tx")) { + dialog.setContentText("Sende Nachricht"); + } + dialog.setHeaderText(null); + dialog.setGraphic(null); + dialog.initStyle(StageStyle.UTILITY); + new Thread(copyWorker).start(); + dialog.showAndWait(); + } + public Task createWorker(String strRxTx) { + return new Task() { + @Override + protected Object call() throws Exception { + if(strRxTx.equals("rx")) { + empfangeneNachricht = codierer.empfangeNachricht(); + } else if(strRxTx.equals("tx")) { + try { + codierer.sendeNachricht(); + } catch (HttpException | IOException e) { + e.printStackTrace(); + } + } + + return true; + } + }; } /** diff --git a/src/main/java/projekt/enigma/model/Codierer.java b/src/main/java/projekt/enigma/model/Codierer.java index 136ab25a2e104eeeeb40f940d1950f7b3426ed71..9a6a3d76a73dad16ab5adc3d8959c821fbab60b6 100644 --- a/src/main/java/projekt/enigma/model/Codierer.java +++ b/src/main/java/projekt/enigma/model/Codierer.java @@ -66,9 +66,6 @@ public class Codierer { this.codebuch = new Codebuch(); this.codebuch.fetchTagesschluessel(); - - /*this.funk = new Thread(new ThreadFunkraum(this.kenngruppe)); - funk.start();*/ } //endregion @@ -162,10 +159,6 @@ public class Codierer { // Abrufen der letzten Nachricht, für unsere Kenngruppe, aus dem Funkraum String[] codierteNachricht = new Funkraum().empfangeFunkspruch(this.kenngruppe); - new Fehler().debug(String.valueOf(codierteNachricht.length), false); - new Fehler().debug(codierteNachricht[0], false); - new Fehler().debug(codierteNachricht[1], false); - // Prüfen ob Nachrichtenlänge > 1 und die codierte Nachricht mehr als drei Felder (" ") hat if (codierteNachricht[1] != null && codierteNachricht[1].split(" ").length > 3) { // Den Tag der Nachricht speichern @@ -457,7 +450,6 @@ public class Codierer { //endregion //region Sonstige - /** * Prüft ob der Port auf den das Kabel gesteckt werden soll, noch frei ist. * <p> diff --git a/src/main/java/projekt/enigma/model/Fehler.java b/src/main/java/projekt/enigma/model/Fehler.java index 2dfedd46bfc32b333bf0a8997f08de0419399461..91be2029189ae809cb4f8c3f7f6c605d9a44135c 100644 --- a/src/main/java/projekt/enigma/model/Fehler.java +++ b/src/main/java/projekt/enigma/model/Fehler.java @@ -35,7 +35,7 @@ public class Fehler { case "warning": alert = new Alert(AlertType.WARNING); break; - case "information": + case "info": alert = new Alert(AlertType.INFORMATION); break; case "error": diff --git a/src/main/java/projekt/enigma/model/Funkraum.java b/src/main/java/projekt/enigma/model/Funkraum.java index d1096f0b8f6541fe951740723084326ec6466266..3310b32c5a145e4adadcb6fa73314b1d7f6731f6 100644 --- a/src/main/java/projekt/enigma/model/Funkraum.java +++ b/src/main/java/projekt/enigma/model/Funkraum.java @@ -69,7 +69,7 @@ public class Funkraum { new Fehler().showErrorDialog("error", "HTTP Post war nicht erfolgreich", "Bitte wenden Sie sich an ihren Vorgesetzten."); } catch (NullPointerException e) { - new Fehler().showErrorDialog("error", "Keiner schreibt dir...", + new Fehler().showErrorDialog("info", "Keiner schreibt dir...", "Es liegen keine neuen Nachrichten im Funkraum für Sie vor."); }