From 39d78b993404ef642f346348ca2fcb6d82009341 Mon Sep 17 00:00:00 2001 From: tobias <tobias@thecodedev.de> Date: Thu, 5 Sep 2019 19:48:45 +0200 Subject: [PATCH] Add pad status command to web api --- .../java/de/tobias/playpad/PlayPadImpl.java | 4 ++ .../dialog/PathMatchDialog.java | 42 ++++++++----------- .../api/websocket/WebSocketHandler.scala | 7 ++-- .../methods/PadStatusChangeMethod.scala | 32 ++++++++++++++ 4 files changed, 58 insertions(+), 27 deletions(-) create mode 100644 PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PadStatusChangeMethod.scala diff --git a/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java b/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java index ff295d87..79931607 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java +++ b/PlayWall/src/main/java/de/tobias/playpad/PlayPadImpl.java @@ -159,6 +159,10 @@ public class PlayPadImpl implements PlayPad { } else { currentProject = project; mainViewController.openProject(project); + + if (onLoaded != null) { + onLoaded.accept(mainViewController); + } } } diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java index e228382f..028c1a91 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/dialog/PathMatchDialog.java @@ -32,7 +32,6 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -252,35 +251,30 @@ public class PathMatchDialog extends NVC { } } - private Set<Path> searchHistory = new HashSet<>(); - private void find(boolean subdirectories) { // Check Project Worker.runLater(() -> { if (!missingMediaPaths.isEmpty()) { Set<Path> searchFolders = calculateSearchPaths(); - searchFolders.stream() - .filter(folder -> !searchHistory.contains(folder)) - .forEach(folder -> { - searchHistory.add(folder); - Logger.info("Search in: " + folder); - this.missingMediaPaths.parallelStream() - .filter(entry -> !entry.isMatched()) - .forEach(entry -> { - try { - Path result = MediaPool.find(entry.getMediaPath().getFileName(), folder, subdirectories); - if (result != null) { - Platform.runLater(() -> { - entry.setLocalPath(result); - entry.setSelected(true); - }); - } - } catch (IOException e) { - Logger.error(e); - } - }); - }); + searchFolders.forEach(folder -> { + Logger.info("Search in: " + folder); + this.missingMediaPaths.parallelStream() + .filter(entry -> !entry.isMatched()) + .forEach(entry -> { + try { + Path result = MediaPool.find(entry.getMediaPath().getFileName(), folder, subdirectories); + if (result != null) { + Platform.runLater(() -> { + entry.setLocalPath(result); + entry.setSelected(true); + }); + } + } catch (IOException e) { + Logger.error(e); + } + }); + }); Platform.runLater(() -> table.getItems().setAll(missingMediaPaths)); } }); 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 4f665597..08bc4686 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 @@ -5,7 +5,7 @@ import java.util.concurrent.ConcurrentLinkedQueue import com.google.gson.{Gson, JsonObject} import de.thecodelabs.logger.Logger import de.tobias.playpad.plugin.api.websocket.message.Message -import de.tobias.playpad.plugin.api.websocket.methods.{ProjectCurrentMethod, ProjectListMethod, ProjectOpenMethod} +import de.tobias.playpad.plugin.api.websocket.methods.{PadStatusChangeMethod, ProjectCurrentMethod, ProjectListMethod, ProjectOpenMethod} import org.eclipse.jetty.websocket.api.Session import org.eclipse.jetty.websocket.api.annotations._ @@ -17,7 +17,8 @@ class WebSocketHandler { private val methods: Map[String, MethodExecutable] = Map( "project-list" -> new ProjectListMethod, "project-current" -> new ProjectCurrentMethod, - "project-open" -> new ProjectOpenMethod + "project-open" -> new ProjectOpenMethod, + "pad-status-change" -> new PadStatusChangeMethod ) @OnWebSocketConnect def connected(session: Session): Unit = { @@ -42,7 +43,7 @@ class WebSocketHandler { } @OnWebSocketError def onError(session: Session, error: Throwable): Unit = { - Logger.warning(error.getMessage) + Logger.error(error) } } diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PadStatusChangeMethod.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PadStatusChangeMethod.scala new file mode 100644 index 00000000..492583d0 --- /dev/null +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PadStatusChangeMethod.scala @@ -0,0 +1,32 @@ +package de.tobias.playpad.plugin.api.websocket.methods + +import java.util.UUID + +import com.google.gson.JsonObject +import de.tobias.playpad.PlayPadPlugin +import de.tobias.playpad.pad.PadStatus +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 PadStatusChangeMethod extends MethodExecutable { + override def execute(session: Session, message: Message): JsonObject = { + val padId = UUID.fromString(message.payload.get("pad").getAsString) + val newStatus = PadStatus.valueOf(message.payload.get("status").getAsString) + + val currentProject = PlayPadPlugin.getInstance().getCurrentProject + val pad = currentProject.getPad(padId) + + Platform.runLater(() => { + newStatus match { + case PadStatus.PLAY => pad.play() + case PadStatus.PAUSE => pad.pause() + case PadStatus.STOP => pad.stop() + case _ => + } + }) + + new JsonObject + } +} -- GitLab