From 7eb19951b1b33f789ec126b9d71d5b744362ea3b Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Fri, 6 Oct 2023 23:35:52 +0200 Subject: [PATCH] #187 - Add new page-action, navigate-action method to web api --- .../api/websocket/WebSocketHandler.scala | 4 +++- .../methods/NavigateActionMethod.scala | 24 +++++++++++++++++++ .../websocket/methods/PageActionMethod.scala | 22 +++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/NavigateActionMethod.scala create mode 100644 PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PageActionMethod.scala diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala index 472b11e9..469b8294 100644 --- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala @@ -19,7 +19,9 @@ class WebSocketHandler { "project-current" -> new ProjectCurrentMethod, "project-open" -> new ProjectOpenMethod, "pad-status-change" -> new PadStatusChangeMethod, - "cart-action" -> new CartActionMethod + "cart-action" -> new CartActionMethod, + "page-action" -> new PageActionMethod, + "navigate-action" -> new NavigateActionMethod ) @OnWebSocketConnect def connected(session: Session): Unit = { diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/NavigateActionMethod.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/NavigateActionMethod.scala new file mode 100644 index 00000000..e349be8b --- /dev/null +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/NavigateActionMethod.scala @@ -0,0 +1,24 @@ +package de.tobias.playpad.plugin.api.websocket.methods + +import com.google.gson.JsonObject +import de.tobias.playpad.PlayPadPlugin +import de.tobias.playpad.plugin.api.websocket.MethodExecutable +import de.tobias.playpad.plugin.api.websocket.message.Message +import javafx.application.Platform +import org.eclipse.jetty.websocket.api.Session + +class NavigateActionMethod extends MethodExecutable { + + override def execute(session: Session, message: Message): JsonObject = { + val mainViewController = PlayPadPlugin.getInstance.getMainViewController + + message.payload.get("action").getAsString match { + case "PREVIOUS" => + Platform.runLater(() => mainViewController.showPage(mainViewController.getPage - 1)) + case "NEXT" => + Platform.runLater(() => mainViewController.showPage(mainViewController.getPage + 1)) + case _ => + } + null + } +} diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PageActionMethod.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PageActionMethod.scala new file mode 100644 index 00000000..09c89060 --- /dev/null +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PageActionMethod.scala @@ -0,0 +1,22 @@ +package de.tobias.playpad.plugin.api.websocket.methods + +import com.google.gson.JsonObject +import de.tobias.playpad.PlayPadPlugin +import de.tobias.playpad.plugin.api.websocket.MethodExecutable +import de.tobias.playpad.plugin.api.websocket.message.Message +import javafx.application.Platform +import org.eclipse.jetty.websocket.api.Session + +class PageActionMethod extends MethodExecutable { + + override def execute(session: Session, message: Message): JsonObject = { + val project = PlayPadPlugin.getInstance.getCurrentProject + val mainViewController = PlayPadPlugin.getInstance.getMainViewController + val targetPage = message.payload.get("page").getAsInt + + if (targetPage < 0 || targetPage >= project.getPages.size) return null + + Platform.runLater(() => mainViewController.showPage(targetPage)) + return null + } +} -- GitLab