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 5326b5f914229d7a4e1b9499bb44c01234d00ecf..761fae5a7440b08570d2346f93ba6f0c1bcbff87 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 @@ -3,7 +3,6 @@ package de.tobias.playpad.pad.listener; import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.action.actions.CartAction; import de.tobias.playpad.design.ModernDesignHandler; -import de.tobias.playpad.design.modern.ModernCartDesignHandler; import de.tobias.playpad.design.modern.ModernGlobalDesignHandler; import de.tobias.playpad.design.modern.model.ModernCartDesign; import de.tobias.playpad.design.modern.model.ModernGlobalDesign; @@ -104,21 +103,17 @@ public class PadPositionListener implements Runnable, IPadPositionListener { */ @Override public void run() { - PadSettings padSettings = pad.getPadSettings(); - Duration warning = padSettings.getWarning(); + final PadSettings padSettings = pad.getPadSettings(); + final Duration warningDuration = padSettings.getWarning(); + + final ModernGlobalDesign globalDesign = Profile.currentProfile().getProfileSettings().getDesign(); + final ModernCartDesign cartDesign = padSettings.getDesign(); - ModernGlobalDesign globalDesign = Profile.currentProfile().getProfileSettings().getDesign(); final ModernDesignHandler modernDesign = PlayPadMain.getProgramInstance().getModernDesign(); - if (padSettings.isCustomDesign()) { - ModernCartDesignHandler handler = modernDesign.cart(); - ModernCartDesign design = pad.getPadSettings().getDesign(); + final ModernGlobalDesignHandler handler = modernDesign.global(); - handler.handleWarning(design, controller, warning, globalDesign); - } else { - ModernGlobalDesignHandler handler = modernDesign.global(); - handler.handleWarning(globalDesign, controller, warning); - } + handler.handleWarning(globalDesign, cartDesign, controller, warningDuration); } private void startWarningThread() { @@ -139,17 +134,8 @@ public class PadPositionListener implements Runnable, IPadPositionListener { PadSettings padSettings = pad.getPadSettings(); final ModernDesignHandler modernDesign = PlayPadMain.getProgramInstance().getModernDesign(); - if (padSettings.isCustomDesign()) { - ModernCartDesignHandler handler = modernDesign.cart(); - ModernCartDesign design = pad.getPadSettings().getDesign(); - - handler.stopWarning(design, controller); - } else { - ModernGlobalDesignHandler handler = modernDesign.global(); - ModernGlobalDesign globalDesign = Profile.currentProfile().getProfileSettings().getDesign(); - - handler.stopWarning(globalDesign, controller); - } + final ModernGlobalDesignHandler handler = modernDesign.global(); + 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 b639f9099419bd956a0b420216f9c01568b2c679..7d966d5191afc5de6e2d298f710b6ad0298c693d 100644 --- a/PlayWall/src/main/scala/de/tobias/playpad/design/ModernCartDesignHandlerImpl.scala +++ b/PlayWall/src/main/scala/de/tobias/playpad/design/ModernCartDesignHandlerImpl.scala @@ -3,9 +3,8 @@ 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.{ModernCartDesignHandler, ModernColor} -import de.tobias.playpad.pad.content.play.Durationable import de.tobias.playpad.pad.viewcontroller.AbstractPadViewController -import de.tobias.playpad.util.Minifier +import de.tobias.playpad.util.{FadeableColor, Minifier} import de.tobias.playpad.view.PseudoClasses import javafx.util.Duration import org.springframework.expression.ExpressionParser @@ -18,11 +17,20 @@ import scala.jdk.CollectionConverters._ class ModernCartDesignHandlerImpl extends ModernCartDesignHandler { override def generateCss(design: ModernCartDesign, classSuffix: String, flat: Boolean): String = { - String.join( - generateCss(design, flat, classSuffix, design.getBackgroundColor), - generateCss(design, flat, classSuffix, design.getPlayColor, s":${PseudoClasses.PLAY_CLASS.getPseudoClassName}"), + var result = "" + + if(design.isEnableCustomBackgroundColor) + { + result += generateCss(design, flat, classSuffix, design.getBackgroundColor) generateCss(design, flat, classSuffix, design.getBackgroundColor, s":${PseudoClasses.WARN_CLASS.getPseudoClassName}") - ) + } + + if(design.isEnableCustomPlayColor) + { + result += generateCss(design, flat, classSuffix, design.getPlayColor, s":${PseudoClasses.PLAY_CLASS.getPseudoClassName}") + } + + result } private def generateCss(design: ModernCartDesign, flat: Boolean, padIdentifier: String, color: ModernColor, styleState: String = ""): String = { @@ -47,29 +55,13 @@ class ModernCartDesignHandlerImpl extends ModernCartDesignHandler { expressionParser.parseExpression(string, new TemplateParserContext("${", "}")).getValue(context, classOf[String]) } - override def handleWarning(design: ModernCartDesign, controller: AbstractPadViewController, warning: Duration, globalDesign: ModernGlobalDesign): Unit = { - if (globalDesign.isWarnAnimation) { - val playColor = design.getPlayColor - val backgroundColor = design.getBackgroundColor - - val fadeStopColor = if (globalDesign.isFlatDesign) backgroundColor.toFlatFadeableColor else backgroundColor.toFadeableColor - val fadePlayColor = if (globalDesign.isFlatDesign) playColor.toFlatFadeableColor else playColor.toFadeableColor - - val pad = controller.getPad - val animationDuration = pad.getContent match { - case durationable: Durationable => - if (warning greaterThan durationable.getDuration) { - durationable.getDuration - } else { - warning - } - case _ => warning - } - ModernDesignAnimator.animateWarn(controller, fadePlayColor, fadeStopColor, animationDuration) + 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(design: ModernCartDesign, controller: AbstractPadViewController): Unit = ModernDesignAnimator.stopAnimation(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 3eea45b74878a931b801b72ea341ce13375be7d2..ab88fb9b62a418c0617b7739875a0809b24a7ed4 100644 --- a/PlayWall/src/main/scala/de/tobias/playpad/design/ModernGlobalDesignHandlerImpl.scala +++ b/PlayWall/src/main/scala/de/tobias/playpad/design/ModernGlobalDesignHandlerImpl.scala @@ -7,7 +7,7 @@ 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.Minifier +import de.tobias.playpad.util.{FadeableColor, Minifier} import de.tobias.playpad.view.{ColorPickerView, PseudoClasses} import de.tobias.playpad.viewcontroller.main.IMainViewController import de.tobias.playpad.{DisplayableColor, PlayPadMain} @@ -50,10 +50,8 @@ class ModernGlobalDesignHandlerImpl extends ModernGlobalDesignHandler with Color project.getPage(controller.getPage).getPads.forEach(pad => { val padSettings = pad.getPadSettings - if (padSettings.isCustomDesign) { - val cartDesign = padSettings.getDesign - stringBuilder.append(cartDesignHandler.generateCss(cartDesign, s"${pad.getPadIndex}", design.isFlatDesign)) - } + val cartDesign = padSettings.getDesign + stringBuilder.append(cartDesignHandler.generateCss(cartDesign, s"${pad.getPadIndex}", design.isFlatDesign)) }) Files.write(customCss, stringBuilder.toString().getBytes()) @@ -92,32 +90,15 @@ class ModernGlobalDesignHandlerImpl extends ModernGlobalDesignHandler with Color expressionParser.parseExpression(string, new TemplateParserContext("${", "}")).getValue(context, classOf[String]) } - override def handleWarning(design: ModernGlobalDesign, controller: AbstractPadViewController, warning: Duration): Unit = { - if (design.isWarnAnimation) { - warnAnimation(design, controller, warning) + 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) } } - private def warnAnimation(design: ModernGlobalDesign, controller: AbstractPadViewController, warning: Duration): Unit = { - val stopColor = if (design.isFlatDesign) design.getBackgroundColor.toFlatFadeableColor else design.getBackgroundColor.toFadeableColor - val playColor = if (design.isFlatDesign) design.getPlayColor.toFlatFadeableColor else design.getPlayColor.toFadeableColor - - val pad = controller.getPad - val duration = pad.getContent match { - case durationable: Durationable => - if (warning.greaterThan(durationable.getDuration)) { - durationable.getDuration - } else { - warning - } - case _ => warning - } - ModernDesignAnimator.animateWarn(controller, playColor, stopColor, duration) - } - - override def stopWarning(design: ModernGlobalDesign, controller: AbstractPadViewController): Unit = ModernDesignAnimator.stopAnimation(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) 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 200ead1fd6e412137370b6393167bb1092adc90d..a2eae3f832e47aee53f5e5ffc3a035ae42e8a873 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 @@ -1,20 +1,8 @@ package de.tobias.playpad.design.modern; import de.tobias.playpad.design.modern.model.ModernCartDesign; -import de.tobias.playpad.design.modern.model.ModernGlobalDesign; -import de.tobias.playpad.pad.viewcontroller.AbstractPadViewController; -import javafx.util.Duration; -public interface ModernCartDesignHandler { +public interface ModernCartDesignHandler extends ModernDesignHandlerParent { String generateCss(ModernCartDesign design, String classSuffix, boolean flat); - - /* - * Wird in einem neuen Thread aufgerufen - */ - void handleWarning(ModernCartDesign design, AbstractPadViewController controller, Duration warning, ModernGlobalDesign globalDesign); - - default void stopWarning(ModernCartDesign design, AbstractPadViewController controller) { - } - } diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernDesignHandlerParent.java b/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernDesignHandlerParent.java new file mode 100644 index 0000000000000000000000000000000000000000..223c02f78ea6ae5b368e8d99f727e980215786b2 --- /dev/null +++ b/PlayWallCore/src/main/java/de/tobias/playpad/design/modern/ModernDesignHandlerParent.java @@ -0,0 +1,54 @@ +package de.tobias.playpad.design.modern; + +import de.tobias.playpad.design.modern.model.ModernCartDesign; +import de.tobias.playpad.design.modern.model.ModernGlobalDesign; +import de.tobias.playpad.pad.Pad; +import de.tobias.playpad.pad.content.play.Durationable; +import de.tobias.playpad.pad.viewcontroller.AbstractPadViewController; +import de.tobias.playpad.util.FadeableColor; +import javafx.util.Duration; + +public interface ModernDesignHandlerParent +{ + default void handleWarning(ModernGlobalDesign globalDesign, ModernCartDesign cartDesign, AbstractPadViewController controller, Duration warningDuration) + { + ModernColor backgroundColor = globalDesign.getBackgroundColor(); + ModernColor playColor = globalDesign.getPlayColor(); + + if(cartDesign.isEnableCustomBackgroundColor()) { + backgroundColor = cartDesign.getBackgroundColor(); + } + + if(cartDesign.isEnableCustomPlayColor()) { + playColor = cartDesign.getPlayColor(); + } + + final FadeableColor fadeStartColor = globalDesign.isFlatDesign() ? playColor.toFlatFadeableColor() : playColor.toFadeableColor(); + final FadeableColor fadeStopColor = globalDesign.isFlatDesign() ? backgroundColor.toFlatFadeableColor() : backgroundColor.toFadeableColor(); + final Duration duration = determineDuration(controller.getPad(), warningDuration); + + performWarning(globalDesign, fadeStartColor, fadeStopColor, controller, duration); + } + + default Duration determineDuration(Pad pad, Duration warningDuration) + { + if(pad.getContent() instanceof Durationable) + { + final Durationable durationable = (Durationable) pad; + if(warningDuration.greaterThan(durationable.getDuration())) + { + return durationable.getDuration(); + } + } + + return warningDuration; + } + + /* + * Wird in einem neuen Thread aufgerufen + */ + void performWarning(ModernGlobalDesign design, FadeableColor fadeStartColor, FadeableColor fadeStopColor, AbstractPadViewController controller, Duration duration); + + default void stopWarning(AbstractPadViewController controller) { + } +} 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 bca1e4aa9cee672852326f41dffe582e115f10e4..db2ed86b851388eafaef058c5816f71738c99490 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 @@ -1,23 +1,13 @@ package de.tobias.playpad.design.modern; import de.tobias.playpad.design.modern.model.ModernGlobalDesign; -import de.tobias.playpad.pad.viewcontroller.AbstractPadViewController; import de.tobias.playpad.project.Project; import de.tobias.playpad.viewcontroller.main.IMainViewController; import javafx.stage.Stage; -import javafx.util.Duration; -public interface ModernGlobalDesignHandler { +public interface ModernGlobalDesignHandler extends ModernDesignHandlerParent { void applyStyleSheet(Stage stage); void applyStyleSheetToMainViewController(ModernGlobalDesign design, IMainViewController controller, Stage stage, Project project); - - /* - * Wird in einem neuen Thread aufgerufen - */ - void handleWarning(ModernGlobalDesign design, AbstractPadViewController controller, Duration warning); - - default void stopWarning(ModernGlobalDesign design, AbstractPadViewController controller) { - } } diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java index db4b411ea3e3b64dff1f9f9da6674d2999e29d19..3ca40f91bf336dabbe1f76ec1cb6c3a04b3e5123 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettings.java @@ -187,10 +187,6 @@ public class PadSettings { return cueInProperty.get(); } - public boolean isCustomDesign() { - return customDesignProperty.get(); - } - public void setCustomDesign(boolean customLayout) { this.customDesignProperty.set(customLayout); } diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java index 73a2f13bf9f0a9d3b154e05b2c284eecf7307b1b..3af4771beb485e5b81351680092a55a9a0786f9a 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java @@ -126,7 +126,6 @@ public class PadSettingsSerializer { Element designElement = settingsElement.addElement(DESIGN_ELEMENT); ModernCartDesignSerializer serializer = new ModernCartDesignSerializer(); serializer.save(designElement, padSettings.getDesign()); - designElement.addAttribute(CUSTOM_DESIGN_ELEMENT, String.valueOf(padSettings.isCustomDesign())); Element userInfoElement = settingsElement.addElement(CUSTOM_SETTINGS_ELEMENT); for (String key : padSettings.getCustomSettings().keySet()) {