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 472b11e90806b2c7797ba87e9fc6a38b7fe71ef4..469b8294a88c9fa2910c94e819479a5cff917210 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 0000000000000000000000000000000000000000..e349be8bf4272ffc69caa11bf06d1ff06b8a2dcd --- /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 0000000000000000000000000000000000000000..09c89060903d98e410139b6acf3ddc771aae0196 --- /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 + } +}