diff --git a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/ContentPlayerViewController.scala b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/ContentPlayerViewController.scala index d53e5ca7b5c4c2a3192e84c98f0fb72d78eebb59..efb69ca36421d162eaa84a956ef86ad0ffdab212 100644 --- a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/ContentPlayerViewController.scala +++ b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/ContentPlayerViewController.scala @@ -1,9 +1,12 @@ package de.tobias.playpad.plugin.content +import java.util.stream.Collectors + import de.thecodelabs.logger.Logger import de.thecodelabs.utils.ui.NVC import de.thecodelabs.utils.ui.size.IgnoreStageSizing import de.tobias.playpad.plugin.content.settings.{PlayerInstance, PlayerInstanceConfiguration} +import de.tobias.playpad.project.page.PadIndex import javafx.geometry.Insets import javafx.scene.layout._ import javafx.scene.media.{MediaPlayer, MediaView} @@ -25,7 +28,7 @@ class ContentPlayerViewController extends NVC { setWidth(playerInstance.width) setHeight(playerInstance.height) - def showMediaPlayer(mediaPlayer: MediaPlayer): Unit = { + def showMediaPlayer(padIndex: PadIndex, mediaPlayer: MediaPlayer): Unit = { if (!mediaViews.contains(mediaPlayer)) { val mediaView = new MediaView(mediaPlayer) mediaView.setFitWidth(playerInstance.width) @@ -34,9 +37,11 @@ class ContentPlayerViewController extends NVC { } val mediaView = mediaViews(mediaPlayer) + mediaView.setUserData(padIndex) if (!getChildren.contains(mediaView)) { - getChildren.add(mediaView) + val index = activePlayers.indexOf(padIndex) + getChildren.add(index, mediaView) } } @@ -45,8 +50,11 @@ class ContentPlayerViewController extends NVC { getChildren.remove(mediaViews(mediaPlayer)) } } + + override def toString: String = f"MediaPlayerStack: ${getChildren.stream().map(view => f"MediaView: ${view.getUserData}").collect(Collectors.joining(", "))}" } + private var activePlayers: ListBuffer[PadIndex] = ListBuffer.empty private val mediaPlayers: ListBuffer[MediaPlayerStack] = ListBuffer.empty load("view", "PlayerView") @@ -66,12 +74,12 @@ class ContentPlayerViewController extends NVC { stage.getScene.setFill(Color.BLACK) } - def showMediaPlayer(mediaPlayer: MediaPlayer, zones: Seq[PlayerInstance]): Unit = { + def showMediaPlayer(padIndex: PadIndex, mediaPlayer: MediaPlayer, zones: Seq[PlayerInstance]): Unit = { val iterator = this.mediaPlayers.iterator while (iterator.hasNext) { val mediaPlayerStack = iterator.next() if (zones.contains(mediaPlayerStack.playerInstance)) { - mediaPlayerStack.showMediaPlayer(mediaPlayer) + mediaPlayerStack.showMediaPlayer(padIndex, mediaPlayer) } } } @@ -111,4 +119,8 @@ class ContentPlayerViewController extends NVC { stage.setHeight(maxHeight) }) } + + def addActivePadToList(padIndex: PadIndex): Unit = activePlayers.addOne(padIndex) + + def removeActivePadFromList(padIndex: PadIndex): Unit = activePlayers = activePlayers.filter(element => element != padIndex) } 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 6853ccb958c2b06f6184b663e0bcc4427074b820..e7bce2c14e8ce3574cf75fc9a112afa72e96d532 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 @@ -27,7 +27,7 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte mediaPlayer.seek(Duration.ZERO) - ContentPluginMain.playerViewController.showMediaPlayer(mediaPlayer, getSelectedZones) + ContentPluginMain.playerViewController.showMediaPlayer(getPad.getPadIndex, mediaPlayer, getSelectedZones) mediaPlayer.play() currentRunningIndex = mediaPlayers.indexOf(this) @@ -89,6 +89,8 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte if (isPause) { mediaPlayers(currentRunningIndex).resume() } else { + ContentPluginMain.playerViewController.addActivePadToList(getPad.getPadIndex) + getPad.setEof(false) mediaPlayers.head.play() } @@ -106,6 +108,8 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte mediaPlayers(currentRunningIndex).stop() currentRunningIndex = -1 + ContentPluginMain.playerViewController.removeActivePadFromList(getPad.getPadIndex) + val controller = getPad.getController if (controller != null) { controller.updatePlaylistLabel() @@ -127,6 +131,8 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte mediaPlayers(currentRunningIndex).next() return } + + ContentPluginMain.playerViewController.removeActivePadFromList(getPad.getPadIndex) } /*