From 279b41517af6b30c7c5919758daac5fa1559968a Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 12 Dec 2021 17:58:28 +0100
Subject: [PATCH] #157 - created explicit design handler for warnings

---
 .../design/ModernDesignProviderImpl.java      | 11 +++++++++-
 .../pad/listener/PadPositionListener.java     |  6 +++---
 .../design/ModernCartDesignHandlerImpl.scala  | 16 ++-------------
 .../ModernGlobalDesignHandlerImpl.scala       | 15 +-------------
 .../ModernWarningDesignHandlerImpl.scala      | 20 +++++++++++++++++++
 .../playpad/design/ModernDesignProvider.java  |  3 +++
 .../modern/ModernCartDesignHandler.java       |  4 ++--
 .../modern/ModernGlobalDesignHandler.java     |  3 ++-
 ...t.java => ModernWarningDesignHandler.java} | 11 ++++++----
 9 files changed, 50 insertions(+), 39 deletions(-)
 create mode 100644 PlayWall/src/main/scala/de/tobias/playpad/design/ModernWarningDesignHandlerImpl.scala
 rename PlayWallCore/src/main/java/de/tobias/playpad/design/modern/{ModernDesignHandlerParent.java => ModernWarningDesignHandler.java} (89%)

diff --git a/PlayWall/src/main/java/de/tobias/playpad/design/ModernDesignProviderImpl.java b/PlayWall/src/main/java/de/tobias/playpad/design/ModernDesignProviderImpl.java
index 48e5588b..9e96bcc9 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/design/ModernDesignProviderImpl.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/design/ModernDesignProviderImpl.java
@@ -2,13 +2,22 @@ package de.tobias.playpad.design;
 
 import de.tobias.playpad.design.modern.ModernCartDesignHandler;
 import de.tobias.playpad.design.modern.ModernGlobalDesignHandler;
+import de.tobias.playpad.design.modern.ModernWarningDesignHandler;
 
 public class ModernDesignProviderImpl implements ModernDesignProvider
 {
-
+	private ModernWarningDesignHandler warningHandler;
 	private ModernCartDesignHandler cartDesignHandler;
 	private ModernGlobalDesignHandler globalDesignHandler;
 
+	@Override
+	public ModernWarningDesignHandler warning() {
+		if (warningHandler == null) {
+			warningHandler = new ModernWarningDesignHandlerImpl();
+		}
+		return warningHandler;
+	}
+
 	@Override
 	public ModernGlobalDesignHandler global() {
 		if (globalDesignHandler == null) {
diff --git a/PlayWall/src/main/java/de/tobias/playpad/pad/listener/PadPositionListener.java b/PlayWall/src/main/java/de/tobias/playpad/pad/listener/PadPositionListener.java
index e14523b6..e325c787 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/pad/listener/PadPositionListener.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/pad/listener/PadPositionListener.java
@@ -4,6 +4,7 @@ import de.tobias.playpad.PlayPadMain;
 import de.tobias.playpad.action.actions.CartAction;
 import de.tobias.playpad.design.ModernDesignProvider;
 import de.tobias.playpad.design.modern.ModernGlobalDesignHandler;
+import de.tobias.playpad.design.modern.ModernWarningDesignHandler;
 import de.tobias.playpad.design.modern.model.ModernCartDesign;
 import de.tobias.playpad.design.modern.model.ModernGlobalDesign;
 import de.tobias.playpad.pad.Pad;
@@ -111,8 +112,7 @@ public class PadPositionListener implements Runnable, IPadPositionListener {
 
 		final ModernDesignProvider modernDesign = PlayPadMain.getProgramInstance().getModernDesign();
 
-		final ModernGlobalDesignHandler handler = modernDesign.global();
-
+		final ModernWarningDesignHandler handler = modernDesign.warning();
 		handler.handleWarning(globalDesign, cartDesign, controller, warningDuration);
 	}
 
@@ -133,7 +133,7 @@ public class PadPositionListener implements Runnable, IPadPositionListener {
 
 		final ModernDesignProvider modernDesign = PlayPadMain.getProgramInstance().getModernDesign();
 
-		final ModernGlobalDesignHandler handler = modernDesign.global();
+		final ModernWarningDesignHandler handler = modernDesign.warning();
 		handler.stopWarning(controller);
 		controller.getView().setStyle("");
 	}
diff --git a/PlayWall/src/main/scala/de/tobias/playpad/design/ModernCartDesignHandlerImpl.scala b/PlayWall/src/main/scala/de/tobias/playpad/design/ModernCartDesignHandlerImpl.scala
index 7d966d51..df9c1917 100644
--- a/PlayWall/src/main/scala/de/tobias/playpad/design/ModernCartDesignHandlerImpl.scala
+++ b/PlayWall/src/main/scala/de/tobias/playpad/design/ModernCartDesignHandlerImpl.scala
@@ -1,12 +1,10 @@
 package de.tobias.playpad.design
 
 import de.thecodelabs.utils.application.ApplicationUtils
-import de.tobias.playpad.design.modern.model.{ModernCartDesign, ModernGlobalDesign}
+import de.tobias.playpad.design.modern.model.ModernCartDesign
 import de.tobias.playpad.design.modern.{ModernCartDesignHandler, ModernColor}
-import de.tobias.playpad.pad.viewcontroller.AbstractPadViewController
-import de.tobias.playpad.util.{FadeableColor, Minifier}
+import de.tobias.playpad.util.Minifier
 import de.tobias.playpad.view.PseudoClasses
-import javafx.util.Duration
 import org.springframework.expression.ExpressionParser
 import org.springframework.expression.common.TemplateParserContext
 import org.springframework.expression.spel.standard.SpelExpressionParser
@@ -54,14 +52,4 @@ class ModernCartDesignHandlerImpl extends ModernCartDesignHandler {
 		context.setVariables(values.asJava)
 		expressionParser.parseExpression(string, new TemplateParserContext("${", "}")).getValue(context, classOf[String])
 	}
-
-	override def performWarning(design: ModernGlobalDesign, fadeStartColor: FadeableColor, fadeStopColor: FadeableColor, controller: AbstractPadViewController, warningDuration: Duration): Unit = {
-		if(design.isWarnAnimation) {
-			ModernDesignAnimator.animateWarn(controller, fadeStartColor, fadeStopColor, warningDuration)
-		} else {
-			ModernDesignAnimator.warnFlash(controller)
-		}
-	}
-
-	override def stopWarning(controller: AbstractPadViewController): Unit = ModernDesignAnimator.stopAnimation(controller)
 }
diff --git a/PlayWall/src/main/scala/de/tobias/playpad/design/ModernGlobalDesignHandlerImpl.scala b/PlayWall/src/main/scala/de/tobias/playpad/design/ModernGlobalDesignHandlerImpl.scala
index ab88fb9b..2f36bbb6 100644
--- a/PlayWall/src/main/scala/de/tobias/playpad/design/ModernGlobalDesignHandlerImpl.scala
+++ b/PlayWall/src/main/scala/de/tobias/playpad/design/ModernGlobalDesignHandlerImpl.scala
@@ -4,16 +4,13 @@ import de.thecodelabs.utils.application.ApplicationUtils
 import de.thecodelabs.utils.application.container.PathType
 import de.tobias.playpad.design.modern.model.{ModernCartDesign, ModernGlobalDesign}
 import de.tobias.playpad.design.modern.{ModernColor, ModernGlobalDesignHandler}
-import de.tobias.playpad.pad.content.play.Durationable
-import de.tobias.playpad.pad.viewcontroller.AbstractPadViewController
 import de.tobias.playpad.project.Project
-import de.tobias.playpad.util.{FadeableColor, Minifier}
+import de.tobias.playpad.util.Minifier
 import de.tobias.playpad.view.{ColorPickerView, PseudoClasses}
 import de.tobias.playpad.viewcontroller.main.IMainViewController
 import de.tobias.playpad.{DisplayableColor, PlayPadMain}
 import javafx.scene.paint.Color
 import javafx.stage.Stage
-import javafx.util.Duration
 import org.springframework.expression.ExpressionParser
 import org.springframework.expression.common.TemplateParserContext
 import org.springframework.expression.spel.standard.SpelExpressionParser
@@ -90,16 +87,6 @@ class ModernGlobalDesignHandlerImpl extends ModernGlobalDesignHandler with Color
 		expressionParser.parseExpression(string, new TemplateParserContext("${", "}")).getValue(context, classOf[String])
 	}
 
-	override def performWarning(design: ModernGlobalDesign, fadeStartColor: FadeableColor, fadeStopColor: FadeableColor, controller: AbstractPadViewController, warningDuration: Duration): Unit = {
-		if(design.isWarnAnimation) {
-			ModernDesignAnimator.animateWarn(controller, fadeStartColor, fadeStopColor, warningDuration)
-		} else {
-			ModernDesignAnimator.warnFlash(controller)
-		}
-	}
-
-	override def stopWarning(controller: AbstractPadViewController): Unit = ModernDesignAnimator.stopAnimation(controller)
-
 	override def getColorInterface(onSelection: Consumer[DisplayableColor]) = new ColorPickerView(null, ModernColor.values.asInstanceOf[Array[DisplayableColor]], onSelection)
 
 	override def setColor(design: ModernCartDesign, color: DisplayableColor): Unit = {
diff --git a/PlayWall/src/main/scala/de/tobias/playpad/design/ModernWarningDesignHandlerImpl.scala b/PlayWall/src/main/scala/de/tobias/playpad/design/ModernWarningDesignHandlerImpl.scala
new file mode 100644
index 00000000..5e288d06
--- /dev/null
+++ b/PlayWall/src/main/scala/de/tobias/playpad/design/ModernWarningDesignHandlerImpl.scala
@@ -0,0 +1,20 @@
+package de.tobias.playpad.design
+
+import de.tobias.playpad.design.modern.ModernWarningDesignHandler
+import de.tobias.playpad.design.modern.model.ModernGlobalDesign
+import de.tobias.playpad.pad.viewcontroller.AbstractPadViewController
+import de.tobias.playpad.util.FadeableColor
+import javafx.util.Duration
+
+class ModernWarningDesignHandlerImpl extends ModernWarningDesignHandler {
+
+  override def performWarning(design: ModernGlobalDesign, fadeStartColor: FadeableColor, fadeStopColor: FadeableColor, controller: AbstractPadViewController, warningDuration: Duration): Unit = {
+    if (design.isWarnAnimation) {
+      ModernDesignAnimator.animateWarn(controller, fadeStartColor, fadeStopColor, warningDuration)
+    } else {
+      ModernDesignAnimator.warnFlash(controller)
+    }
+  }
+
+  override def stopWarning(controller: AbstractPadViewController): Unit = ModernDesignAnimator.stopAnimation(controller)
+}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/design/ModernDesignProvider.java b/PlayWallCore/src/main/java/de/tobias/playpad/design/ModernDesignProvider.java
index dac6d57a..08c41f82 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/design/ModernDesignProvider.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/design/ModernDesignProvider.java
@@ -2,9 +2,12 @@ package de.tobias.playpad.design;
 
 import de.tobias.playpad.design.modern.ModernCartDesignHandler;
 import de.tobias.playpad.design.modern.ModernGlobalDesignHandler;
+import de.tobias.playpad.design.modern.ModernWarningDesignHandler;
 
 public interface ModernDesignProvider
 {
+	ModernWarningDesignHandler warning();
+
 	ModernGlobalDesignHandler global();
 
 	ModernCartDesignHandler cart();
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernCartDesignHandler.java b/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernCartDesignHandler.java
index a2eae3f8..7f7afe2d 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernCartDesignHandler.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernCartDesignHandler.java
@@ -2,7 +2,7 @@ package de.tobias.playpad.design.modern;
 
 import de.tobias.playpad.design.modern.model.ModernCartDesign;
 
-public interface ModernCartDesignHandler extends ModernDesignHandlerParent {
-
+public interface ModernCartDesignHandler
+{
 	String generateCss(ModernCartDesign design, String classSuffix, boolean flat);
 }
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernGlobalDesignHandler.java b/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernGlobalDesignHandler.java
index db2ed86b..826e3409 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernGlobalDesignHandler.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernGlobalDesignHandler.java
@@ -5,7 +5,8 @@ import de.tobias.playpad.project.Project;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import javafx.stage.Stage;
 
-public interface ModernGlobalDesignHandler extends ModernDesignHandlerParent {
+public interface ModernGlobalDesignHandler
+{
 
 	void applyStyleSheet(Stage stage);
 
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernDesignHandlerParent.java b/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernWarningDesignHandler.java
similarity index 89%
rename from PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernDesignHandlerParent.java
rename to PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernWarningDesignHandler.java
index 3f4d1069..f365d231 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernDesignHandlerParent.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernWarningDesignHandler.java
@@ -8,18 +8,20 @@ import de.tobias.playpad.pad.viewcontroller.AbstractPadViewController;
 import de.tobias.playpad.util.FadeableColor;
 import javafx.util.Duration;
 
-public interface ModernDesignHandlerParent
+public interface ModernWarningDesignHandler
 {
 	default void handleWarning(ModernGlobalDesign globalDesign, ModernCartDesign cartDesign, AbstractPadViewController controller, Duration warningDuration)
 	{
 		ModernColor backgroundColor = globalDesign.getBackgroundColor();
 		ModernColor playColor = globalDesign.getPlayColor();
 
-		if(cartDesign.isEnableCustomBackgroundColor()) {
+		if(cartDesign.isEnableCustomBackgroundColor())
+		{
 			backgroundColor = cartDesign.getBackgroundColor();
 		}
 
-		if(cartDesign.isEnableCustomPlayColor()) {
+		if(cartDesign.isEnableCustomPlayColor())
+		{
 			playColor = cartDesign.getPlayColor();
 		}
 
@@ -49,6 +51,7 @@ public interface ModernDesignHandlerParent
 	 */
 	void performWarning(ModernGlobalDesign design, FadeableColor fadeStartColor, FadeableColor fadeStopColor, AbstractPadViewController controller, Duration duration);
 
-	default void stopWarning(AbstractPadViewController controller) {
+	default void stopWarning(AbstractPadViewController controller)
+	{
 	}
 }
-- 
GitLab