aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/DiffEditor.java12
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/DiffList.java54
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/LevelEditor.java48
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/editor/LevelList.java46
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);