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