diff options
| author | sowgro <tpoke.ferrari@gmail.com> | 2024-07-22 01:28:11 -0400 | 
|---|---|---|
| committer | sowgro <tpoke.ferrari@gmail.com> | 2024-07-22 01:28:11 -0400 | 
| commit | 231c511304915d80aab89d28779d7445ad21ef70 (patch) | |
| tree | 976b3f2e19e84d71acec86607ee16c9c1d9bdef1 /src | |
| parent | d29ac15fa2311cb664f14334f3043adfac4cf5f9 (diff) | |
| download | NPEhero-231c511304915d80aab89d28779d7445ad21ef70.tar.gz NPEhero-231c511304915d80aab89d28779d7445ad21ef70.tar.bz2 NPEhero-231c511304915d80aab89d28779d7445ad21ef70.zip | |
Refactor: pages now extend Page
Diffstat (limited to 'src')
17 files changed, 269 insertions, 278 deletions
| diff --git a/src/main/java/net/sowgro/npehero/Driver.java b/src/main/java/net/sowgro/npehero/Driver.java index fa36ee5..6544ebe 100755 --- a/src/main/java/net/sowgro/npehero/Driver.java +++ b/src/main/java/net/sowgro/npehero/Driver.java @@ -23,7 +23,7 @@ public class Driver extends Application      public static final Image MENU_BACKGROUND = new Image(Driver.class.getResource("mountains.png").toExternalForm());;      public static Stage primaryStage; -    static ScrollPane primaryPane = new ScrollPane(); +    public static ScrollPane primaryPane = new ScrollPane();      static ImageView backgroundImage = new ImageView();      static ImageView backgroundImage2 = new ImageView(); @@ -50,6 +50,8 @@ public class Driver extends Application          primaryStage = newPrimaryStage; +        primaryPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER); +          StackPane root = new StackPane(backgroundImage2, backgroundImage, primaryPane);          Scene primaryScene = new Scene(root, 800,600); @@ -85,7 +87,7 @@ public class Driver extends Application       * Replaces/adds a new pane to the primaryPane       * @param pane  the new pane       */ -    public static void setMenu(Pane pane) +    private static void setMenu(Pane pane)      {          primaryPane.setContent(pane);          pane.prefWidthProperty().bind(primaryPane.widthProperty()); //makes pane fill the window @@ -96,8 +98,8 @@ public class Driver extends Application      /**       * @return the current pane in primaryPane       */ -    public static Pane getMenu(){ -        return (Pane) primaryPane.getContent(); +    public static Page getMenu(){ +        return currentPage;      }      public static void setMenu(Page p) { @@ -120,23 +122,30 @@ public class Driver extends Application              return;          }          backgroundImage2.setImage(image); +          FadeTransition ft = new FadeTransition(Duration.seconds(0.2), backgroundImage);          ft.setInterpolator(Interpolator.EASE_BOTH);          ft.setFromValue(1.0);          ft.setToValue(0.0); -        ft.setOnFinished(_ -> { -            backgroundImage.setImage(image); -        }); + +        ScaleTransition st2 = new ScaleTransition(Duration.seconds(0.2), backgroundImage); +        st2.setInterpolator(Interpolator.LINEAR); +        st2.setFromX(1); +        st2.setFromY(1); +        st2.setToX(1.05); +        st2.setToY(1.05);          ScaleTransition st = new ScaleTransition(Duration.seconds(0.2), backgroundImage2); -        st.setInterpolator(Interpolator.EASE_BOTH); +        st.setInterpolator(Interpolator.LINEAR);          st.setFromX(1.05);          st.setFromY(1.05);          st.setToX(1.0);          st.setToY(1.0); -        ParallelTransition pt = new ParallelTransition(ft, st); +        ParallelTransition pt = new ParallelTransition(ft, st, st2); +        pt.setDelay(Duration.seconds(0.1));          pt.play(); +        st.setOnFinished(_ -> backgroundImage.setImage(image));      }      public static void setMenuBackground() diff --git a/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java b/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java index f5c29bd..11ee274 100755 --- a/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java +++ b/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java @@ -14,20 +14,18 @@ import javafx.scene.control.Button;  import javafx.scene.control.TextField;  import javafx.scene.layout.VBox;  import javafx.scene.text.Text; -import net.sowgro.npehero.main.Difficulty; -import net.sowgro.npehero.main.Note; -import net.sowgro.npehero.main.Sound; -import net.sowgro.npehero.main.ValidIndicator; +import net.sowgro.npehero.main.*; -public class DiffEditor extends Pane +public class DiffEditor extends Page  {      Difficulty diff;      ScrollPane scroll; -    public Pane prev; +    HBox content = new HBox(); -    public DiffEditor(Difficulty diff, Pane prev) -    { +    public Page prev; + +    public DiffEditor(Difficulty diff, Page prev) {          this.diff = diff;          this.prev = prev; @@ -42,7 +40,7 @@ public class DiffEditor extends Pane          TextField priority = new TextField(diff.priority+"");          Button editNotes = new Button("Edit notes"); -        editNotes.setOnAction(e -> { +        editNotes.setOnAction(_ -> {              if (diff.level.song == null) {                  Driver.setMenu(new ErrorDisplay("You must import a song file before editing the notes!", this));              } @@ -52,19 +50,17 @@ public class DiffEditor extends Pane          });          Button oldEditNotes = new Button("Edit notes (legacy)"); -        oldEditNotes.setOnAction(_ -> { -            Driver.setMenu(new ErrorDisplay( -                    "Warning: \nThe legacy editor will overwrite all existing notes!", -                    this, -                    new NotesEditor(diff, this)) -            ); -        }); +        oldEditNotes.setOnAction(_ -> Driver.setMenu(new ErrorDisplay( +                "Warning: \nThe legacy editor will overwrite all existing notes!", +                this, +                new NotesEditor(diff, this)) +        ));          Button editScores = new Button("Clear leaderboard"); -        editScores.setOnAction(e -> diff.leaderboard.entries.clear()); +        editScores.setOnAction(_ -> diff.leaderboard.entries.clear());          Button playLevel = new Button("Play level"); -        playLevel.setOnAction(e -> { +        playLevel.setOnAction(_ -> {              if (diff.isValid && diff.level.isValid) {                  Driver.setMenu(new LevelSurround(diff.level, diff, this));              } @@ -74,7 +70,7 @@ public class DiffEditor extends Pane          });          Button save = new Button("Save"); -        save.setOnAction(e -> { //assigns text fields to values +        save.setOnAction(_ -> { //assigns text fields to values              diff.title = title.getText();  //            diff.bpm = Double.parseDouble(bpm.getText());  //            diff.numBeats = Integer.parseInt(numBeats.getText()); @@ -82,8 +78,8 @@ public class DiffEditor extends Pane              diff.write();          }); -        HBox content = new HBox(); -        ScrollPane scroll = new ScrollPane(content); +        HBox scrollContent = new HBox(); +        ScrollPane scroll = new ScrollPane(scrollContent);          scroll.setFitToWidth(true);          this.scroll = scroll;          scroll.getStyleClass().remove("scroll-pane"); @@ -96,9 +92,9 @@ public class DiffEditor extends Pane              lanes[i] = new Pane();          } -        content.getChildren().addAll(lanes); -        content.setSpacing(5); -        content.setAlignment(Pos.CENTER); +        scrollContent.getChildren().addAll(lanes); +        scrollContent.setSpacing(5); +        scrollContent.setAlignment(Pos.CENTER);          diff.notes.list.forEach(n -> lanes[n.lane].getChildren().add(drawNote(n))); @@ -131,18 +127,17 @@ public class DiffEditor extends Pane          });          VBox centerBox = new VBox(); -        centerBox.setAlignment(Pos.CENTER); +        centerBox.getChildren().addAll(main, exit);          centerBox.setSpacing(10); -        centerBox.getChildren().addAll(main,exit); -        centerBox.setMinWidth(400); +        centerBox.setAlignment(Pos.CENTER); -        HBox rootBox = new HBox(); -        rootBox.prefWidthProperty().bind(super.prefWidthProperty()); -        rootBox.prefHeightProperty().bind(super.prefHeightProperty()); -        rootBox.getChildren().add(centerBox); -        rootBox.setAlignment(Pos.CENTER); +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER); +    } -        super.getChildren().add(rootBox); +    @Override +    public Pane getContent() { +        return content;      }      // Duplicates of NotesEditor2 methods, should be made generic and combined diff --git a/src/main/java/net/sowgro/npehero/devmenu/DiffList.java b/src/main/java/net/sowgro/npehero/devmenu/DiffList.java index e27e90d..63c09bb 100755 --- a/src/main/java/net/sowgro/npehero/devmenu/DiffList.java +++ b/src/main/java/net/sowgro/npehero/devmenu/DiffList.java @@ -1,6 +1,5 @@  package net.sowgro.npehero.devmenu; -import javafx.beans.property.ReadOnlyBooleanWrapper;  import javafx.beans.property.ReadOnlyStringWrapper;  import javafx.geometry.Insets;  import javafx.geometry.Pos; @@ -11,12 +10,14 @@ import javafx.scene.layout.VBox;  import net.sowgro.npehero.Driver;  import net.sowgro.npehero.main.Difficulty;  import net.sowgro.npehero.main.Level; +import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Sound; -public class DiffList extends Pane +public class DiffList extends Page  { +    private HBox content = new HBox(); -    public DiffList(Level level, Pane prev) +    public DiffList(Level level, Page prev)      {          //sets up table view: requires special getters, setters and constructors to work          TableView<Difficulty> diffs = new TableView<>(); @@ -50,9 +51,8 @@ public class DiffList extends Pane              return row ;          }); -//        diffs.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.35));          diffs.setPrefWidth(400); -        diffs.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.67)); +        diffs.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.67));          Button edit = new Button("Edit");          edit.setOnAction(e -> Driver.setMenu(new DiffEditor(diffs.getSelectionModel().getSelectedItem(), this))); @@ -99,17 +99,6 @@ public class DiffList extends Pane              Driver.setMenu(prev);          }); -        VBox centerBox = new VBox(); -        centerBox.setAlignment(Pos.CENTER); -        centerBox.setSpacing(10); -        centerBox.getChildren().addAll(main,exit); - -        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); @@ -127,7 +116,17 @@ public class DiffList extends Pane              create.setSelected(false);          }); -        super.getChildren().add(rootBox); +        VBox centerBox = new VBox(); +        centerBox.getChildren().addAll(main, exit); +        centerBox.setSpacing(10); +        centerBox.setAlignment(Pos.CENTER); + +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER);      } +    @Override +    public Pane getContent() { +        return content; +    }  }
\ No newline at end of file diff --git a/src/main/java/net/sowgro/npehero/devmenu/ErrorDisplay.java b/src/main/java/net/sowgro/npehero/devmenu/ErrorDisplay.java index e5cd857..dc4b40c 100644 --- a/src/main/java/net/sowgro/npehero/devmenu/ErrorDisplay.java +++ b/src/main/java/net/sowgro/npehero/devmenu/ErrorDisplay.java @@ -8,10 +8,19 @@ import javafx.scene.layout.HBox;  import javafx.scene.layout.Pane;  import javafx.scene.layout.VBox;  import net.sowgro.npehero.Driver; +import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Sound; -public class ErrorDisplay extends Pane { -    public ErrorDisplay(String message, Pane prev) { +public class ErrorDisplay extends Page { + +    private HBox content = new HBox(); + +    /** +     * Error display with a message and Back button +     * @param message The message to display +     * @param prev The destination of the close button +     */ +    public ErrorDisplay(String message, Page prev) {          Label main = new Label(message);          main.getStyleClass().add("box"); @@ -23,35 +32,35 @@ public class ErrorDisplay extends Pane {          });          VBox centerBox = new VBox(); -        centerBox.setAlignment(Pos.CENTER); +        centerBox.getChildren().addAll(main, exit);          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); +        centerBox.setAlignment(Pos.CENTER); -        super.getChildren().add(rootBox); +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER);      } -    public ErrorDisplay(String message, Pane prev, Pane next) { +    /** +     * Error display with a message and Cancel and Proceed buttons +     * @param message The message to display +     * @param prev The destination of the Cancel button +     * @param next The destination of the Proceed button +     */ +    public ErrorDisplay(String message, Page prev, Page next) {          Label main = new Label(message);          main.getStyleClass().add("box");          main.setPadding(new Insets(10));          Button exit = new Button();          exit.setText("Cancel"); -        exit.setOnAction(e -> { +        exit.setOnAction(_ -> {              Sound.playSfx(Sound.BACKWARD);              Driver.setMenu(prev);          });          Button nextButton = new Button();          nextButton.setText("Proceed"); -        nextButton.setOnAction(e -> { +        nextButton.setOnAction(_ -> {              Sound.playSfx(Sound.FORWARD);              Driver.setMenu(next);          }); @@ -61,17 +70,16 @@ public class ErrorDisplay extends Pane {          bottom.setSpacing(10);          VBox centerBox = new VBox(); -        centerBox.setAlignment(Pos.CENTER); +        centerBox.getChildren().addAll(main, bottom);          centerBox.setSpacing(10); -        centerBox.getChildren().addAll(main,bottom); -        centerBox.setMinWidth(400); +        centerBox.setAlignment(Pos.CENTER); -        HBox rootBox = new HBox(); -        rootBox.prefWidthProperty().bind(super.prefWidthProperty()); -        rootBox.prefHeightProperty().bind(super.prefHeightProperty()); -        rootBox.getChildren().add(centerBox); -        rootBox.setAlignment(Pos.CENTER); +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER); +    } -        super.getChildren().add(rootBox); +    @Override +    public Pane getContent() { +        return content;      }  } diff --git a/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java b/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java index 7efcd05..003f929 100755 --- a/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java +++ b/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java @@ -10,18 +10,17 @@ import javafx.scene.text.Text;  import javafx.stage.FileChooser;  import javafx.stage.FileChooser.ExtensionFilter;  import net.sowgro.npehero.Driver; -import net.sowgro.npehero.main.Difficulty; -import net.sowgro.npehero.main.Level; -import net.sowgro.npehero.main.Sound; -import net.sowgro.npehero.main.ValidIndicator; +import net.sowgro.npehero.main.*; + +public class LevelEditor extends Page +{ +    private HBox content = new HBox(); -public class LevelEditor extends Pane -{       private File selectedSong = null;      private File selectedPreview = null;      private File selectedBackground = null; -    public LevelEditor(Level level, Pane prev) +    public LevelEditor(Level level, Page prev)      {          Text folderNameLabel = new Text("Folder name");          TextField folderName = new TextField(); @@ -175,17 +174,16 @@ public class LevelEditor extends Pane          bottom.setSpacing(10);          VBox centerBox = new VBox(); -        centerBox.setAlignment(Pos.CENTER); +        centerBox.getChildren().addAll(mainBox, bottom);          centerBox.setSpacing(10); -        centerBox.getChildren().addAll(mainBox,bottom); -        centerBox.setMinWidth(400); +        centerBox.setAlignment(Pos.CENTER); -        HBox rootBox = new HBox(); -        rootBox.prefWidthProperty().bind(super.prefWidthProperty()); -        rootBox.prefHeightProperty().bind(super.prefHeightProperty()); -        rootBox.getChildren().add(centerBox); -        rootBox.setAlignment(Pos.CENTER); +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER); +    } -        super.getChildren().add(rootBox); +    @Override +    public Pane getContent() { +        return content;      }  }
\ No newline at end of file diff --git a/src/main/java/net/sowgro/npehero/devmenu/LevelList.java b/src/main/java/net/sowgro/npehero/devmenu/LevelList.java index 6bdb893..7d899bd 100755 --- a/src/main/java/net/sowgro/npehero/devmenu/LevelList.java +++ b/src/main/java/net/sowgro/npehero/devmenu/LevelList.java @@ -1,6 +1,5 @@  package net.sowgro.npehero.devmenu; -import javafx.beans.property.ReadOnlyBooleanWrapper;  import javafx.beans.property.ReadOnlyStringWrapper;  import javafx.geometry.Insets;  import javafx.geometry.Pos; @@ -12,12 +11,12 @@ import javafx.scene.layout.VBox;  import net.sowgro.npehero.gui.MainMenu;  import net.sowgro.npehero.main.Level;  import net.sowgro.npehero.main.Levels; +import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Sound; -import java.time.Year; - -public class LevelList extends Pane +public class LevelList extends Page  { +    private HBox content = new HBox();      public LevelList()      { @@ -56,7 +55,7 @@ public class LevelList extends Pane              return row ;          });          levels.setPrefWidth(600); -        levels.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75)); +        levels.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.75));          Button edit = new Button("Edit");          edit.setOnAction(e -> Driver.setMenu(new LevelEditor(levels.getSelectionModel().getSelectedItem(), this))); @@ -104,16 +103,12 @@ public class LevelList extends Pane          });          VBox centerBox = new VBox(); -        centerBox.setAlignment(Pos.CENTER); +        centerBox.getChildren().addAll(main, exit);          centerBox.setSpacing(10); -        centerBox.getChildren().addAll(main,exit); -        centerBox.setMinWidth(400); +        centerBox.setAlignment(Pos.CENTER); -        HBox rootBox = new HBox(); -        rootBox.prefWidthProperty().bind(super.prefWidthProperty()); -        rootBox.prefHeightProperty().bind(super.prefHeightProperty()); -        rootBox.getChildren().add(centerBox); -        rootBox.setAlignment(Pos.CENTER); +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER);          create.setOnAction(_ -> {              if (create.isSelected()) { @@ -131,7 +126,10 @@ public class LevelList extends Pane              sidebar.getChildren().clear();              create.setSelected(false);          }); +    } -        super.getChildren().add(rootBox); +    @Override +    public Pane getContent() { +        return content;      }  }
\ No newline at end of file diff --git a/src/main/java/net/sowgro/npehero/devmenu/NotesEditor.java b/src/main/java/net/sowgro/npehero/devmenu/NotesEditor.java index e024ca4..3754847 100755 --- a/src/main/java/net/sowgro/npehero/devmenu/NotesEditor.java +++ b/src/main/java/net/sowgro/npehero/devmenu/NotesEditor.java @@ -17,9 +17,10 @@ import javafx.scene.layout.VBox;  import javafx.scene.text.Text;  import net.sowgro.npehero.main.Control;  import net.sowgro.npehero.main.Difficulty; +import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Sound; -public class NotesEditor extends Pane +public class NotesEditor extends Page  {      Text help;      String t1 = "Press Start to begin recording. Use the same keys. Note: existing notes will be overwritten."; @@ -27,7 +28,10 @@ public class NotesEditor extends Pane      Difficulty diff;      Timer timer;      PrintWriter writer; -    public NotesEditor(Difficulty diff, Pane prev) + +    private HBox content = new HBox(); + +    public NotesEditor(Difficulty diff, Page prev)      {          this.diff = diff; @@ -53,18 +57,12 @@ public class NotesEditor extends Pane          });          VBox centerBox = new VBox(); -        centerBox.setAlignment(Pos.CENTER); +        centerBox.getChildren().addAll(main, exit);          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); +        centerBox.setAlignment(Pos.CENTER); -        super.getChildren().add(rootBox); +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER);          try {              writer = new PrintWriter(diff.notes.getFile(), "UTF-8"); @@ -104,6 +102,11 @@ public class NotesEditor extends Pane          Driver.primaryStage.setOnCloseRequest(e -> stop());      } +    @Override +    public Pane getContent() { +        return content; +    } +      private void start()      {          Sound.playSong(new Media(diff.level.song.toString())); diff --git a/src/main/java/net/sowgro/npehero/devmenu/NotesEditor2.java b/src/main/java/net/sowgro/npehero/devmenu/NotesEditor2.java index 46d0235..22c3f5e 100644 --- a/src/main/java/net/sowgro/npehero/devmenu/NotesEditor2.java +++ b/src/main/java/net/sowgro/npehero/devmenu/NotesEditor2.java @@ -38,15 +38,14 @@ public class NotesEditor2 extends Page {      ListProperty<Note> noteList;      DiffEditor prev; +    private HBox content = new HBox(); +      public NotesEditor2(Difficulty diff, DiffEditor prev) {          this.diff = diff;          noteList = diff.notes.deepCopyList();          m = new MediaPlayer(new Media(diff.level.song.toURI().toString()));          this.prev = prev; -    } -    @Override -    public Pane getContent() {          // Buttons          VBox actionBox = new VBox();          actionBox.setSpacing(10); @@ -103,11 +102,11 @@ public class NotesEditor2 extends Page {          playhead.setFill(Color.WHITE);          playheadLane.getChildren().add(playhead); -        HBox content = new HBox(); -        content.setAlignment(Pos.CENTER); -        content.setSpacing(10); -        content.getChildren().addAll(playheadLane, rulerLane); -        content.getChildren().addAll(lanes); +        HBox scrollContent = new HBox(); +        scrollContent.setAlignment(Pos.CENTER); +        scrollContent.setSpacing(10); +        scrollContent.getChildren().addAll(playheadLane, rulerLane); +        scrollContent.getChildren().addAll(lanes);          Line playheadLine = new Line();          playheadLine.setStartX(0); @@ -121,7 +120,7 @@ public class NotesEditor2 extends Page {          contentOverlay.setPickOnBounds(false);          StackPane stackPane = new StackPane(); -        stackPane.getChildren().addAll(content, contentOverlay); +        stackPane.getChildren().addAll(scrollContent, contentOverlay);          scroll.setContent(stackPane);  //        scroll.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.35)); @@ -169,8 +168,8 @@ public class NotesEditor2 extends Page {          // Draw and update ruler          AtomicInteger lastRuler = new AtomicInteger(-1); -        content.heightProperty().addListener(_ -> { -            int ruler1 = (int) screenPosToSecond(content.getHeight()); +        scrollContent.heightProperty().addListener(_ -> { +            int ruler1 = (int) screenPosToSecond(scrollContent.getHeight());              for (int i = lastRuler.get() + 1; i <= ruler1; i++) {                  Label l = new Label(toMinAndSec(i)+" -");                  l.layoutYProperty().bind(secondToScreenPos(i)); @@ -181,19 +180,15 @@ public class NotesEditor2 extends Page {          });          VBox centerBox = new VBox(); -        centerBox.setAlignment(Pos.CENTER); +        centerBox.getChildren().addAll(main, exit);          centerBox.setSpacing(10); -        centerBox.getChildren().addAll(main, buttons); -        centerBox.setMinWidth(400); +        centerBox.setAlignment(Pos.CENTER); -        HBox rootBox = new HBox(); -//        rootBox.prefWidthProperty().bind(super.prefWidthProperty()); -//        rootBox.prefHeightProperty().bind(super.prefHeightProperty()); -        rootBox.getChildren().add(centerBox); -        rootBox.setAlignment(Pos.CENTER); +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER);          // write notes on key press -        rootBox.addEventFilter(KeyEvent.KEY_PRESSED, e -> { +        content.addEventFilter(KeyEvent.KEY_PRESSED, e -> {              KeyCode k = e.getCode();              if (k == Control.LANE0.getKey())           { WriteNote(0); }              if (k == Control.LANE1.getKey())           { WriteNote(1); } @@ -228,7 +223,7 @@ public class NotesEditor2 extends Page {          scrollLock.setOnAction(_ -> {              if (scrollLock.isSelected()) {                  // vvalue takes in a value between 0 and 1 NOT a pixel value -                scroll.vvalueProperty().bind(playhead.layoutYProperty().subtract(scroll.heightProperty().divide(2)).divide(content.heightProperty().subtract(scroll.heightProperty()))); +                scroll.vvalueProperty().bind(playhead.layoutYProperty().subtract(scroll.heightProperty().divide(2)).divide(scrollContent.heightProperty().subtract(scroll.heightProperty())));              }              else {                  scroll.vvalueProperty().unbind(); @@ -289,8 +284,11 @@ public class NotesEditor2 extends Page {                  helpBox.getChildren().clear();              }          }); +    } -        return rootBox; +    @Override +    public Pane getContent() { +        return content;      }      @Override diff --git a/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java b/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java index b025c06..b61d11c 100755 --- a/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java +++ b/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java @@ -14,7 +14,7 @@ import javafx.event.EventHandler;  import javafx.scene.input.KeyEvent;  import javafx.scene.media.Media;  import net.sowgro.npehero.Driver; -import net.sowgro.npehero.main.Control; +import net.sowgro.npehero.main.*;  import net.sowgro.npehero.gui.GameOver;  import javafx.geometry.Pos;  import javafx.scene.CacheHint; @@ -25,9 +25,6 @@ import javafx.scene.layout.VBox;  import javafx.scene.paint.Color;  import javafx.animation.*;  import javafx.util.*; -import net.sowgro.npehero.main.Difficulty; -import net.sowgro.npehero.main.Level; -import net.sowgro.npehero.main.Sound;  //hi aidan here are some objects you can use @@ -55,7 +52,7 @@ public class SongPlayer extends Pane {  	private Level level;  	private Difficulty difficulty; -	private Pane pane; +	private Page pane;  	Timer timer;			//the timer that determines when notes will fall, counted in terms of the song's bpm  	final int TIME = 1000;  //delay for notes falling down the screen @@ -101,7 +98,7 @@ public class SongPlayer extends Pane {  		});  	} -	public SongPlayer(Level lvl, Difficulty d, Pane p, ScoreController cntrl) { +	public SongPlayer(Level lvl, Difficulty d, Page p, ScoreController cntrl) {  		Sound.stopSong();  		song = lvl.song; diff --git a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java index b620b17..1d1a73d 100644 --- a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java +++ b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java @@ -9,12 +9,16 @@ import javafx.scene.input.KeyEvent;  import javafx.scene.layout.*;  import net.sowgro.npehero.Driver;  import net.sowgro.npehero.main.Control; +import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Sound;  import java.util.List;  import java.util.Map; -public class ControlEditor extends Pane { +public class ControlEditor extends Page { + +    private final HBox content = new HBox(); +      public ControlEditor() {          GridPane controls = new GridPane(); @@ -26,29 +30,8 @@ public class ControlEditor extends Pane {          controls.setVgap(20);          controls.setHgap(40); - -//        Pane dummy1 = new Pane(); -//        Pane dummy2 = new Pane(); -//        Pane dummy3 = new Pane(); -//        controls.add(dummy1, 0, 0); -//        controls.add(dummy2, 1, 0); -//        controls.add(dummy3, 2, 0); -// -//        Runnable r = () -> { -//            var vpw = scrollPane.getViewportBounds().getWidth(); -//            var itemswidth = dummy1.getWidth() + dummy2.getWidth() + dummy3.getWidth(); -//            var out = ((vpw - itemswidth) / 2) -10; -//            if (out < 10) { -//                controls.setHgap(10); -//            } -//            else { -//                controls.setHgap(out); -//            } -//        }; -//        scrollPane.viewportBoundsProperty().addListener((_, _, _) -> r.run()); -          scrollPane.setPrefWidth(700); -        scrollPane.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75)); +        scrollPane.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.75));          Button exit = new Button();          exit.setText("Back"); @@ -58,16 +41,12 @@ public class ControlEditor extends Pane {          });          VBox centerBox = new VBox(); -        centerBox.setAlignment(Pos.CENTER); +        centerBox.getChildren().addAll(scrollPane, exit);          centerBox.setSpacing(10); -        centerBox.getChildren().addAll(scrollPane,exit); -        centerBox.setMinWidth(400); +        centerBox.setAlignment(Pos.CENTER); -        HBox rootBox = new HBox(); -        rootBox.prefWidthProperty().bind(super.prefWidthProperty()); -        rootBox.prefHeightProperty().bind(super.prefHeightProperty()); -        rootBox.getChildren().add(centerBox); -        rootBox.setAlignment(Pos.CENTER); +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER);          ToggleGroup tg = new ToggleGroup();          int i = 0; @@ -98,15 +77,15 @@ public class ControlEditor extends Pane {                          @Override                          public void handle(KeyEvent k) {                              control.keyProperty.set(k.getCode()); -                            rootBox.removeEventFilter(KeyEvent.KEY_PRESSED, this); +                            content.removeEventFilter(KeyEvent.KEY_PRESSED, this);                              controlButton.setSelected(false);                              k.consume();                          }                      };                      if (controlButton.isSelected()) { -                        rootBox.addEventFilter(KeyEvent.KEY_PRESSED, keyListener); +                        content.addEventFilter(KeyEvent.KEY_PRESSED, keyListener);                      } else { -                        rootBox.removeEventFilter(KeyEvent.KEY_PRESSED, keyListener); +                        content.removeEventFilter(KeyEvent.KEY_PRESSED, keyListener);                      }                  });                  tg.getToggles().add(controlButton); @@ -122,8 +101,11 @@ public class ControlEditor extends Pane {              }          } +    } -        super.getChildren().add(rootBox); +    @Override +    public Pane getContent() { +        return content;      }      public String keyToString(KeyCode key) { diff --git a/src/main/java/net/sowgro/npehero/gui/GameOver.java b/src/main/java/net/sowgro/npehero/gui/GameOver.java index cd277e6..dd23f5f 100755 --- a/src/main/java/net/sowgro/npehero/gui/GameOver.java +++ b/src/main/java/net/sowgro/npehero/gui/GameOver.java @@ -1,7 +1,5 @@  package net.sowgro.npehero.gui; -import javafx.event.ActionEvent; -import javafx.event.EventHandler;  import javafx.geometry.Insets;  import javafx.geometry.Pos;  import javafx.scene.control.Button; @@ -14,12 +12,14 @@ import javafx.scene.text.Text;  import net.sowgro.npehero.Driver;  import net.sowgro.npehero.main.Difficulty;  import net.sowgro.npehero.main.Level; +import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Sound; -public class GameOver extends Pane +public class GameOver extends Page  { +    HBox content = new HBox(); -    public GameOver(Level level, Difficulty diff, Pane lastMenu, int score2) +    public GameOver(Level level, Difficulty diff, Page prev, int score2)      {          Text topText = new Text();          topText.setText("Level Complete"); @@ -59,20 +59,15 @@ public class GameOver extends Pane          nameLabel.getStyleClass().add("t3");          TextField name = new TextField(); -//        name.getStyleClass().remove("text-filed"); -//        name.getStyleClass().add("button");          name.setText("name");          Button save = new Button();          save.setText("Add"); -        save.setOnAction(new EventHandler<ActionEvent>() { //this is the same as the "e ->" thing but it allows more than one line to be added  -            @Override -            public void handle(ActionEvent event) { -                Sound.playSfx(Sound.FORWARD); -                save.setDisable(true); -                name.setDisable(true); -                diff.leaderboard.add(name.getText(), score2); -            } +        save.setOnAction(_ -> { +            Sound.playSfx(Sound.FORWARD); +            save.setDisable(true); +            name.setDisable(true); +            diff.leaderboard.add(name.getText(), score2);          });          BorderPane b = new BorderPane(); @@ -90,32 +85,31 @@ public class GameOver extends Pane          exit.setText("Back");          exit.setOnAction(e -> {              Sound.playSfx(Sound.BACKWARD); -            Driver.setMenu(lastMenu); +            Driver.setMenu(prev);          });          Button replay = new Button();          replay.setText("Replay");          replay.setOnAction(e -> {              Sound.playSfx(Sound.FORWARD); -            Driver.setMenu(new LevelSurround(level, diff, lastMenu)); +            Driver.setMenu(new LevelSurround(level, diff, prev));          });          BorderPane buttonBox = new BorderPane();          buttonBox.setLeft(exit);          buttonBox.setRight(replay); -          VBox centerBox = new VBox();          centerBox.getChildren().addAll(topText,levelDetailsBox,scoreBox,nameBox,buttonBox);          centerBox.setSpacing(10);          centerBox.setAlignment(Pos.CENTER); -        HBox rootBox = new HBox(); -        rootBox.getChildren().add(centerBox); -        rootBox.setAlignment(Pos.CENTER); -        rootBox.prefWidthProperty().bind(super.prefWidthProperty());  -        rootBox.prefHeightProperty().bind(super.prefHeightProperty()); +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER); +    } -        super.getChildren().add(rootBox); +    @Override +    public Pane getContent() { +        return content;      }  } diff --git a/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java b/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java index c769264..46ce22f 100755 --- a/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java +++ b/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java @@ -10,22 +10,20 @@ import javafx.scene.layout.HBox;  import javafx.scene.layout.Pane;  import javafx.scene.layout.VBox;  import net.sowgro.npehero.Driver; -import net.sowgro.npehero.main.Difficulty; -import net.sowgro.npehero.main.LeaderboardEntry; -import net.sowgro.npehero.main.Level; -import net.sowgro.npehero.main.Sound; +import net.sowgro.npehero.main.*; -public class LeaderboardView extends Pane +public class LeaderboardView extends Page  { +    private HBox content = new HBox(); -    public LeaderboardView(Level level, Difficulty diff, Pane prev) +    public LeaderboardView(Difficulty diff, Page prev)      {          //sets up table view: requires java bean getters, setters and constructors to work -        TableView<LeaderboardEntry> scores = new TableView<LeaderboardEntry>(); +        TableView<LeaderboardEntry> scores = new TableView<>(); -        TableColumn<LeaderboardEntry, String> nameCol = new TableColumn<LeaderboardEntry, String>("Name"); -        TableColumn<LeaderboardEntry, String> scoreCol = new TableColumn<LeaderboardEntry, String>("Score"); -        TableColumn<LeaderboardEntry, String> dateCol = new TableColumn<LeaderboardEntry, String>("Date"); +        TableColumn<LeaderboardEntry, String> nameCol = new TableColumn<>("Name"); +        TableColumn<LeaderboardEntry, String> scoreCol = new TableColumn<>("Score"); +        TableColumn<LeaderboardEntry, String> dateCol = new TableColumn<>("Date");          scores.getColumns().add(nameCol);          scores.getColumns().add(scoreCol); @@ -39,8 +37,8 @@ public class LeaderboardView extends Pane          scores.getStyleClass().add("unselectable"); -        scores.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.25));  -        scores.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75)); +        scores.prefWidthProperty().bind(content.prefWidthProperty().multiply(0.25)); +        scores.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.75));          scoreCol.setSortType(SortType.DESCENDING);          scores.getSortOrder().add(scoreCol); @@ -53,17 +51,16 @@ public class LeaderboardView extends Pane          });          VBox centerBox = new VBox(); -        centerBox.setAlignment(Pos.CENTER); +        centerBox.getChildren().addAll(scores, exit);          centerBox.setSpacing(10); -        centerBox.getChildren().addAll(scores,exit); -        centerBox.setMinWidth(400); +        centerBox.setAlignment(Pos.CENTER); -        HBox rootBox = new HBox(); -        rootBox.prefWidthProperty().bind(super.prefWidthProperty());  -        rootBox.prefHeightProperty().bind(super.prefHeightProperty()); -        rootBox.getChildren().add(centerBox); -        rootBox.setAlignment(Pos.CENTER); +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER); +    } -        super.getChildren().add(rootBox); +    @Override +    public Pane getContent() { +        return content;      }  } diff --git a/src/main/java/net/sowgro/npehero/gui/LevelDetails.java b/src/main/java/net/sowgro/npehero/gui/LevelDetails.java index df5529e..afbdce4 100755 --- a/src/main/java/net/sowgro/npehero/gui/LevelDetails.java +++ b/src/main/java/net/sowgro/npehero/gui/LevelDetails.java @@ -28,7 +28,7 @@ public class LevelDetails extends VBox       *        * @param level: the selected level on the right side       */ -    public LevelDetails(Level level) +    public LevelDetails(Level level, LevelSelector ls)      {          VBox rightBox = new VBox();          rightBox.prefWidthProperty().bind(super.prefWidthProperty()); @@ -99,13 +99,13 @@ public class LevelDetails extends VBox              play.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull()); //disables play button when no difficulty is selected              play.setOnAction(e -> {                  Sound.playSfx(Sound.FORWARD); -                Driver.setMenu(new LevelSurround(level, (Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu())); +                Driver.setMenu(new LevelSurround(level, (Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), ls));              });              leaderboard.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull());              leaderboard.setOnAction(e -> {                  Sound.playSfx(Sound.FORWARD); -                Driver.setMenu(new LeaderboardView(level, (Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu())); +                Driver.setMenu(new LeaderboardView((Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu()));              }); diff --git a/src/main/java/net/sowgro/npehero/gui/LevelSelector.java b/src/main/java/net/sowgro/npehero/gui/LevelSelector.java index eb08a99..1c840b4 100755 --- a/src/main/java/net/sowgro/npehero/gui/LevelSelector.java +++ b/src/main/java/net/sowgro/npehero/gui/LevelSelector.java @@ -11,10 +11,12 @@ import javafx.scene.layout.VBox;  import net.sowgro.npehero.Driver;  import net.sowgro.npehero.main.Level;  import net.sowgro.npehero.main.Levels; +import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Sound; -public class LevelSelector extends Pane -{    +public class LevelSelector extends Page +{ +    private final HBox content = new HBox();      public LevelSelector()      { @@ -32,8 +34,8 @@ public class LevelSelector extends Pane          levels.setItems(Levels.validList); -        levels.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.25));  -        levels.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75)); +        levels.prefWidthProperty().bind(content.prefWidthProperty().multiply(0.25)); +        levels.prefHeightProperty().bind(content.prefHeightProperty().multiply(0.75));          levels.setMinWidth(300); @@ -52,18 +54,18 @@ public class LevelSelector extends Pane          Pane rightBox = new Pane();          addDetails(rightBox, levels); - -        HBox rootBox = new HBox(); -        rootBox.prefWidthProperty().bind(super.prefWidthProperty());  -        rootBox.prefHeightProperty().bind(super.prefHeightProperty()); -        rootBox.getChildren().addAll(leftBox, rightBox); -        rootBox.setAlignment(Pos.CENTER); -        rootBox.setSpacing(10); +        content.getChildren().addAll(leftBox, rightBox); +        content.setSpacing(10); +        content.setAlignment(Pos.CENTER);          levels.getStyleClass().remove("list-view");          //listens for change in selected item of the list          levels.getSelectionModel().selectedItemProperty().addListener(_ -> addDetails(rightBox, levels)); -        super.getChildren().add(rootBox); +    } + +    @Override +    public Pane getContent() { +        return content;      }      /** @@ -73,16 +75,16 @@ public class LevelSelector extends Pane       */      private void addDetails(Pane rightBox, TableView<Level> levels)      { -        VBox details = new LevelDetails(levels.getSelectionModel().getSelectedItem()); +        VBox details = new LevelDetails(levels.getSelectionModel().getSelectedItem(), this);          if (! rightBox.getChildren().isEmpty())          {              rightBox.getChildren().remove(0);          }          rightBox.getChildren().add(details); -        details.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.37));  -        details.prefHeightProperty().bind(super.prefHeightProperty()); -        details.maxWidthProperty().bind(super.prefWidthProperty().multiply(0.37));  -        details.maxHeightProperty().bind(super.prefHeightProperty()); +        details.prefWidthProperty().bind(content.prefWidthProperty().multiply(0.37)); +        details.prefHeightProperty().bind(content.prefHeightProperty()); +        details.maxWidthProperty().bind(content.prefWidthProperty().multiply(0.37)); +        details.maxHeightProperty().bind(content.prefHeightProperty());      }  } diff --git a/src/main/java/net/sowgro/npehero/gui/LevelSurround.java b/src/main/java/net/sowgro/npehero/gui/LevelSurround.java index 2a0a51a..05614ff 100755 --- a/src/main/java/net/sowgro/npehero/gui/LevelSurround.java +++ b/src/main/java/net/sowgro/npehero/gui/LevelSurround.java @@ -14,12 +14,14 @@ import javafx.scene.text.Text;  import net.sowgro.npehero.main.Difficulty;  import net.sowgro.npehero.main.Level;  import net.sowgro.npehero.gameplay.ScoreController; +import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Sound; -public class LevelSurround extends Pane -{    +public class LevelSurround extends Page +{ +    private final HBox content = new HBox(); -    public LevelSurround(Level level, Difficulty difficulty, Pane prev) +    public LevelSurround(Level level, Difficulty difficulty, Page prev)      {          ScoreController sc = new ScoreController();          SongPlayer game = new SongPlayer(level, difficulty, prev, sc); @@ -102,13 +104,13 @@ public class LevelSurround extends Pane          comboBox.setBottomAnchor(comboTextBox, 0.0);          comboBox.setPadding(new Insets(10)); -        game.minWidthProperty().bind(super.prefHeightProperty().multiply(0.66)); -        game.minHeightProperty().bind(super.prefHeightProperty()); +        game.minWidthProperty().bind(content.heightProperty().multiply(0.66)); +        game.minHeightProperty().bind(content.heightProperty());          game.getStyleClass().add("box"); -        comboBox.minWidthProperty().bind(super.prefWidthProperty().subtract(game.minWidthProperty()).divide(2)); -        scoreBox.minWidthProperty().bind(super.prefWidthProperty().subtract(game.minWidthProperty()).divide(2)); +        comboBox.minWidthProperty().bind(Driver.primaryPane.widthProperty().subtract(game.minWidthProperty()).divide(2)); +        scoreBox.minWidthProperty().bind(Driver.primaryPane.widthProperty().subtract(game.minWidthProperty()).divide(2));          HBox centerBox = new HBox();          centerBox.getChildren().addAll(comboBox, game, scoreBox); @@ -117,10 +119,13 @@ public class LevelSurround extends Pane          StackPane root = new StackPane();          root.getChildren().addAll(centerBox, topBar); -        super.getChildren().add(root); -        root.prefWidthProperty().bind(super.prefWidthProperty()); -        root.prefHeightProperty().bind(super.prefHeightProperty()); +        content.getChildren().add(root);          game.start();      } + +    @Override +    public Pane getContent() { +        return content; +    }  }
\ No newline at end of file diff --git a/src/main/java/net/sowgro/npehero/gui/MainMenu.java b/src/main/java/net/sowgro/npehero/gui/MainMenu.java index 6511f22..f13deac 100755 --- a/src/main/java/net/sowgro/npehero/gui/MainMenu.java +++ b/src/main/java/net/sowgro/npehero/gui/MainMenu.java @@ -4,6 +4,7 @@ import javafx.geometry.Pos;  import javafx.scene.control.Button;  import javafx.scene.effect.BlurType;  import javafx.scene.effect.DropShadow; +import javafx.scene.layout.HBox;  import javafx.scene.layout.Pane;  import javafx.scene.layout.VBox;  import javafx.scene.paint.Color; @@ -16,9 +17,9 @@ import net.sowgro.npehero.main.Sound;  public class MainMenu extends Page { -    @Override -    public Pane getContent() { +    private final HBox content = new HBox(); +    public MainMenu() {          DropShadow dropShadow = new DropShadow();          dropShadow.setRadius(50.0);          dropShadow.setColor(Color.WHITE); @@ -68,10 +69,12 @@ public class MainMenu extends Page {          centerBox.getChildren().addAll(title, buttonBox);          centerBox.setSpacing(10); -        VBox rootBox = new VBox(); -        rootBox.setAlignment(Pos.CENTER); -        rootBox.getChildren().add(centerBox); +        content.getChildren().add(centerBox); +        content.setAlignment(Pos.CENTER); +    } -        return rootBox; +    @Override +    public Pane getContent() { +        return content;      }  } diff --git a/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java b/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java index b00420a..d9bad03 100755 --- a/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java +++ b/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java @@ -11,11 +11,13 @@ import javafx.scene.layout.Pane;  import javafx.scene.layout.VBox;  import javafx.scene.text.Text;  import net.sowgro.npehero.Driver; +import net.sowgro.npehero.main.Page;  import net.sowgro.npehero.main.Settings;  import net.sowgro.npehero.main.Sound; -public class SettingsEditor extends Pane +public class SettingsEditor extends Page  { +    private final HBox content = new HBox();      public SettingsEditor()      { @@ -99,16 +101,17 @@ public class SettingsEditor extends Pane          options.setSpacing(10);          options.setAlignment(Pos.CENTER);          options.getChildren().addAll(musicBox,SFXBox,fullBox,controlsBox,buttonBox); -        options.maxWidthProperty().bind(super.prefWidthProperty().multiply(0.25));  +        options.maxWidthProperty().bind(content.prefWidthProperty().multiply(0.25));          options.setMinWidth(400); -        options.prefHeightProperty().bind(super.prefHeightProperty()); - -        HBox rootBox = new HBox(); -        rootBox.prefWidthProperty().bind(super.prefWidthProperty());  -        rootBox.prefHeightProperty().bind(super.prefHeightProperty()); -        rootBox.getChildren().add(options); -        rootBox.setAlignment(Pos.CENTER); -        super.getChildren().add(rootBox); +        options.prefHeightProperty().bind(content.prefHeightProperty()); + +        content.getChildren().add(options); +        content.setAlignment(Pos.CENTER); +    } + +    @Override +    public Pane getContent() { +        return content;      }  } | 
