diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java index 833e52beb59f423a9c0c9c14b81d82ecb46df735..73f60d57b6508e359fe2e29260932804f1696d19 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java @@ -8,6 +8,7 @@ import de.tobias.playpad.pad.content.Playlistable; import de.tobias.playpad.pad.content.play.Pauseable; import de.tobias.playpad.pad.fade.listener.PadFadeContentListener; import de.tobias.playpad.pad.fade.listener.PadFadeDurationListener; +import de.tobias.playpad.pad.listener.PadNameChangeListener; import de.tobias.playpad.pad.listener.PadStatusControlListener; import de.tobias.playpad.pad.listener.PadStatusNotFoundListener; import de.tobias.playpad.pad.listener.trigger.PadTriggerContentListener; @@ -65,6 +66,7 @@ public class Pad implements IPad { */ // Global Listener (unabhängig von der UI), für Core Functions wie Play, Pause + private transient PadNameChangeListener padNameChangeListener; private transient PadStatusControlListener padStatusControlListener; private transient PadStatusNotFoundListener padStatusNotFoundListener; private transient PadFadeContentListener padFadeContentListener; @@ -121,6 +123,9 @@ public class Pad implements IPad { private void initPadListener() { // Remove old listener from properties + if (padNameChangeListener != null && nameProperty != null) { + nameProperty.removeListener(padNameChangeListener); + } if (padStatusControlListener != null && statusProperty != null) { statusProperty.removeListener(padStatusControlListener); } @@ -143,18 +148,18 @@ public class Pad implements IPad { } // init new listener for properties + padNameChangeListener = new PadNameChangeListener(this); + nameProperty.addListener(padNameChangeListener); padStatusControlListener = new PadStatusControlListener(this); statusProperty.addListener(padStatusControlListener); // Fade - padFadeDurationListener = new PadFadeDurationListener(this); padFadeContentListener = new PadFadeContentListener(this); contentProperty.addListener(padFadeContentListener); padFadeContentListener.changed(contentProperty, null, getContent()); // Not found status count - padStatusNotFoundListener = new PadStatusNotFoundListener(project); statusProperty.addListener(padStatusNotFoundListener); diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadNameChangeListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadNameChangeListener.java new file mode 100644 index 0000000000000000000000000000000000000000..af19e4f1cdc06d24b3cefb77037f2d88af408b91 --- /dev/null +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadNameChangeListener.java @@ -0,0 +1,25 @@ +package de.tobias.playpad.pad.listener; + +import de.thecodelabs.logger.Logger; +import de.tobias.playpad.PlayPadPlugin; +import de.tobias.playpad.pad.Pad; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; + +public class PadNameChangeListener implements ChangeListener<String> { + + private final Pad pad; + + public PadNameChangeListener(Pad pad) { + this.pad = pad; + } + + @Override + public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { + try { + PlayPadPlugin.getInstance().getPadListener().forEach(listener -> listener.onNameChanged(pad, oldValue, newValue)); + } catch (Exception e) { + Logger.error(e); + } + } +} diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/plugin/PadListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/plugin/PadListener.java index 5c9df06fdb5af598fe73958e56fed71265f4535b..a81a3e134132d1819a51d3777dcee956d41ff245 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/plugin/PadListener.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/plugin/PadListener.java @@ -13,6 +13,8 @@ import javafx.collections.ListChangeListener; */ public interface PadListener { + void onNameChanged(Pad pad, String oldValue, String newValue); + /** * Call then ever the status of a pad will be changed * diff --git a/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java b/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java index f65d2d28af1b7df25ed6f40c6a92f36a323deb95..03cacb671ab3a9c091bc8acbfce194b9ea826e2b 100644 --- a/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java +++ b/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java @@ -74,6 +74,11 @@ public class EqualizerPluginImpl implements PlayPadPluginStub, PluginArtifact, M }); } + @Override + public void onNameChanged(Pad pad, String oldValue, String newValue) { + // Nothing to implement + } + @Override public void onStatusChange(Pad pad, PadStatus newValue) { if (newValue == PadStatus.PLAY) { diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java index 05ce0b71bd3f45bcb790fdf0f8fae52ccd1b6354..7548965da7c09447db3a47ca2a58de225bc7cd79 100644 --- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java +++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/listener/PadPlayLogListener.java @@ -13,6 +13,11 @@ import javafx.collections.ListChangeListener; public class PadPlayLogListener implements PadListener { + @Override + public void onNameChanged(Pad pad, String oldValue, String newValue) { + // Nothing to implement + } + @Override public void onStatusChange(Pad pad, PadStatus newValue) { if (newValue == PadStatus.PLAY) { 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 376d97dee8a7393a12023ede7b9d23e0e45fdfde..9953f386f8eae9d743ffe3200db402558432ec14 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.{PadStatusListener, ProjectListener} +import de.tobias.playpad.plugin.api.websocket.listener.{PadApiListener, ProjectListener} import de.tobias.playpad.plugin.{Module, PlayPadPluginStub} import javafx.application.Platform import javafx.collections.{FXCollections, ObservableMap} @@ -36,7 +36,7 @@ class WebApiPlugin extends PlayPadPluginStub with PluginArtifact { module = new Module(descriptor.getName, descriptor.getArtifactId) Localization.addResourceBundle("plugin/webapi/lang/base", getClass.getClassLoader) - PlayPadPlugin.getInstance().addPadListener(new PadStatusListener) + PlayPadPlugin.getInstance().addPadListener(new PadApiListener) PlayPadPlugin.getInstance().addGlobalListener(new ProjectListener) Logger.debug("Enable Web API Plugin") diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadStatusListener.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadApiListener.scala similarity index 58% rename from PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadStatusListener.scala rename to PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadApiListener.scala index ffd31cb462573fa1630bcf9448d4f4eda0b7a387..efa8bfea00c6b5b123ea93200c9f9e41acac4c30 100644 --- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadStatusListener.scala +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/listener/PadApiListener.scala @@ -5,7 +5,17 @@ import de.tobias.playpad.pad.{Pad, PadStatus} import de.tobias.playpad.plugin.PadListener import de.tobias.playpad.plugin.api.websocket.WebSocketHandler -class PadStatusListener extends PadListener { +class PadApiListener extends PadListener { + + override def onNameChanged(pad: Pad, oldValue: String, newValue: String): Unit = { + val payload = new JsonObject + + payload.addProperty("pad", pad.getUuid.toString) + payload.addProperty("oldValue", oldValue) + payload.addProperty("newValue", newValue) + + WebSocketHandler.instance.sendUpdate("pad-name-changed", payload) + } override def onStatusChange(pad: Pad, newValue: PadStatus): Unit = { val payload = new JsonObject