diff options
Diffstat (limited to 'src/devmenu/LevelEditor.java')
-rw-r--r-- | src/devmenu/LevelEditor.java | 71 |
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(); |