From e1ce9f774a15f6ef6ada2cfcfd5f71cd38ebbf48 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Wed, 24 Jul 2024 19:20:58 +0200
Subject: [PATCH] #198 - Use FlowPane for page buttons instead of HBox

---
 .../desktop/DesktopMenuToolbarViewController.java | 15 ++++++++-------
 .../touch/TouchMenuToolbarViewController.java     | 12 ++++++------
 .../main/BasicMenuToolbarViewController.java      |  5 +++--
 .../main/resources/view/main/desktop/Header.fxml  |  3 +--
 .../main/resources/view/main/touch/Header.fxml    |  2 +-
 .../tobias/playpad/project/ProjectSettings.java   |  2 +-
 6 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
index 2f3410e6..0bf06c92 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
@@ -342,7 +342,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	@Override
 	public void initPageButtons() {
 		currentSelectedPageButton = -1;
-		pageHBox.getChildren().clear();
+		pageButtonPage.getChildren().clear();
 
 		if (openProject == null) {
 			return;
@@ -353,7 +353,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 
 			Button button = createPageButton(page, i);
 			button.setOnDragOver(new PageButtonDragHandler(mainViewController, i));
-			pageHBox.getChildren().add(button);
+			pageButtonPage.getChildren().add(button);
 		}
 	}
 
@@ -469,8 +469,8 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	@Override
 	public void highlightPageButton(int index) {
 		if (index >= 0) {
-			if (pageHBox.getChildren().size() > currentSelectedPageButton && currentSelectedPageButton >= 0) {
-				Node removeNode = pageHBox.getChildren().get(currentSelectedPageButton);
+			if (pageButtonPage.getChildren().size() > currentSelectedPageButton && currentSelectedPageButton >= 0) {
+				Node removeNode = pageButtonPage.getChildren().get(currentSelectedPageButton);
 				removeNode.getStyleClass().remove(CURRENT_PAGE_BUTTON);
 
 				if (removeNode instanceof Button) {
@@ -478,8 +478,8 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 				}
 			}
 
-			if (index < pageHBox.getChildren().size()) {
-				Node newNode = pageHBox.getChildren().get(index);
+			if (index < pageButtonPage.getChildren().size()) {
+				Node newNode = pageButtonPage.getChildren().get(index);
 				newNode.getStyleClass().add(CURRENT_PAGE_BUTTON);
 				currentSelectedPageButton = index;
 
@@ -501,7 +501,8 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 			dialog.showAndWait().ifPresent(projectReference -> {
 				try {
 					PlayPadMain.getProgramInstance().openProject(projectReference, null);
-				} catch (DocumentException | IOException | ProjectNotFoundException | ProfileNotFoundException | ProfileAbortException e) {
+				} catch (DocumentException | IOException | ProjectNotFoundException | ProfileNotFoundException |
+						 ProfileAbortException e) {
 					Logger.error(e);
 				}
 			});
diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
index 3fb75001..ee25525a 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
@@ -53,7 +53,7 @@ public class TouchMenuToolbarViewController extends BasicMenuToolbarViewControll
 
 	@Override
 	public void initPageButtons() {
-		pageHBox.getChildren().clear();
+		pageButtonPage.getChildren().clear();
 
 		if (openProject == null) {
 			return;
@@ -63,7 +63,7 @@ public class TouchMenuToolbarViewController extends BasicMenuToolbarViewControll
 			Page page = openProject.getPage(i);
 
 			Button button = createPageButton(page, i);
-			pageHBox.getChildren().add(button);
+			pageButtonPage.getChildren().add(button);
 		}
 	}
 
@@ -120,13 +120,13 @@ public class TouchMenuToolbarViewController extends BasicMenuToolbarViewControll
 	@Override
 	public void highlightPageButton(int index) {
 		if (index >= 0) {
-			if (pageHBox.getChildren().size() > currentPage) {
-				Node removeNode = pageHBox.getChildren().get(currentPage);
+			if (pageButtonPage.getChildren().size() > currentPage) {
+				Node removeNode = pageButtonPage.getChildren().get(currentPage);
 				removeNode.getStyleClass().remove(CURRENT_PAGE_BUTTON);
 			}
 
-			if (pageHBox.getChildren().size() > index) {
-				Node newNode = pageHBox.getChildren().get(index);
+			if (pageButtonPage.getChildren().size() > index) {
+				Node newNode = pageButtonPage.getChildren().get(index);
 				newNode.getStyleClass().add(CURRENT_PAGE_BUTTON);
 				currentPage = index;
 			}
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/BasicMenuToolbarViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/BasicMenuToolbarViewController.java
index 83735e21..1a9a06e9 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/BasicMenuToolbarViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/BasicMenuToolbarViewController.java
@@ -19,6 +19,7 @@ import javafx.scene.control.Button;
 import javafx.scene.control.Label;
 import javafx.scene.control.Menu;
 import javafx.scene.control.Slider;
+import javafx.scene.layout.FlowPane;
 import javafx.scene.layout.HBox;
 
 import java.util.ResourceBundle;
@@ -32,7 +33,7 @@ public abstract class BasicMenuToolbarViewController extends MenuToolbarViewCont
 	protected HBox iconHbox;
 
 	@FXML
-	protected HBox pageHBox;
+	protected FlowPane pageButtonPage;
 	@FXML
 	protected HBox toolbarHBox;
 	@FXML
@@ -50,7 +51,7 @@ public abstract class BasicMenuToolbarViewController extends MenuToolbarViewCont
 
 	protected Project openProject; // REFERENCE zu MainViewController
 
-	public BasicMenuToolbarViewController(String name, String path, ResourceBundle localization) {
+	protected BasicMenuToolbarViewController(String name, String path, ResourceBundle localization) {
 		super(name, path, localization);
 	}
 
diff --git a/PlayWall/src/main/resources/view/main/desktop/Header.fxml b/PlayWall/src/main/resources/view/main/desktop/Header.fxml
index 8383f694..10862fb1 100644
--- a/PlayWall/src/main/resources/view/main/desktop/Header.fxml
+++ b/PlayWall/src/main/resources/view/main/desktop/Header.fxml
@@ -150,8 +150,7 @@
         <HBox fx:id="toolbarHBox" alignment="CENTER_LEFT" maxWidth="1.7976931348623157E308" spacing="14.0"
               styleClass="tool-bar">
             <children>
-                <HBox fx:id="pageHBox" alignment="CENTER_LEFT" maxWidth="1.7976931348623157E308" spacing="14.0"
-                      HBox.hgrow="ALWAYS"/>
+                <FlowPane fx:id="pageButtonPage" alignment="CENTER_LEFT" maxWidth="1.7976931348623157E308" hgap="14.0" vgap="14.0" HBox.hgrow="ALWAYS" />
                 <HBox fx:id="notFoundContainer" alignment="CENTER" spacing="14.0">
                     <children>
                         <Label fx:id="notFoundLabel"/>
diff --git a/PlayWall/src/main/resources/view/main/touch/Header.fxml b/PlayWall/src/main/resources/view/main/touch/Header.fxml
index 2c9b346a..e8a2ccea 100644
--- a/PlayWall/src/main/resources/view/main/touch/Header.fxml
+++ b/PlayWall/src/main/resources/view/main/touch/Header.fxml
@@ -5,7 +5,7 @@
 <?import javafx.scene.text.Font?>
 <HBox fx:id="toolbarHBox" alignment="CENTER_LEFT" maxWidth="1.7976931348623157E308" prefHeight="28.0" prefWidth="586.0" spacing="14.0" styleClass="tool-bar" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1">
     <children>
-        <HBox fx:id="pageHBox" alignment="CENTER_LEFT" maxWidth="1.7976931348623157E308" spacing="14.0" HBox.hgrow="ALWAYS" />
+        <FlowPane fx:id="pageButtonPage" alignment="CENTER_LEFT" maxWidth="1.7976931348623157E308" hgap="14.0" vgap="14.0" HBox.hgrow="ALWAYS" />
         <HBox fx:id="notFoundContainer" alignment="CENTER" spacing="7.0">
             <children>
                 <Label fx:id="notFoundLabel" />
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java
index 3752ac72..c47070e7 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java
@@ -9,7 +9,7 @@ import java.nio.file.Path;
 
 public class ProjectSettings implements IProjectSettings {
 
-	public static int MAX_PAGES = 10;
+	public static int MAX_PAGES = 50;
 
 	static {
 		final UserDefaults userDefaults = ApplicationUtils.getApplication().getUserDefaults();
-- 
GitLab