diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2024-10-14 21:44:16 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2024-10-14 21:44:16 -0400 |
commit | ec1d878fd2c0af9decc8ec8b973ce594104d9040 (patch) | |
tree | 92ce1db5a5bf100da25e1c97d34f0881e9547166 /src | |
parent | fe0879b7868dc87cd3d7625e270e7a1bd514f98b (diff) | |
download | NPEhero-ec1d878fd2c0af9decc8ec8b973ce594104d9040.tar.gz NPEhero-ec1d878fd2c0af9decc8ec8b973ce594104d9040.tar.bz2 NPEhero-ec1d878fd2c0af9decc8ec8b973ce594104d9040.zip |
Fix editor pages not updating
Diffstat (limited to 'src')
4 files changed, 94 insertions, 66 deletions
diff --git a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java index c4bcdbb..8f2df76 100755 --- a/src/main/java/net/sowgro/npehero/editor/DiffEditor.java +++ b/src/main/java/net/sowgro/npehero/editor/DiffEditor.java @@ -160,9 +160,7 @@ public class DiffEditor extends Page @Override public void onView() { - if (diff.notes.list.isEmpty()) { - validNotes.setInvalid("This difficulty does not contain any notes!"); - } + update(); } @Override @@ -174,4 +172,12 @@ public class DiffEditor extends Page e.printStackTrace(); //TODO } } + + private void update() { + if (diff.notes.list.isEmpty()) { + validNotes.setInvalid("This difficulty does not contain any notes!"); + } else { + validNotes.setValid(); + } + } }
\ No newline at end of file diff --git a/src/main/java/net/sowgro/npehero/editor/DiffList.java b/src/main/java/net/sowgro/npehero/editor/DiffList.java index ab28af9..3a94d0f 100755 --- a/src/main/java/net/sowgro/npehero/editor/DiffList.java +++ b/src/main/java/net/sowgro/npehero/editor/DiffList.java @@ -25,28 +25,29 @@ public class DiffList extends Page private final Button error; private final HBox content = new HBox(); private final Level level; + private final TableView<Difficulty> diffsTable; public DiffList(Level level, Page prev) { this.level = level; //sets up table view: requires special getters, setters and constructors to work - TableView<Difficulty> diffs = new TableView<>(); + diffsTable = new TableView<>(); TableColumn<Difficulty,String> titleCol = new TableColumn<>("Name"); TableColumn<Difficulty,String> validCol = new TableColumn<>("Valid?"); - titleCol.prefWidthProperty().bind(diffs.widthProperty().multiply(0.5)); - validCol.prefWidthProperty().bind(diffs.widthProperty().multiply(0.4)); + titleCol.prefWidthProperty().bind(diffsTable.widthProperty().multiply(0.5)); + validCol.prefWidthProperty().bind(diffsTable.widthProperty().multiply(0.4)); - diffs.getColumns().add(titleCol); - diffs.getColumns().add(validCol); + diffsTable.getColumns().add(titleCol); + diffsTable.getColumns().add(validCol); titleCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().title)); validCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().isValid() ? "Yes" : "No")); - diffs.setItems(level.difficulties.list); + diffsTable.setItems(level.difficulties.list); - diffs.setRowFactory( _ -> { + diffsTable.setRowFactory(_ -> { TableRow<Difficulty> row = new TableRow<>(); row.setOnMouseClicked(event -> { if (event.getClickCount() == 2 && (! row.isEmpty()) ) { @@ -57,35 +58,36 @@ public class DiffList extends Page return row ; }); - diffs.setPrefWidth(400); + diffsTable.setPrefWidth(400); error = new Button(); error.getStyleClass().add("red"); error.setOnAction(_ -> { + Sound.playSfx(Sound.FORWARD); // TODO Driver.setMenu(new ErrorList(level.difficulties.problems, this)); }); - refresh(); + update(); Button edit = new Button("Edit"); edit.setOnAction(_ -> { Sound.playSfx(Sound.FORWARD); - Driver.setMenu(new DiffEditor(diffs.getSelectionModel().getSelectedItem(), this)); + Driver.setMenu(new DiffEditor(diffsTable.getSelectionModel().getSelectedItem(), this)); }); edit.setDisable(true); - edit.disableProperty().bind(diffs.getSelectionModel().selectedItemProperty().isNull()); + edit.disableProperty().bind(diffsTable.getSelectionModel().selectedItemProperty().isNull()); Button remove = new Button("Delete"); remove.setOnAction(_ -> { Sound.playSfx(Sound.FORWARD); try { - level.difficulties.remove(diffs.getSelectionModel().getSelectedItem()); + level.difficulties.remove(diffsTable.getSelectionModel().getSelectedItem()); } catch (IOException ex) { Driver.setMenu(new ErrorDisplay("Failed to remove difficulty", ex, this)); } }); remove.setDisable(true); - remove.disableProperty().bind(diffs.getSelectionModel().selectedItemProperty().isNull()); + remove.disableProperty().bind(diffsTable.getSelectionModel().selectedItemProperty().isNull()); Button refresh = new Button("Refresh"); refresh.setOnAction(_ -> { @@ -95,18 +97,16 @@ public class DiffList extends Page } catch (IOException ex) { // TODO } -// diffs.setItems(level.difficulties.list.sorted()); - diffs.refresh(); - refresh(); + update(); }); - ToggleButton create = new ToggleButton("Create"); + Button create = new Button("Create"); Button moveUp = new Button("Move Up"); - moveUp.disableProperty().bind(diffs.getSelectionModel().selectedItemProperty().isNull()); + moveUp.disableProperty().bind(diffsTable.getSelectionModel().selectedItemProperty().isNull()); moveUp.setOnAction(_ -> { Sound.playSfx(Sound.FORWARD); - Difficulty diff = diffs.getSelectionModel().selectedItemProperty().get(); + Difficulty diff = diffsTable.getSelectionModel().selectedItemProperty().get(); ObservableList<Difficulty> diffList = level.difficulties.list; int oldIndex = diffList.indexOf(diff); if (oldIndex <= 0) { @@ -121,10 +121,10 @@ public class DiffList extends Page }); Button moveDown = new Button("Move Down"); - moveDown.disableProperty().bind(diffs.getSelectionModel().selectedItemProperty().isNull()); + moveDown.disableProperty().bind(diffsTable.getSelectionModel().selectedItemProperty().isNull()); moveDown.setOnAction(_ -> { Sound.playSfx(Sound.FORWARD); - Difficulty diff = diffs.getSelectionModel().selectedItemProperty().get(); + Difficulty diff = diffsTable.getSelectionModel().selectedItemProperty().get(); ObservableList<Difficulty> diffList = level.difficulties.list; int oldIndex = diffList.indexOf(diff); if (oldIndex >= diffList.size()-1) { @@ -147,10 +147,10 @@ public class DiffList extends Page bp.setBottom(error); HBox main = new HBox(); - main.getChildren().addAll(diffs, bp); + main.getChildren().addAll(diffsTable, bp); main.setSpacing(10); main.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.67)); - diffs.prefHeightProperty().bind(main.heightProperty()); + diffsTable.prefHeightProperty().bind(main.heightProperty()); Button exit = new Button(); exit.setText("Back"); @@ -189,7 +189,13 @@ public class DiffList extends Page return content; } - public void refresh() { + @Override + public void onView() { + update(); + } + + public void update() { + diffsTable.refresh(); error.setText("Failed to load " + level.difficulties.problems.size() + " difficulty(s)"); if (level.difficulties.problems.isEmpty()) { error.setVisible(false); diff --git a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java index 1f30006..f255705 100755 --- a/src/main/java/net/sowgro/npehero/editor/LevelEditor.java +++ b/src/main/java/net/sowgro/npehero/editor/LevelEditor.java @@ -32,7 +32,6 @@ public class LevelEditor extends Page } } - public LevelEditor(Level level, Page prev) { this.level = level; @@ -67,21 +66,21 @@ public class LevelEditor extends Page Node songFile = createFileImportBox( Level.SONG_FILE, - level.song, + () -> level.song, "Audio Files (*.wav, *.mp3, *.aac)", new String[]{"*.wav", "*.mp3", "*.aac"} ); Node previewImage = createFileImportBox( Level.PREVIEW_FILE, - level.preview, + () -> level.preview, "Image Files (*.png, *.jpg, *.gif)", new String[]{"*.png", "*.jpg", "*.gif"} ); Node backgroundImage = createFileImportBox( Level.BACKGROUND_FILE, - level.background, + () -> level.background, "Image Files (*.png, *.jpg, *.gif)", new String[]{"*.png", "*.jpg", "*.gif"} ); @@ -167,18 +166,7 @@ public class LevelEditor extends Page @Override public void onView() { - // validate - if (level.difficulties.getValidList().isEmpty()) { - diffsInvalid.setInvalid("This level contains no valid difficulties!"); - } else { - diffsInvalid.setValid(); - } - - if (level.song == null) { - songValid.setInvalid("Missing song file!"); - } else { - songValid.setValid(); - } + update(); } @Override @@ -198,7 +186,25 @@ public class LevelEditor extends Page } } - private Node createFileImportBox(String filename, Object dest, String extDesc, String[] extensions) { + private void update() { + if (level.difficulties.getValidList().isEmpty()) { + diffsInvalid.setInvalid("This level contains no valid difficulties!"); + } else { + diffsInvalid.setValid(); + } + + if (level.song == null) { + songValid.setInvalid("Missing song file!"); + } else { + songValid.setValid(); + } + } + + interface Callback { + Object get(); + } + + private Node createFileImportBox(String filename, Callback destField, String extDesc, String[] extensions) { FileChooser fileChooser = new FileChooser(); fileChooser.getExtensionFilters().add(new ExtensionFilter(extDesc, extensions)); Button importButton = new Button("Import"); @@ -214,7 +220,8 @@ public class LevelEditor extends Page } catch (IOException e) { e.printStackTrace(); // TODO } - removeButton.setDisable(dest == null); + removeButton.setDisable(destField.get() == null); + update(); }); removeButton.setOnAction(_ -> { Sound.playSfx(Sound.FORWARD); @@ -223,9 +230,10 @@ public class LevelEditor extends Page } catch (IOException e) { e.printStackTrace(); // TODO } - removeButton.setDisable(dest == null); + removeButton.setDisable(destField.get() == null); + update(); }); - removeButton.setDisable(dest == null); + removeButton.setDisable(destField.get() == null); var b1 = new HBox(importButton, removeButton); b1.setSpacing(10); diff --git a/src/main/java/net/sowgro/npehero/editor/LevelList.java b/src/main/java/net/sowgro/npehero/editor/LevelList.java index 22144a4..843b87d 100755 --- a/src/main/java/net/sowgro/npehero/editor/LevelList.java +++ b/src/main/java/net/sowgro/npehero/editor/LevelList.java @@ -23,23 +23,24 @@ public class LevelList extends Page private final HBox content = new HBox(); private final Button error; + private final TableView<Level> levelsTable; public LevelList() { //sets up table view: requires special getters, setters and constructors to work - TableView<Level> levels = new TableView<>(); + levelsTable = new TableView<>(); TableColumn<Level,String> titleCol = new TableColumn<>("Title"); TableColumn<Level,String> artistCol = new TableColumn<>("Artist"); TableColumn<Level,String> validCol = new TableColumn<>("Valid?"); - titleCol.prefWidthProperty().bind(levels.widthProperty().multiply(0.4)); - artistCol.prefWidthProperty().bind(levels.widthProperty().multiply(0.4)); - validCol.prefWidthProperty().bind(levels.widthProperty().multiply(0.15)); + titleCol.prefWidthProperty().bind(levelsTable.widthProperty().multiply(0.4)); + artistCol.prefWidthProperty().bind(levelsTable.widthProperty().multiply(0.4)); + validCol.prefWidthProperty().bind(levelsTable.widthProperty().multiply(0.15)); - levels.getColumns().add(titleCol); - levels.getColumns().add(artistCol); - levels.getColumns().add(validCol); + levelsTable.getColumns().add(titleCol); + levelsTable.getColumns().add(artistCol); + levelsTable.getColumns().add(validCol); titleCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().title)); artistCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().artist)); @@ -52,9 +53,9 @@ public class LevelList extends Page } }); - levels.setItems(Levels.list); + levelsTable.setItems(Levels.list); - levels.setRowFactory( _ -> { + levelsTable.setRowFactory(_ -> { TableRow<Level> row = new TableRow<>(); row.setOnMouseClicked(event -> { if (event.getClickCount() == 2 && (! row.isEmpty()) ) { @@ -64,36 +65,37 @@ public class LevelList extends Page }); return row ; }); - levels.setPrefWidth(600); - levels.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.75)); + levelsTable.setPrefWidth(600); + levelsTable.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.75)); error = new Button(); error.getStyleClass().add("red"); error.setOnAction(_ -> { + Sound.playSfx(Sound.FORWARD); // TODO Driver.setMenu(new ErrorList(Levels.problems, this)); }); - refresh(); + update(); Button edit = new Button("Edit"); edit.setOnAction(_ -> { Sound.playSfx(Sound.FORWARD); - Driver.setMenu(new LevelEditor(levels.getSelectionModel().getSelectedItem(), this)); + Driver.setMenu(new LevelEditor(levelsTable.getSelectionModel().getSelectedItem(), this)); }); edit.setDisable(true); - edit.disableProperty().bind(levels.getSelectionModel().selectedItemProperty().isNull()); + edit.disableProperty().bind(levelsTable.getSelectionModel().selectedItemProperty().isNull()); Button remove = new Button("Delete"); remove.setOnAction(_ -> { Sound.playSfx(Sound.FORWARD); try { - Levels.remove(levels.getSelectionModel().getSelectedItem()); + Levels.remove(levelsTable.getSelectionModel().getSelectedItem()); } catch (IOException ex) { Driver.setMenu(new ErrorDisplay("Failed to remove this level", ex, this)); } }); remove.setDisable(true); - remove.disableProperty().bind(levels.getSelectionModel().selectedItemProperty().isNull()); + remove.disableProperty().bind(levelsTable.getSelectionModel().selectedItemProperty().isNull()); Button refresh = new Button("Refresh"); refresh.setOnAction(_ -> { @@ -103,7 +105,7 @@ public class LevelList extends Page } catch (IOException ex) { Driver.setMenu(new ErrorDisplay("Failed to load levels: Level folder is missing", ex, this)); } - levels.setItems(Levels.list); + update(); }); Button create = new Button("Create"); @@ -127,7 +129,7 @@ public class LevelList extends Page bp.setBottom(error); HBox main = new HBox(); - main.getChildren().addAll(levels, bp); + main.getChildren().addAll(levelsTable, bp); main.setSpacing(10); Button exit = new Button(); @@ -167,7 +169,13 @@ public class LevelList extends Page return content; } - public void refresh() { + @Override + public void onView() { + update(); + } + + public void update() { + levelsTable.refresh(); error.setText(Levels.problems.size() + " Failed"); if (Levels.problems.isEmpty()) { error.setVisible(false); |