From 61e25b3b53ebdf8416217284c0a3e589a2b6b655 Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Tue, 1 Dec 2020 09:35:01 +0100 Subject: [PATCH] Extract MediaPlayerStack into separate class --- .../plugin/content/ContentPluginMain.scala | 1 + .../ContentPlayerViewController.scala | 71 +---------------- .../content/player/MediaPlayerStack.scala | 78 +++++++++++++++++++ 3 files changed, 81 insertions(+), 69 deletions(-) rename PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/{ => player}/ContentPlayerViewController.scala (60%) create mode 100644 PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/player/MediaPlayerStack.scala diff --git a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/ContentPluginMain.scala b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/ContentPluginMain.scala index 12f0ce36..8b265b03 100644 --- a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/ContentPluginMain.scala +++ b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/ContentPluginMain.scala @@ -4,6 +4,7 @@ import de.thecodelabs.plugins.PluginDescriptor import de.thecodelabs.storage.settings.{Storage, StorageTypes} import de.thecodelabs.utils.util.Localization import de.tobias.playpad.PlayPadPlugin +import de.tobias.playpad.plugin.content.player.ContentPlayerViewController import de.tobias.playpad.plugin.content.settings.{PlayerInstanceConfiguration, PlayerInstanceSettingsViewController} import de.tobias.playpad.plugin.{Module, PlayPadPluginStub} import javafx.application.Platform 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/player/ContentPlayerViewController.scala similarity index 60% rename from PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/ContentPlayerViewController.scala rename to PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/player/ContentPlayerViewController.scala index 42844bf2..01a3e3bd 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/player/ContentPlayerViewController.scala @@ -1,6 +1,4 @@ -package de.tobias.playpad.plugin.content - -import java.util.stream.Collectors +package de.tobias.playpad.plugin.content.player import de.thecodelabs.logger.Logger import de.thecodelabs.utils.ui.NVC @@ -9,80 +7,15 @@ import de.tobias.playpad.plugin.content.settings.{PlayerInstance, PlayerInstance import de.tobias.playpad.project.page.PadIndex import javafx.geometry.Insets import javafx.scene.layout._ -import javafx.scene.media.{MediaPlayer, MediaView} +import javafx.scene.media.MediaPlayer import javafx.scene.paint.Color import javafx.stage.{Stage, StageStyle} -import scala.collection.mutable import scala.collection.mutable.ListBuffer @IgnoreStageSizing class ContentPlayerViewController extends NVC { - private class MediaPlayerStack(val playerInstance: PlayerInstance) extends StackPane { - - private var activePlayers: ListBuffer[PadIndex] = ListBuffer.empty - val mediaViews: mutable.Map[MediaPlayer, MediaView] = new mutable.HashMap[MediaPlayer, MediaView]() - - setLayoutX(playerInstance.x) - setLayoutY(playerInstance.y) - setMinWidth(playerInstance.width) - setMaxWidth(playerInstance.width) - setMinHeight(playerInstance.height) - setMaxHeight(playerInstance.height) - - def addActivePad(padIndex: PadIndex): Unit = activePlayers.addOne(padIndex) - - def removeActivePad(padIndex: PadIndex): Unit = activePlayers = activePlayers.filter(element => element != padIndex) - - def showMediaPlayer(padIndex: PadIndex, mediaPlayer: MediaPlayer): Unit = { - if (!mediaViews.contains(mediaPlayer)) { - val mediaView = new MediaView(mediaPlayer) - mediaView.setFitWidth(playerInstance.width) - mediaView.setFitHeight(playerInstance.height) - mediaViews.put(mediaPlayer, mediaView) - } - - val mediaView = mediaViews(mediaPlayer) - mediaView.setUserData(padIndex) - mediaView.setOpacity(1.0) - - if (!getChildren.contains(mediaView)) { - val index = activePlayers.indexOf(padIndex) - try { - getChildren.add(index, mediaView) - } catch { - case e: Exception => - Logger.error(e) - getChildren.add(mediaView) - } - } - } - - def disconnectMediaPlayer(mediaPlayer: MediaPlayer): Unit = { - if (mediaViews.contains(mediaPlayer)) { - getChildren.remove(mediaViews(mediaPlayer)) - } - } - - def setFadeValue(mediaPlayer: MediaPlayer, value: Double): Unit = { - if (mediaViews.contains(mediaPlayer)) { - val mediaView = mediaViews(mediaPlayer) - mediaView.setOpacity(value) - } - } - - def highlight(on: Boolean): Unit = { - if (on) { - setBackground(new Background(new BackgroundFill(Color.RED, CornerRadii.EMPTY, Insets.EMPTY))) - } else { - setBackground(null) - } - } - - override def toString: String = f"MediaPlayerStack: ${getChildren.stream().map(view => f"MediaView: ${view.getUserData}").collect(Collectors.joining(", "))}" - } - private val mediaStacks: ListBuffer[MediaPlayerStack] = ListBuffer.empty load("view", "PlayerView") diff --git a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/player/MediaPlayerStack.scala b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/player/MediaPlayerStack.scala new file mode 100644 index 00000000..9ddf783e --- /dev/null +++ b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/player/MediaPlayerStack.scala @@ -0,0 +1,78 @@ +package de.tobias.playpad.plugin.content.player + +import java.util.stream.Collectors + +import de.thecodelabs.logger.Logger +import de.tobias.playpad.plugin.content.settings.PlayerInstance +import de.tobias.playpad.project.page.PadIndex +import javafx.geometry.Insets +import javafx.scene.layout.{Background, BackgroundFill, CornerRadii, StackPane} +import javafx.scene.media.{MediaPlayer, MediaView} +import javafx.scene.paint.Color + +import scala.collection.mutable +import scala.collection.mutable.ListBuffer + +class MediaPlayerStack(val playerInstance: PlayerInstance) extends StackPane { + + private var activePlayers: ListBuffer[PadIndex] = ListBuffer.empty + val mediaViews: mutable.Map[MediaPlayer, MediaView] = new mutable.HashMap[MediaPlayer, MediaView]() + + setLayoutX(playerInstance.x) + setLayoutY(playerInstance.y) + setMinWidth(playerInstance.width) + setMaxWidth(playerInstance.width) + setMinHeight(playerInstance.height) + setMaxHeight(playerInstance.height) + + def addActivePad(padIndex: PadIndex): Unit = activePlayers.addOne(padIndex) + + def removeActivePad(padIndex: PadIndex): Unit = activePlayers = activePlayers.filter(element => element != padIndex) + + def showMediaPlayer(padIndex: PadIndex, mediaPlayer: MediaPlayer): Unit = { + if (!mediaViews.contains(mediaPlayer)) { + val mediaView = new MediaView(mediaPlayer) + mediaView.setFitWidth(playerInstance.width) + mediaView.setFitHeight(playerInstance.height) + mediaViews.put(mediaPlayer, mediaView) + } + + val mediaView = mediaViews(mediaPlayer) + mediaView.setUserData(padIndex) + mediaView.setOpacity(1.0) + + if (!getChildren.contains(mediaView)) { + val index = activePlayers.indexOf(padIndex) + try { + getChildren.add(index, mediaView) + } catch { + case e: Exception => + Logger.error(e) + getChildren.add(mediaView) + } + } + } + + def disconnectMediaPlayer(mediaPlayer: MediaPlayer): Unit = { + if (mediaViews.contains(mediaPlayer)) { + getChildren.remove(mediaViews(mediaPlayer)) + } + } + + def setFadeValue(mediaPlayer: MediaPlayer, value: Double): Unit = { + if (mediaViews.contains(mediaPlayer)) { + val mediaView = mediaViews(mediaPlayer) + mediaView.setOpacity(value) + } + } + + def highlight(on: Boolean): Unit = { + if (on) { + setBackground(new Background(new BackgroundFill(Color.RED, CornerRadii.EMPTY, Insets.EMPTY))) + } else { + setBackground(null) + } + } + + override def toString: String = f"MediaPlayerStack: ${getChildren.stream().map(view => f"MediaView: ${view.getUserData}").collect(Collectors.joining(", "))}" +} -- GitLab