aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/devmenu/LevelList.java
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2024-07-14 03:40:03 -0400
committersowgro <tpoke.ferrari@gmail.com>2024-07-14 03:40:03 -0400
commit550701557c1e021e45bddff92ad1a2e8c808e8e0 (patch)
tree219c5979d3b30843b88336ae755dd8e45a1e5471 /src/main/java/net/sowgro/npehero/devmenu/LevelList.java
parentcf8f3d35716cd93d0d5d123d80b07f9ae704f939 (diff)
downloadNPEhero-550701557c1e021e45bddff92ad1a2e8c808e8e0.tar.gz
NPEhero-550701557c1e021e45bddff92ad1a2e8c808e8e0.tar.bz2
NPEhero-550701557c1e021e45bddff92ad1a2e8c808e8e0.zip
NEW LEVEL EDITOR!!!!
Diffstat (limited to 'src/main/java/net/sowgro/npehero/devmenu/LevelList.java')
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/devmenu/LevelList.java101
1 files changed, 82 insertions, 19 deletions
diff --git a/src/main/java/net/sowgro/npehero/devmenu/LevelList.java b/src/main/java/net/sowgro/npehero/devmenu/LevelList.java
index c1c38af..e37e2ea 100755
--- a/src/main/java/net/sowgro/npehero/devmenu/LevelList.java
+++ b/src/main/java/net/sowgro/npehero/devmenu/LevelList.java
@@ -2,16 +2,14 @@ package net.sowgro.npehero.devmenu;
import javafx.beans.property.ReadOnlyBooleanWrapper;
import javafx.beans.property.ReadOnlyStringWrapper;
+import javafx.geometry.Insets;
+import javafx.geometry.Pos;
+import javafx.scene.control.*;
import javafx.scene.layout.Pane;
import net.sowgro.npehero.Driver;
-import javafx.scene.Scene;
-import javafx.scene.control.Button;
-import javafx.scene.control.TableColumn;
-import javafx.scene.control.TableView;
-import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
-import javafx.stage.Stage;
+import net.sowgro.npehero.gui.MainMenu;
import net.sowgro.npehero.main.Level;
import net.sowgro.npehero.main.LevelController;
@@ -25,10 +23,10 @@ public class LevelList extends Pane
public LevelList()
{
//sets up table view: requires special getters, setters and constructors to work
- TableView<Level> levels = new TableView<Level>();
+ TableView<Level> levels = new TableView<>();
- TableColumn<Level,String> titleCol = new TableColumn<Level,String>("Title");
- TableColumn<Level,String> artistCol = new TableColumn<Level,String>("Artist");
+ TableColumn<Level,String> titleCol = new TableColumn<>("Title");
+ TableColumn<Level,String> artistCol = new TableColumn<>("Artist");
TableColumn<Level,Boolean> validCol = new TableColumn<>("Valid?");
levels.getColumns().add(titleCol);
@@ -41,12 +39,30 @@ public class LevelList extends Pane
levels.setItems(LevelController.getLevelList());
+ levels.setRowFactory( _ -> {
+ TableRow<Level> row = new TableRow<>();
+ row.setOnMouseClicked(event -> {
+ if (event.getClickCount() == 2 && (! row.isEmpty()) ) {
+ Level rowData = row.getItem();
+ Driver.setMenu(new LevelEditor(rowData, this));
+ }
+ });
+ return row ;
+ });
+
+ levels.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.35));
+ levels.setMinWidth(400);
+ levels.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
Button edit = new Button("Edit");
- edit.setOnAction(e -> Driver.setMenu(new LevelEditor(levels.getSelectionModel().getSelectedItem())));
+ edit.setOnAction(e -> Driver.setMenu(new LevelEditor(levels.getSelectionModel().getSelectedItem(), this)));
+ edit.setDisable(true);
+ edit.disableProperty().bind(levels.getSelectionModel().selectedItemProperty().isNull());
Button remove = new Button("Delete");
remove.setOnAction(e -> Driver.levelController.removeLevel(levels.getSelectionModel().getSelectedItem()));
+ remove.setDisable(true);
+ remove.disableProperty().bind(levels.getSelectionModel().selectedItemProperty().isNull());
Button refresh = new Button("Refresh");
refresh.setOnAction(e -> {
@@ -54,17 +70,64 @@ public class LevelList extends Pane
levels.setItems(LevelController.getLevelList());
});
- HBox buttons = new HBox();
- buttons.getChildren().addAll(edit,remove,refresh);
+ ToggleButton create = new ToggleButton("Create");
- TextField newLevel = new TextField("new");
+ VBox buttons = new VBox();
+ buttons.getChildren().addAll(create, edit, remove, refresh);
+ buttons.setSpacing(10);
+
+ TextField newLevelEntry = new TextField();
Button newLevelButton = new Button("add");
- newLevelButton.setOnAction(e -> Driver.levelController.addLevel(newLevel.getText()));
- HBox newLevelBox = new HBox();
- newLevelBox.getChildren().addAll(newLevel,newLevelButton);
- VBox main = new VBox();
- main.getChildren().addAll(levels,buttons,newLevelBox);
- super.getChildren().add(main);
+ 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(levels,buttons,sidebar);
+ main.setSpacing(10);
+
+ Button exit = new Button();
+ exit.setText("Back");
+ exit.setOnAction(e -> {
+ Driver.soundController.playSfx("backward");
+ Driver.setMenu(new MainMenu());
+ });
+
+ VBox centerBox = new VBox();
+ centerBox.setAlignment(Pos.CENTER);
+ centerBox.setSpacing(10);
+ centerBox.getChildren().addAll(main,exit);
+ centerBox.setMinWidth(400);
+
+ HBox rootBox = new HBox();
+ rootBox.prefWidthProperty().bind(super.prefWidthProperty());
+ rootBox.prefHeightProperty().bind(super.prefHeightProperty());
+ rootBox.getChildren().add(centerBox);
+ rootBox.setAlignment(Pos.CENTER);
+
+ create.setOnAction(_ -> {
+ if (create.isSelected()) {
+ sidebar.getChildren().add(newLevelBox);
+ }
+ else {
+ sidebar.getChildren().remove(newLevelBox);
+ }
+ });
+
+ newLevelButton.setOnAction(_ -> {
+ Driver.levelController.addLevel(newLevelEntry.getText());
+ newLevelEntry.clear();
+ refresh.fire();
+ sidebar.getChildren().clear();
+ create.setSelected(false);
+ });
+
+ super.getChildren().add(rootBox);
}
} \ No newline at end of file