diff --git a/src/de/brickedleveleditor/main/Main.java b/src/de/brickedleveleditor/main/Main.java index 265186d360c193bd6f76aa7e0e050f40595e5dfa..a946ae6057bb2913258df1f796e5cd03f274cf0f 100644 --- a/src/de/brickedleveleditor/main/Main.java +++ b/src/de/brickedleveleditor/main/Main.java @@ -28,10 +28,7 @@ public class Main extends Application FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("de/brickedleveleditor/ui/fxml/main_controller.fxml")); Parent root = (Parent)loader.load(); - Scene scene = new Scene(root, 800, 600); - - ((MainController)loader.getController()).init(stage, null); - + Scene scene = new Scene(root, 800, 600); stage.setTitle(bundle.getString("app.name")); stage.setScene(scene); stage.setResizable(true); @@ -44,8 +41,8 @@ public class Main extends Application System.exit(0); } }); - stage.show(); + ((MainController)loader.getController()).init(stage, null); } catch(Exception e) { diff --git a/src/de/brickedleveleditor/ui/controller/LevelPackDialogController.java b/src/de/brickedleveleditor/ui/controller/LevelPackDialogController.java index 6afc358154b5b1b3de36992556884fed2558d502..1ced35cffb950eb9589fcf44daa66cc9e4a31783 100644 --- a/src/de/brickedleveleditor/ui/controller/LevelPackDialogController.java +++ b/src/de/brickedleveleditor/ui/controller/LevelPackDialogController.java @@ -2,7 +2,9 @@ package de.brickedleveleditor.ui.controller; import de.bricked.game.paddle.PaddleSize; +import de.brickedleveleditor.utils.AlertGenerator; import javafx.fxml.FXML; +import javafx.scene.control.Alert; import javafx.scene.control.ComboBox; import javafx.scene.control.Spinner; import javafx.scene.control.TextField; @@ -18,7 +20,13 @@ public class LevelPackDialogController extends AbstractController @Override protected void initController() { + initPaddleSizeComboBox(); + } + private void initPaddleSizeComboBox() + { + paddleSizeComboBox.getItems().addAll(PaddleSize.values()); + paddleSizeComboBox.getSelectionModel().selectFirst(); } @FXML @@ -26,17 +34,25 @@ public class LevelPackDialogController extends AbstractController { String levelName = levelNameTextField.getText(); String author = authorTextField.getText(); - int position = ((MainController)parentController).getLevelPackWriter().getLevels().size(); - int difficulty = (int)difficultySpinner.getValue(); - int startLives = (int)startLivesSpinner.getValue(); - PaddleSize initPadSize = (PaddleSize)paddleSizeComboBox.getSelectionModel().getSelectedItem(); - ((MainController)parentController).getLevelPackWriter().addLevel(levelName, author, position, difficulty, startLives, initPadSize, ((MainController)parentController).getBrickArrayList()); + if(levelName.equals("") || author.equals("")) + { + AlertGenerator.showAlert(Alert.AlertType.WARNING, "Levelname or Author missing!", null); + } + else + { + int position = ((MainController) parentController).getLevelPackWriter().getLevels().size(); + int difficulty = (int) difficultySpinner.getValue(); + int startLives = (int) startLivesSpinner.getValue(); + PaddleSize initPadSize = (PaddleSize) paddleSizeComboBox.getSelectionModel().getSelectedItem(); + ((MainController) parentController).getLevelPackWriter().addLevel(levelName, author, position, difficulty, startLives, initPadSize, ((MainController) parentController).getBrickArrayList()); + stage.close(); + } } @FXML private void onBackButtonClicked() { - + stage.close(); } } diff --git a/src/de/brickedleveleditor/ui/controller/MainController.java b/src/de/brickedleveleditor/ui/controller/MainController.java index c5bbd616d7828a183b64d8e294d59ab6a96a8eda..2a013c0c4bd154c2695a8f6171db3eeed47d9838 100644 --- a/src/de/brickedleveleditor/ui/controller/MainController.java +++ b/src/de/brickedleveleditor/ui/controller/MainController.java @@ -50,8 +50,6 @@ public class MainController extends AbstractController private Image currentlySelectedPowerupImage; private final int WIDTH = 18; private final int HEIGHT = 18; - - public Stage stage; public final ResourceBundle bundle = ResourceBundle.getBundle("de/brickedleveleditor/main/", Locale.GERMANY); private HashMap<BrickType, Image> bricksTextures; private ArrayList<Image> powerupTextures; diff --git a/src/de/brickedleveleditor/ui/fxml/level_pack_dialog_controller.fxml b/src/de/brickedleveleditor/ui/fxml/level_pack_dialog_controller.fxml index 5d82abf0b7d55e801b01425c6f261852e9652945..785f7da21fc60e704b900acb7b67a652829d7374 100644 --- a/src/de/brickedleveleditor/ui/fxml/level_pack_dialog_controller.fxml +++ b/src/de/brickedleveleditor/ui/fxml/level_pack_dialog_controller.fxml @@ -6,6 +6,7 @@ <?import javafx.scene.control.Spinner?> <?import javafx.scene.control.TextField?> <?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.control.SpinnerValueFactory.IntegerSpinnerValueFactory?> <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="317.0" prefWidth="397.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.brickedleveleditor.ui.controller.LevelPackDialogController"> <children> @@ -14,12 +15,20 @@ <TextField fx:id="authorTextField" layoutX="212.0" layoutY="56.0" AnchorPane.rightAnchor="14.0" /> <TextField fx:id="levelNameTextField" layoutX="212.0" layoutY="17.0" AnchorPane.rightAnchor="14.0" /> <Label layoutX="14.0" layoutY="99.0" prefHeight="16.0" prefWidth="112.0" text="Difficulty:" AnchorPane.leftAnchor="14.0" /> - <Spinner fx:id="difficultySpinner" layoutX="212.0" layoutY="94.0" prefHeight="26.0" prefWidth="171.0" AnchorPane.rightAnchor="14.0" /> + <Spinner fx:id="difficultySpinner" layoutX="212.0" layoutY="94.0" prefHeight="26.0" prefWidth="171.0" AnchorPane.rightAnchor="14.0"> + <valueFactory> + <SpinnerValueFactory.IntegerSpinnerValueFactory min="1" max="10"/> + </valueFactory> + </Spinner> <Label layoutX="14.0" layoutY="138.0" prefHeight="16.0" prefWidth="112.0" text="Start-Lives:" AnchorPane.leftAnchor="14.0" /> <Label layoutX="14.0" layoutY="174.0" prefHeight="16.0" prefWidth="112.0" text="Paddle-Size" AnchorPane.leftAnchor="14.0" /> <ComboBox fx:id="paddleSizeComboBox" layoutX="212.0" layoutY="169.0" prefHeight="26.0" prefWidth="171.0" AnchorPane.rightAnchor="14.0" /> <Button layoutX="126.0" layoutY="277.0" mnemonicParsing="false" onAction="#onSaveButtonClicked" text="Save" AnchorPane.bottomAnchor="14.0" /> <Button layoutX="212.0" layoutY="277.0" mnemonicParsing="false" onAction="#onBackButtonClicked" text="Back" AnchorPane.bottomAnchor="14.0" /> - <Spinner fx:id="startLivesSpinner" layoutX="212.0" layoutY="133.0" /> + <Spinner fx:id="startLivesSpinner" layoutX="212.0" layoutY="133.0"> + <valueFactory> + <SpinnerValueFactory.IntegerSpinnerValueFactory min="1" max="5"/> + </valueFactory> + </Spinner> </children> </AnchorPane> diff --git a/src/de/brickedleveleditor/utils/AlertGenerator.java b/src/de/brickedleveleditor/utils/AlertGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..fa58b2a85386c8b292cec0e8e56bedb25fbdfaf0 --- /dev/null +++ b/src/de/brickedleveleditor/utils/AlertGenerator.java @@ -0,0 +1,37 @@ +package de.brickedleveleditor.utils; + +import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType; +import javafx.scene.image.Image; +import javafx.stage.Stage; + +public class AlertGenerator +{ + public static void showAlert(AlertType type, String contentText, Image icon) + { + show(type, type.name(), "", contentText, icon, true); + } + + public static void showAlert(AlertType type, String title, String headerText, String contentText, Image icon, boolean centerOnScreen) + { + show(type, title, headerText, contentText, icon, centerOnScreen); + } + + private static void show(AlertType type, String title, String headerText, String contentText, Image icon, boolean centerOnScreen) + { + Alert alert = new Alert(type); + alert.setTitle(title); + alert.setHeaderText(headerText); + alert.setContentText(contentText); + Stage dialogStage = (Stage) alert.getDialogPane().getScene().getWindow(); + if(icon != null) + { + dialogStage.getIcons().add(icon); + } + if (centerOnScreen) + { + dialogStage.centerOnScreen(); + } + alert.showAndWait(); + } +} \ No newline at end of file