aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/editor
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2024-08-29 21:51:14 -0400
committersowgro <tpoke.ferrari@gmail.com>2024-08-29 21:51:14 -0400
commitfb70a24c04a5beec6cc7ff9248ef8f5fd46fcc87 (patch)
tree8f9610d0da1301d6b5e82903418aaf0459cf8666 /src/main/java/net/sowgro/npehero/editor
parent7a3aa914a7a64952dd0e134cd998d0cf0e445b4f (diff)
downloadNPEhero-fb70a24c04a5beec6cc7ff9248ef8f5fd46fcc87.tar.gz
NPEhero-fb70a24c04a5beec6cc7ff9248ef8f5fd46fcc87.tar.bz2
NPEhero-fb70a24c04a5beec6cc7ff9248ef8f5fd46fcc87.zip
Implement new create dialog
Diffstat (limited to 'src/main/java/net/sowgro/npehero/editor')
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/DiffList.java47
-rw-r--r--src/main/java/net/sowgro/npehero/editor/FolderNameEntry.java62
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/LevelList.java48
3 files changed, 88 insertions, 69 deletions
diff --git a/src/main/java/net/sowgro/npehero/editor/DiffList.java b/src/main/java/net/sowgro/npehero/editor/DiffList.java
index b77af55..e435b22 100755
--- a/src/main/java/net/sowgro/npehero/editor/DiffList.java
+++ b/src/main/java/net/sowgro/npehero/editor/DiffList.java
@@ -148,20 +148,8 @@ public class DiffList extends Page
buttons.getChildren().addAll(create, edit, remove, moveUp, moveDown, refresh);
buttons.setSpacing(10);
- TextField newLevelEntry = new TextField();
- Button newLevelButton = new Button("add");
-
- HBox newLevel = new HBox(newLevelEntry,newLevelButton);
- Label newLevelLabel = new Label("Name of new difficulty");
- VBox newLevelBox = new VBox(newLevelLabel, newLevel);
- newLevelBox.setSpacing(10);
- newLevelBox.getStyleClass().add("box");
- newLevelBox.setPadding(new Insets(10));
-
- Pane sidebar = new Pane();
-
HBox main = new HBox();
- main.getChildren().addAll(new VBox(diffs, errorBox),buttons, sidebar);
+ main.getChildren().addAll(new VBox(diffs, errorBox),buttons);
main.setSpacing(10);
Button exit = new Button();
@@ -173,28 +161,17 @@ public class DiffList extends Page
create.setOnAction(_ -> {
Sound.playSfx(Sound.FORWARD);
- if (create.isSelected()) {
- sidebar.getChildren().add(newLevelBox);
- }
- else {
- sidebar.getChildren().remove(newLevelBox);
- }
- });
-
- newLevelButton.setOnAction(_ -> {
- Sound.playSfx(Sound.FORWARD);
- try {
- level.difficulties.add(newLevelEntry.getText());
- } catch (FileAlreadyExistsException e) {
- Driver.setMenu(new ErrorDisplay("Failed to add level\nA difficulty already exists with the folder name " + e.getFile(), this));
- } catch (IOException e) {
- Driver.setMenu(new ErrorDisplay("Failed to add level\n"+e, this));
- e.printStackTrace();
- }
- newLevelEntry.clear();
- refresh.fire();
- sidebar.getChildren().clear();
- create.setSelected(false);
+ FolderNameEntry.StringToVoidLambda next = (String name) -> {
+ try {
+ Difficulty d = level.difficulties.add(name);
+ Driver.setMenu(new DiffEditor(d, new DiffList(level, prev)));
+ } catch (FileAlreadyExistsException e) {
+ Driver.setMenu(new ErrorDisplay("Failed to add difficulty\nA difficulty already exists with the folder name " + e.getFile(), this));
+ } catch (IOException e) {
+ Driver.setMenu(new ErrorDisplay("Failed to add difficulty\n" + e, this));
+ }
+ };
+ Driver.setMenu(new FolderNameEntry("difficulty", this, next));
});
VBox centerBox = new VBox();
diff --git a/src/main/java/net/sowgro/npehero/editor/FolderNameEntry.java b/src/main/java/net/sowgro/npehero/editor/FolderNameEntry.java
new file mode 100644
index 0000000..f2245a8
--- /dev/null
+++ b/src/main/java/net/sowgro/npehero/editor/FolderNameEntry.java
@@ -0,0 +1,62 @@
+package net.sowgro.npehero.editor;
+
+import javafx.geometry.Insets;
+import javafx.geometry.Pos;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import net.sowgro.npehero.Driver;
+import net.sowgro.npehero.main.Page;
+
+public class FolderNameEntry extends Page {
+ private final HBox content = new HBox();
+
+ public interface StringToVoidLambda {
+ void run(String name);
+ }
+
+ public FolderNameEntry(String itemType, Page prev, StringToVoidLambda next) {
+
+ Label newLevelLabel = new Label("Name of new "+itemType);
+ TextField newLevelEntry = new TextField();
+
+ Label folderName = new Label("Folder name");
+ TextField folderNameEntry = new TextField();
+ folderNameEntry.setEditable(false);
+ folderNameEntry.setDisable(true);
+
+ newLevelEntry.setOnKeyTyped(_ -> {
+ folderNameEntry.setText(newLevelEntry.getText().toLowerCase().replaceAll("\\W+", "-"));
+ });
+
+ VBox newLevelBox = new VBox(newLevelLabel, newLevelEntry, folderName, folderNameEntry);
+ newLevelBox.setSpacing(10);
+ newLevelBox.getStyleClass().add("box");
+ newLevelBox.setPadding(new Insets(10));
+ newLevelBox.setPrefWidth(400);
+
+ Button newLevelButton = new Button("Create");
+ newLevelButton.setOnAction(_ -> next.run(newLevelEntry.getText()));
+
+ Button cancel = new Button("Cancel");
+ cancel.setOnAction(_ -> Driver.setMenu(prev));
+
+ HBox buttonBox = new HBox(cancel, newLevelButton);
+ buttonBox.setSpacing(10);
+
+ VBox centerBox = new VBox();
+ centerBox.getChildren().addAll(newLevelBox, buttonBox);
+ centerBox.setSpacing(10);
+ centerBox.setAlignment(Pos.CENTER);
+
+ content.getChildren().add(centerBox);
+ content.setAlignment(Pos.CENTER);
+ }
+
+ @Override
+ public HBox getContent() {
+ return content;
+ }
+}
diff --git a/src/main/java/net/sowgro/npehero/editor/LevelList.java b/src/main/java/net/sowgro/npehero/editor/LevelList.java
index 7c499b7..e9d69af 100755
--- a/src/main/java/net/sowgro/npehero/editor/LevelList.java
+++ b/src/main/java/net/sowgro/npehero/editor/LevelList.java
@@ -111,7 +111,7 @@ public class LevelList extends Page
levels.setItems(Levels.list);
});
- ToggleButton create = new ToggleButton("Create");
+ Button create = new Button("Create");
Button viewFolder = new Button("Open Folder");
viewFolder.setOnAction(_ -> new Thread(() -> {
@@ -126,20 +126,10 @@ public class LevelList extends Page
buttons.getChildren().addAll(create, edit, remove, refresh, viewFolder);
buttons.setSpacing(10);
- TextField newLevelEntry = new TextField();
- Button newLevelButton = new Button("add");
- HBox newLevel = new HBox(newLevelEntry,newLevelButton);
- Label newLevelLabel = new Label("Name of new level");
- VBox newLevelBox = new VBox(newLevelLabel, newLevel);
- newLevelBox.setSpacing(10);
- newLevelBox.getStyleClass().add("box");
- newLevelBox.setPadding(new Insets(10));
-
- Pane sidebar = new Pane();
HBox main = new HBox();
- main.getChildren().addAll(new VBox(levels, errorBox),buttons,sidebar);
+ main.getChildren().addAll(new VBox(levels, errorBox),buttons);
main.setSpacing(10);
Button exit = new Button();
@@ -159,28 +149,18 @@ public class LevelList extends Page
content.setAlignment(Pos.CENTER);
create.setOnAction(_ -> {
- if (create.isSelected()) {
- sidebar.getChildren().add(newLevelBox);
- }
- else {
- sidebar.getChildren().remove(newLevelBox);
- }
- });
-
- newLevelButton.setOnAction(_ -> {
- try {
- Levels.add(newLevelEntry.getText());
- } catch (FileAlreadyExistsException e) {
- Driver.setMenu(new ErrorDisplay("Failed to add level\nA level already exists with the folder name " + e.getFile(), this));
- e.printStackTrace();
- } catch (IOException e) {
- Driver.setMenu(new ErrorDisplay("Failed to create this level\n"+e.toString(), this));
- e.printStackTrace();
- }
- newLevelEntry.clear();
- refresh.fire();
- sidebar.getChildren().clear();
- create.setSelected(false);
+ Sound.playSfx(Sound.FORWARD);
+ FolderNameEntry.StringToVoidLambda next = (String name) -> {
+ try {
+ Level l = Levels.add(name);
+ Driver.setMenu(new LevelEditor(l, new LevelList()));
+ } catch (FileAlreadyExistsException e) {
+ Driver.setMenu(new ErrorDisplay("Failed to add level\nA level already exists with the folder name '" + e.getFile() + "'", this));
+ } catch (IOException e) {
+ Driver.setMenu(new ErrorDisplay("Failed to create level\n"+e, this));
+ }
+ };
+ Driver.setMenu(new FolderNameEntry("level", this, next));
});
}