aboutsummaryrefslogtreecommitdiff
path: root/src/devmenu/LevelEditor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/devmenu/LevelEditor.java')
-rw-r--r--src/devmenu/LevelEditor.java71
1 files changed, 60 insertions, 11 deletions
diff --git a/src/devmenu/LevelEditor.java b/src/devmenu/LevelEditor.java
index 5e9a818..94509ac 100644
--- a/src/devmenu/LevelEditor.java
+++ b/src/devmenu/LevelEditor.java
@@ -1,7 +1,6 @@
package devmenu;
-import javafx.beans.value.ChangeListener;
-import javafx.beans.value.ObservableValue;
+import java.io.File;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
@@ -12,14 +11,27 @@ import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
+import javafx.stage.FileChooser;
import javafx.stage.Stage;
+import javafx.stage.FileChooser.ExtensionFilter;
import main.Difficulty;
import main.Level;
public class LevelEditor
-{
+{
+ private File selectedSong = null;
+ private File selectedPreview = null;
+ private File selectedBackground = null;
+
+ /*
+ * this class is a layout class, most of its purpose is to place UI elements like Buttons within Panes like VBoxes.
+ * the creation of these UI elements are mostly not commented due to their repetitive and self explanatory nature.
+ * style classes are defined in the style.css file.
+ */
public LevelEditor(Level level)
{
+ Stage primaryStage = new Stage();
+
Text folderNameLabel = new Text("Folder name");
TextField folderName = new TextField(level.thisDir.getName());
folderName.setDisable(true);
@@ -40,13 +52,35 @@ public class LevelEditor
ColorPicker c4 = new ColorPicker(level.colors[3]);
ColorPicker c5 = new ColorPicker(level.colors[4]);
- ObservableList diffList2 = FXCollections.observableArrayList();
+ Text filesLabel = new Text("Files");
+
+ FileChooser backgroundChooser = new FileChooser();
+ backgroundChooser.getExtensionFilters().add(new ExtensionFilter("PNG", "*.png"));
+ Button backgroundButton = new Button("Import background PNG");
+ backgroundButton.setOnAction(e -> {selectedBackground = backgroundChooser.showOpenDialog(primaryStage);});
+
+ FileChooser previewChooser = new FileChooser();
+ previewChooser.getExtensionFilters().add(new ExtensionFilter("PNG", "*.png"));
+ Button previewButton = new Button("Import preview PNG");
+ previewButton.setOnAction(e -> {selectedPreview = previewChooser.showOpenDialog(primaryStage);});
+
+ FileChooser songChooser = new FileChooser();
+ songChooser.getExtensionFilters().add(new ExtensionFilter("WAV", "*.wav"));
+ Button songButton = new Button("Import song WAV");
+ songButton.setOnAction(e -> selectedSong = songChooser.showOpenDialog(primaryStage));
+
+ Text diffLabel = new Text("Difficulties");
+
+ ObservableList<Difficulty> diffList2 = FXCollections.observableArrayList();
diffList2.addAll(level.getDiffList());
- ListView<Difficulty> diffList = new ListView();
+ ListView<Difficulty> diffList = new ListView<Difficulty>();
diffList.setItems(diffList2);
- diffList.setOnMouseClicked(e -> new DiffEditor(diffList.getSelectionModel().getSelectedItem()));
- Text diffLabel = new Text("Difficulties");
+ Button edit = new Button("Edit");
+ edit.setOnAction(e -> new DiffEditor(diffList.getSelectionModel().getSelectedItem()));
+
+ Button remove = new Button("Delete");
+ remove.setOnAction(e -> level.removeDiff(diffList.getSelectionModel().getSelectedItem()));
Button refresh = new Button("Refresh");
refresh.setOnAction(e -> {
@@ -55,6 +89,9 @@ public class LevelEditor
diffList.setItems(diffList2);
});
+ HBox buttons = new HBox();
+ buttons.getChildren().addAll(edit,remove,refresh);
+
TextField newDiff = new TextField("new");
Button newDiffButton = new Button("add");
newDiffButton.setOnAction(e -> level.addDiff(newDiff.getText()));
@@ -62,7 +99,7 @@ public class LevelEditor
newDiffBox.getChildren().addAll(newDiff,newDiffButton);
Button save = new Button("Save");
- save.setOnAction(e -> {
+ save.setOnAction(e -> { //asigns feilds to values
level.setTitle(title.getText());
level.setArtist(artist.getText());
level.desc = desc.getText();
@@ -71,13 +108,25 @@ public class LevelEditor
level.colors[2] = c3.getValue();
level.colors[3] = c4.getValue();
level.colors[4] = c5.getValue();
+ if (selectedBackground != null && selectedBackground.exists())
+ {
+ level.addFile(selectedBackground,"background.png");
+ }
+ if (selectedPreview != null && selectedPreview.exists())
+ {
+ level.addFile(selectedPreview,"preview.png");
+ }
+ if (selectedSong != null)
+ {
+ level.addFile(selectedSong,"song.wav");
+ }
level.writeMetadata();
});
VBox main = new VBox();
- main.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,artistLabel,artist,descLabel,desc,colorsLabel,c1,c2,c3,c4,c5,diffLabel,diffList,refresh,newDiffBox,save);
-
- Stage primaryStage = new Stage();
+ main.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,artistLabel,artist,descLabel,desc,colorsLabel,
+ c1,c2,c3,c4,c5,filesLabel,previewButton,backgroundButton,songButton,diffLabel,diffList,buttons,newDiffBox,save);
+
Scene scene = new Scene(main);
primaryStage.setScene(scene);
primaryStage.show();