From 0941711e778867b4e33923cafe8d77d57d5aa8ab Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Tue, 1 Dec 2020 16:32:40 +0100
Subject: [PATCH] Set correct pseudo classes on page change to preview view

---
 .../tobias/playpad/layout/desktop/pad/DesktopPadView.java  | 7 ++++---
 .../layout/desktop/pad/DesktopPadViewController.java       | 2 +-
 .../java/de/tobias/playpad/pad/preview/PadTextPreview.java | 4 ++--
 .../java/de/tobias/playpad/pad/view/IPadContentView.java   | 4 ++--
 .../plugin/content/pad/ContentPlayerPadPreview.scala       | 4 ++--
 .../playpad/plugin/media/image/ImagePadContentFactory.java | 4 ++--
 6 files changed, 13 insertions(+), 12 deletions(-)

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 5649427c..137d20bb 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
@@ -30,6 +30,7 @@ import javafx.beans.property.Property;
 import javafx.css.PseudoClass;
 import javafx.geometry.Pos;
 import javafx.scene.Node;
+import javafx.scene.Parent;
 import javafx.scene.control.Button;
 import javafx.scene.control.Label;
 import javafx.scene.control.ProgressBar;
@@ -151,11 +152,11 @@ public class DesktopPadView implements IPadView {
 					PadContentFactory connect = registry.getFactory(content.getType());
 
 					previewContent = connect.getPadContentPreview(pad, preview);
-					Node node = previewContent.getNode();
+					Parent node = previewContent.getNode();
 
-					// Copy Pseudoclasses
+					// Copy Pseudo classes
 					for (PseudoClass pseudoClass : superRoot.getPseudoClassStates()) {
-						node.pseudoClassStateChanged(pseudoClass, true);
+						NodeWalker.getAllNodes(node).forEach(element -> element.pseudoClassStateChanged(pseudoClass, true));
 					}
 
 					preview.getChildren().setAll(node);
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 631b9873..9ca4d662 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
@@ -110,7 +110,7 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 
 			// Initial Listener call with new data
 			padContentListener.changed(null, null, pad.getContent()); // Add Duration listener
-			padStatusListener.changed(null, null, pad.getStatus());
+			padStatusListener.changed(null, null, pad.getStatus()); // Show correct pseudo classes ...
 
 			// Add Drag and Drop Listener
 			padDragListener = new DesktopPadDragListener(pad, padView, connect);
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/preview/PadTextPreview.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/preview/PadTextPreview.java
index c197d2fe..714792cb 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/preview/PadTextPreview.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/preview/PadTextPreview.java
@@ -3,7 +3,7 @@ package de.tobias.playpad.pad.preview;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.view.IPadContentView;
 import javafx.geometry.Pos;
-import javafx.scene.Node;
+import javafx.scene.Parent;
 import javafx.scene.control.Label;
 import javafx.scene.layout.Pane;
 import javafx.scene.layout.Priority;
@@ -29,7 +29,7 @@ public class PadTextPreview implements IPadContentView {
 	}
 
 	@Override
-	public Node getNode() {
+	public Parent getNode() {
 		return nameLabel;
 	}
 
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/view/IPadContentView.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/view/IPadContentView.java
index c91aa9c7..62c5c08f 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/view/IPadContentView.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/view/IPadContentView.java
@@ -1,6 +1,6 @@
 package de.tobias.playpad.pad.view;
 
-import javafx.scene.Node;
+import javafx.scene.Parent;
 
 // TODO Rename to ContentView
 
@@ -17,7 +17,7 @@ public interface IPadContentView {
 	 *
 	 * @return GUI Element
 	 */
-	Node getNode();
+	Parent getNode();
 
 	/**
 	 * Deinitialisiert die View. Hier können mögliche Bindings und Listener entfernt werden.
diff --git a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadPreview.scala b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadPreview.scala
index 1b5b96dc..6ff29819 100644
--- a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadPreview.scala
+++ b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadPreview.scala
@@ -6,7 +6,7 @@ import de.tobias.playpad.pad.view.IPadContentView
 import javafx.beans.binding.Bindings
 import javafx.collections.ListChangeListener
 import javafx.geometry.{Insets, Pos}
-import javafx.scene.Node
+import javafx.scene.Parent
 import javafx.scene.control.Label
 import javafx.scene.layout.{Pane, Priority, VBox}
 import javafx.scene.text.TextAlignment
@@ -59,7 +59,7 @@ class ContentPlayerPadPreview(pad: Pad, parent: Pane) extends VBox with IPadCont
 		VBox.setVgrow(label, Priority.ALWAYS)
 	}
 
-	override def getNode: Node = this
+	override def getNode: Parent = this
 
 	override def deInit(): Unit = {
 		nameLabel.textProperty().unbind()
diff --git a/PlayWallPlugins/PlayWallPluginMedia/src/main/java/de/tobias/playpad/plugin/media/image/ImagePadContentFactory.java b/PlayWallPlugins/PlayWallPluginMedia/src/main/java/de/tobias/playpad/plugin/media/image/ImagePadContentFactory.java
index 4a9a5ec7..d9c10d49 100644
--- a/PlayWallPlugins/PlayWallPluginMedia/src/main/java/de/tobias/playpad/plugin/media/image/ImagePadContentFactory.java
+++ b/PlayWallPlugins/PlayWallPluginMedia/src/main/java/de/tobias/playpad/plugin/media/image/ImagePadContentFactory.java
@@ -9,7 +9,7 @@ import javafx.collections.ListChangeListener;
 import javafx.collections.SetChangeListener;
 import javafx.css.PseudoClass;
 import javafx.geometry.Pos;
-import javafx.scene.Node;
+import javafx.scene.Parent;
 import javafx.scene.control.Label;
 import javafx.scene.layout.Pane;
 import javafx.scene.layout.Priority;
@@ -91,7 +91,7 @@ public class ImagePadContentFactory extends PadContentFactory {
 		}
 
 		@Override
-		public Node getNode() {
+		public Parent getNode() {
 			return stackPane;
 		}
 
-- 
GitLab