diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2024-07-14 03:40:03 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2024-07-14 03:40:03 -0400 |
commit | 550701557c1e021e45bddff92ad1a2e8c808e8e0 (patch) | |
tree | 219c5979d3b30843b88336ae755dd8e45a1e5471 /src/main/java/net/sowgro/npehero/devmenu/LevelList.java | |
parent | cf8f3d35716cd93d0d5d123d80b07f9ae704f939 (diff) | |
download | NPEhero-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-x | src/main/java/net/sowgro/npehero/devmenu/LevelList.java | 101 |
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 |