From 3d2213b66b7bd2d3dbe53274c99d2ea680b8eab9 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Sat, 7 Oct 2023 10:54:56 +0200
Subject: [PATCH] #187 - Change page changes to web api

---
 .../main/MainViewController.java              |  2 ++
 .../playpad/plugin/MainWindowListener.java    |  3 +++
 .../playpad/plugin/api/WebApiPlugin.scala     |  3 ++-
 .../listener/MainWindowPageListener.scala     | 19 +++++++++++++++++++
 4 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/MainWindowPageListener.scala

diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java
index 68a0de52..802ba9ea 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java
@@ -468,6 +468,8 @@ public class MainViewController extends NVC implements IMainViewController, Noti
 		}
 		loadUserCss();
 
+		PlayPadPlugin.getInstance().getMainViewListeners().forEach(listener -> listener.onCurrentPageChanged(page));
+
 		return true;
 	}
 
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/plugin/MainWindowListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/plugin/MainWindowListener.java
index ed330ccf..c73a2d3a 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/plugin/MainWindowListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/plugin/MainWindowListener.java
@@ -4,6 +4,9 @@ import de.tobias.playpad.viewcontroller.main.IMainViewController;
 
 public interface MainWindowListener extends WindowListener<IMainViewController> {
 
+	default void onCurrentPageChanged(int newPage) {
+	}
+
 	default void loadMenuKeyBinding() {
 	}
 }
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala
index 9953f386..900bedfc 100644
--- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala
@@ -15,7 +15,7 @@ import de.tobias.playpad.plugin.api.WebApiPlugin.connectToRemoteInstances
 import de.tobias.playpad.plugin.api.client.WebApiRemoteConnectionStateListener
 import de.tobias.playpad.plugin.api.settings.{WebApiRemoteSettings, WebApiSettings, WebApiSettingsViewController}
 import de.tobias.playpad.plugin.api.websocket.WebSocketHandler
-import de.tobias.playpad.plugin.api.websocket.listener.{PadApiListener, ProjectListener}
+import de.tobias.playpad.plugin.api.websocket.listener.{MainWindowPageListener, PadApiListener, ProjectListener}
 import de.tobias.playpad.plugin.{Module, PlayPadPluginStub}
 import javafx.application.Platform
 import javafx.collections.{FXCollections, ObservableMap}
@@ -38,6 +38,7 @@ class WebApiPlugin extends PlayPadPluginStub with PluginArtifact {
 
 		PlayPadPlugin.getInstance().addPadListener(new PadApiListener)
 		PlayPadPlugin.getInstance().addGlobalListener(new ProjectListener)
+		PlayPadPlugin.getInstance().addMainViewListener(new MainWindowPageListener)
 
 		Logger.debug("Enable Web API Plugin")
 
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/MainWindowPageListener.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/MainWindowPageListener.scala
new file mode 100644
index 00000000..fd1ceaef
--- /dev/null
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/MainWindowPageListener.scala
@@ -0,0 +1,19 @@
+package de.tobias.playpad.plugin.api.websocket.listener
+
+import com.google.gson.JsonObject
+import de.tobias.playpad.plugin.MainWindowListener
+import de.tobias.playpad.plugin.api.websocket.WebSocketHandler
+import de.tobias.playpad.viewcontroller.main.IMainViewController
+
+class MainWindowPageListener extends MainWindowListener {
+
+	override def onInit(t: IMainViewController): Unit = {
+	}
+
+	override def onCurrentPageChanged(newPage: Int): Unit = {
+		val payload = new JsonObject
+		payload.addProperty("newPage", newPage)
+
+		WebSocketHandler.instance.sendUpdate("current-page-changed", payload)
+	}
+}
-- 
GitLab