diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java index 56097e458f3847a0d7c9642280da6b9a579dda30..c8107626b23694ef4ee628235b63a4bd5657123d 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java +++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java @@ -14,6 +14,7 @@ import de.tobias.playpad.pad.PadStatus; import de.tobias.playpad.pad.content.PadContent; import de.tobias.playpad.pad.content.PadContentFactory; import de.tobias.playpad.pad.content.PadContentRegistry; +import de.tobias.playpad.pad.content.Playlistable; import de.tobias.playpad.pad.content.play.Pauseable; import de.tobias.playpad.pad.view.IPadContentView; import de.tobias.playpad.pad.view.IPadView; @@ -56,6 +57,7 @@ public class DesktopPadView implements IPadView { private ProgressBar playBar; private Button playButton; private Button pauseButton; + private Button nextButton; private Button stopButton; private Button newButton; private Button settingsButton; @@ -108,6 +110,7 @@ public class DesktopPadView implements IPadView { // Buttons playButton = new PadButton(new FontIcon(FontAwesomeType.PLAY), controller); pauseButton = new PadButton(new FontIcon(FontAwesomeType.PAUSE), controller); + nextButton = new PadButton(new FontIcon(FontAwesomeType.FORWARD), controller); stopButton = new PadButton(new FontIcon(FontAwesomeType.STOP), controller); newButton = new PadButton(new FontIcon(FontAwesomeType.FOLDER_OPEN), controller); settingsButton = new PadButton(new FontIcon(FontAwesomeType.GEAR), controller); @@ -214,6 +217,10 @@ public class DesktopPadView implements IPadView { return pauseButton; } + Button getNextButton() { + return nextButton; + } + Button getStopButton() { return stopButton; } @@ -252,7 +259,11 @@ public class DesktopPadView implements IPadView { if (pad.getContent() != null) { if (pad.getContent() instanceof Pauseable) { if (pad.getStatus() == PadStatus.PLAY) { - buttonBox.getChildren().setAll(pauseButton, stopButton, settingsButton); + if (pad.getContent() instanceof Playlistable) { + buttonBox.getChildren().setAll(pauseButton, nextButton, stopButton, settingsButton); + } else { + buttonBox.getChildren().setAll(pauseButton, stopButton, settingsButton); + } } else { buttonBox.getChildren().setAll(playButton, stopButton, settingsButton); } diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java index 3b9bbbc5afee15b4d58d9117b346d2e2018561e1..34f7d484a23ad7b15eddbafddd9a61ae36bfa6bf 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java @@ -156,6 +156,8 @@ public class DesktopPadViewController implements IPadViewController, EventHandle onPlay(); } else if (event.getSource() == padView.getPauseButton()) { onPause(); + } else if (event.getSource() == padView.getNextButton()) { + onNext(); } else if (event.getSource() == padView.getStopButton()) { onStop(); } else if (event.getSource() == padView.getNewButton()) { @@ -183,6 +185,12 @@ public class DesktopPadViewController implements IPadViewController, EventHandle } } + private void onNext() { + if (pad.getContent() instanceof Playlistable) { + ((Playlistable) pad.getContent()).next(); + } + } + private void onStop() { if (pad.getContent() != null) { pad.setStatus(PadStatus.STOP); diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java index 43232e51265dcf5fb97412b1c34c0cf509a89a37..e615cf3e611624c68d0aaa98f7b489426966b8db 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java @@ -2,4 +2,6 @@ package de.tobias.playpad.pad.content; public interface Playlistable { int currentPlayingMediaIndex(); + + void next(); } diff --git a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala index e7bce2c14e8ce3574cf75fc9a112afa72e96d532..a637ae6d9f53ee0cdd49b3a86a713fd33b6cf7bb 100644 --- a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala +++ b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala @@ -103,6 +103,10 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte mediaPlayers(currentRunningIndex).pause() } + override def next(): Unit = { + mediaPlayers(currentRunningIndex).next() + } + override def stop(): Boolean = { isPause = false mediaPlayers(currentRunningIndex).stop()