diff --git a/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItem.java b/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItem.java index 7bb7597bec88d5a0f72cfae7fb6d7f75e62c5ebe..a9bb720c3fc9b2e5ac0a080cf5b7175b08fbc57c 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItem.java +++ b/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItem.java @@ -19,14 +19,13 @@ public class CartTriggerItem extends TriggerItem { private boolean allCarts; private PadStatus newStatus; // Only Play, Pause, Stop - private String type; + private final String type; CartTriggerItem(String type) { - super(); this.type = type; - newStatus = PadStatus.PLAY; - allCarts = false; - uuids = new UniqList<>(); + this.newStatus = PadStatus.PLAY; + this.allCarts = false; + this.uuids = new UniqList<>(); } public List<UUID> getCarts() { diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java index 1168ae13aedb828a12ba14ff18c14bad68718a1d..1d58f123a2ceb0ab27de8d3dda69a55e48501112 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java @@ -3,9 +3,9 @@ package de.tobias.playpad.viewcontroller.option.pad.trigger; import de.thecodelabs.utils.ui.NVC; import de.thecodelabs.utils.util.Localization; import de.tobias.playpad.PlayPadMain; -import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadStatus; import de.tobias.playpad.project.Project; +import de.tobias.playpad.project.api.IPad; import de.tobias.playpad.trigger.CartTriggerItem; import de.tobias.playpad.view.main.ProjectPreviewView; import de.tobias.playpad.viewcontroller.main.IMainViewController; @@ -35,12 +35,12 @@ public class CartTriggerViewController extends NVC { this.item = item; Project project = PlayPadMain.getProgramInstance().getCurrentProject(); - final List<Pad> pads = item.getCarts().stream().map(project::getPad).collect(Collectors.toList()); + final List<? extends IPad> pads = item.getCarts().stream().map(project::getPad).collect(Collectors.toList()); projectPreviewView = new ProjectPreviewView(project, pads, mainViewController.getPage()); projectPreviewView.setPadding(new Insets(0, 0, 0, 164)); projectPreviewView.selectedProperty().addListener((InvalidationListener) observable -> { item.getCarts().clear(); - for (Pad pad : projectPreviewView.getSelected()) { + for (IPad pad : projectPreviewView.getSelected()) { item.getCarts().add(pad.getUuid()); } }); diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java index f48a57341e8a354af30dafc4ead00f256d7955f4..66718e15186b963c68d064339c0ac51aa15581c5 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java @@ -6,6 +6,7 @@ import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.Strings; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.project.Project; +import de.tobias.playpad.project.api.IPad; import de.tobias.playpad.trigger.VolumeTriggerItem; import de.tobias.playpad.view.main.ProjectPreviewView; import de.tobias.playpad.viewcontroller.main.IMainViewController; @@ -48,7 +49,7 @@ public class VolumeTriggerViewController extends NVC { projectPreviewView.setPadding(new Insets(0, 0, 0, 164)); projectPreviewView.selectedProperty().addListener((InvalidationListener) observable -> { item.getCarts().clear(); - for (Pad pad : projectPreviewView.getSelected()) { + for (IPad pad : projectPreviewView.getSelected()) { item.getCarts().add(pad.getUuid()); } }); 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 cbefe4d2a0c9c95ce5607e7bcd510b7311212ea9..cfc4fdd270537ebde4fe40b6e6a3500f813ff231 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java @@ -16,6 +16,7 @@ import de.tobias.playpad.pad.mediapath.MediaPath; import de.tobias.playpad.pad.viewcontroller.AbstractPadViewController; import de.tobias.playpad.project.Project; import de.tobias.playpad.project.ProjectSettings; +import de.tobias.playpad.project.api.IPad; import de.tobias.playpad.project.page.PadIndex; import de.tobias.playpad.project.page.Page; import de.tobias.playpad.project.page.PageCoordinate; @@ -39,7 +40,7 @@ import java.util.UUID; * @author tobias * @version 6.2.0 */ -public class Pad { +public class Pad implements IPad { private UUID uuid; private IntegerProperty positionProperty = new SimpleIntegerProperty(); diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/Project.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/Project.java index eedc4bcac8b6176a772fb4b133d1ac2a7d3682f6..9d9d3962f8b991c7c6ba09830843c75883f873be 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/project/Project.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/Project.java @@ -3,6 +3,7 @@ package de.tobias.playpad.project; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadStatus; import de.tobias.playpad.pad.mediapath.MediaPath; +import de.tobias.playpad.project.api.IProject; import de.tobias.playpad.project.page.PadIndex; import de.tobias.playpad.project.page.Page; import de.tobias.playpad.project.ref.ProjectReference; @@ -27,7 +28,7 @@ import java.util.stream.Collectors; * @author tobias * @since 6.0.0 */ -public class Project { +public class Project implements IProject { /** * Project file extension. diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java index 0e4d089f1fa7f183a685ac292fc2fc363ca7cb2d..34c065494f144ce1e3321292514e2b14a5f87c90 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java @@ -2,10 +2,11 @@ package de.tobias.playpad.project; import de.thecodelabs.storage.settings.annotation.Key; import de.thecodelabs.utils.application.ApplicationUtils; +import de.tobias.playpad.project.api.IProjectSettings; import java.nio.file.Path; -public class ProjectSettings { +public class ProjectSettings implements IProjectSettings { public static final int MAX_PAGES; diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPad.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPad.java new file mode 100644 index 0000000000000000000000000000000000000000..cca8d7203b80679feca92d1df8421924091a86d9 --- /dev/null +++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPad.java @@ -0,0 +1,15 @@ +package de.tobias.playpad.project.api; + +import de.tobias.playpad.pad.PadStatus; + +import java.util.UUID; + +public interface IPad { + UUID getUuid(); + + String getName(); + + PadStatus getStatus(); + + int getPositionReadable(); +} diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPage.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPage.java new file mode 100644 index 0000000000000000000000000000000000000000..23ba1b4a8c7eff9b1f3935c281869786a5e5e5ef --- /dev/null +++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPage.java @@ -0,0 +1,5 @@ +package de.tobias.playpad.project.api; + +public interface IPage { + IPad getPad(int x, int y); +} diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProject.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProject.java new file mode 100644 index 0000000000000000000000000000000000000000..1b19a1baabfe815cad8cb5eb7525d3ba2249981b --- /dev/null +++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProject.java @@ -0,0 +1,11 @@ +package de.tobias.playpad.project.api; + +import java.util.List; + +public interface IProject { + List<? extends IPage> getPages(); + + IPage getPage(int index); + + IProjectSettings getSettings(); +} diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProjectSettings.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProjectSettings.java new file mode 100644 index 0000000000000000000000000000000000000000..d2970dcb0c4971f05b30c1b420ceabb2279038c5 --- /dev/null +++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProjectSettings.java @@ -0,0 +1,8 @@ +package de.tobias.playpad.project.api; + +public interface IProjectSettings { + + int getColumns(); + + int getRows(); +} diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/page/Page.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/page/Page.java index 24f207894be9dc118cf8c20439094e3ab46ce851..1419a7e88f1d68a1f018cf2a1dd7408d7ea1a637 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/project/page/Page.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/page/Page.java @@ -3,6 +3,7 @@ package de.tobias.playpad.project.page; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.project.Project; import de.tobias.playpad.project.ProjectSettings; +import de.tobias.playpad.project.api.IPage; import de.tobias.playpad.server.sync.command.CommandManager; import de.tobias.playpad.server.sync.command.Commands; import de.tobias.playpad.server.sync.listener.upstream.PageUpdateListener; @@ -16,7 +17,7 @@ import java.util.*; * @author tobias * @since 6.0.0 */ -public class Page { +public class Page implements IPage { private UUID id; private IntegerProperty positionProperty; diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java index 118dc56017638413688062a0bd742f59ffc05dec..3872372739901d826233366244c371c5f437451f 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java @@ -13,5 +13,4 @@ public abstract class TriggerItemFactory extends Component { public abstract TriggerItem newInstance(Trigger trigger); public abstract NVC getSettingsController(TriggerItem item, IMainViewController mainViewController); - } diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java b/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java index 2e16c3cb79abe3471b9e6c0c185852f9efb87816..849d93003b3112b2522fb5b3c2ae525e27f9ef97 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java @@ -1,9 +1,9 @@ package de.tobias.playpad.view.main; -import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadStatus; -import de.tobias.playpad.project.Project; -import de.tobias.playpad.project.page.Page; +import de.tobias.playpad.project.api.IPad; +import de.tobias.playpad.project.api.IPage; +import de.tobias.playpad.project.api.IProject; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.Insets; @@ -18,10 +18,10 @@ import java.util.List; public class ProjectPreviewView extends Pagination { - private final Project project; - private final ObservableList<Pad> selected; + private final IProject project; + private final ObservableList<IPad> selected; - public ProjectPreviewView(Project project, List<Pad> preSelect, int initialPage) { + public ProjectPreviewView(IProject project, List<? extends IPad> preSelect, int initialPage) { super(project.getPages().size()); this.project = project; this.selected = FXCollections.observableArrayList(preSelect); @@ -38,10 +38,10 @@ public class ProjectPreviewView extends Pagination { gridPane.setPadding(new Insets(0, 0, 7, 0)); - final Page page = project.getPage(index); + final IPage page = project.getPage(index); for (int x = 0; x < project.getSettings().getColumns(); x++) { for (int y = 0; y < project.getSettings().getRows(); y++) { - final Pad pad = page.getPad(x, y); + final IPad pad = page.getPad(x, y); ToggleButton toggleButton = getToggleButton(selected, pad); gridPane.add(toggleButton, x, y); @@ -50,7 +50,7 @@ public class ProjectPreviewView extends Pagination { return gridPane; } - private ToggleButton getToggleButton(List<Pad> preSelect, Pad pad) { + private ToggleButton getToggleButton(List<IPad> preSelect, IPad pad) { ToggleButton toggleButton = new ToggleButton(String.valueOf(pad.getPositionReadable())); if (pad.getStatus() != PadStatus.EMPTY) { toggleButton.setTooltip(new Tooltip(pad.getName())); @@ -72,11 +72,11 @@ public class ProjectPreviewView extends Pagination { return toggleButton; } - public List<Pad> getSelected() { + public List<? extends IPad> getSelected() { return selected; } - public ObservableList<Pad> selectedProperty() { + public ObservableList<? extends IPad> selectedProperty() { return selected; } } diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItem.java b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItem.java new file mode 100644 index 0000000000000000000000000000000000000000..87371e602d3959f7f8ec55281a32e40fe8d0a50a --- /dev/null +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItem.java @@ -0,0 +1,31 @@ +package de.tobias.playpad.plugin.api.trigger; + +import de.tobias.playpad.pad.Pad; +import de.tobias.playpad.profile.Profile; +import de.tobias.playpad.project.Project; +import de.tobias.playpad.tigger.TriggerItem; +import de.tobias.playpad.viewcontroller.main.IMainViewController; + +public class RemoteTriggerItem extends TriggerItem { + + private final String type; + + public RemoteTriggerItem(String type) { + this.type = type; + } + + @Override + public String getType() { + return type; + } + + @Override + public void performAction(Pad pad, Project project, IMainViewController controller, Profile profile) { + + } + + @Override + public TriggerItem copy() { + return null; + } +} diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemFactory.java b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..1e5bb19c7588507111862ccb1f711775ac929170 --- /dev/null +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemFactory.java @@ -0,0 +1,24 @@ +package de.tobias.playpad.plugin.api.trigger; + +import de.thecodelabs.utils.ui.NVC; +import de.tobias.playpad.tigger.Trigger; +import de.tobias.playpad.tigger.TriggerItem; +import de.tobias.playpad.tigger.TriggerItemFactory; +import de.tobias.playpad.viewcontroller.main.IMainViewController; + +public class RemoteTriggerItemFactory extends TriggerItemFactory { + + public RemoteTriggerItemFactory(String type) { + super(type); + } + + @Override + public TriggerItem newInstance(Trigger trigger) { + return new RemoteTriggerItem(getType()); + } + + @Override + public NVC getSettingsController(TriggerItem item, IMainViewController mainViewController) { + return null; + } +} diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemSettingsController.java b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemSettingsController.java new file mode 100644 index 0000000000000000000000000000000000000000..235f933d5d53612da483b42b0e679312ed24b546 --- /dev/null +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemSettingsController.java @@ -0,0 +1,4 @@ +package de.tobias.playpad.plugin.api.trigger; + +public class RemoteTriggerItemSettingsController { +} diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/Trigger.xml b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/Trigger.xml new file mode 100644 index 0000000000000000000000000000000000000000..5fb97b9bbdeeb4d568f8517e44e0c8c6dccdf801 --- /dev/null +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/Trigger.xml @@ -0,0 +1,3 @@ +<Actions> + <Component id="RemoteCart" name="Trigger.RemoteCart.Name">de.tobias.playpad.plugin.api.trigger.RemoteTriggerItemFactory</Component> +</Actions> \ No newline at end of file diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/lang/base_de.properties b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/lang/base_de.properties index 7a95dbf926e2f468c3f450654a661f0eeb6f54a3..74bfbb3a632d77f93e46304ae28a2b2915e4ba38 100644 --- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/lang/base_de.properties +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/lang/base_de.properties @@ -11,3 +11,5 @@ webapi-settings.remote.address=IP-Address/Host webapi-settings.remote.port=Port webapi-settings.remote.add=Hinzuf\u00FCgen webapi-settings.remote.remove=L\u00F6schen + +Trigger.RemoteCart.Name=Remote Kachel \ No newline at end of file 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 23e9900a831a191987f0b7f3a4d199a4a883d154..d932311848a8520f29df01aa8738a6bbc2d4196a 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 @@ -27,12 +27,15 @@ class WebApiPlugin extends PlayPadPluginStub with PluginArtifact { override def startup(descriptor: PluginDescriptor): Unit = { module = new Module(descriptor.getName, descriptor.getArtifactId) + Localization.addResourceBundle("plugin/webapi/lang/base", getClass.getClassLoader) PlayPadPlugin.getInstance().addPadListener(new PadStatusListener) PlayPadPlugin.getInstance().addGlobalListener(new ProjectListener) Logger.debug("Enable Web API Plugin") + PlayPadPlugin.getRegistries.getTriggerItems.loadComponentsFromFile("plugin/webapi/Trigger.xml", getClass.getClassLoader, module, Localization.getBundle) + val settingsPath = WebApiPlugin.getWebApiSettingsPath if (Files.exists(settingsPath)) { webApiSettings = Storage.load(StorageTypes.JSON, classOf[WebApiSettings]) @@ -62,7 +65,6 @@ class WebApiPlugin extends PlayPadPluginStub with PluginArtifact { }) PlayPadPlugin.getInstance().addGlobalSettingsTab(() => new WebApiSettingsViewController(webApiSettings)) - Localization.addResourceBundle("plugin/webapi/lang/base", getClass.getClassLoader) } override def shutdown(): Unit = {