From 2c7f43a8620206d66264294e2fdf3998028dabc4 Mon Sep 17 00:00:00 2001 From: tobias <tobias.ullerich@icloud.com> Date: Thu, 4 Aug 2016 22:35:54 +0200 Subject: [PATCH] Add Color Adjustment Clean code --- .../viewcontroller/main/ColorAdjuster.java | 72 +++++++++++++++++++ .../main/MainViewControllerV2.java | 8 ++- .../option/pad/PadSettingsViewController.java | 8 ++- .../option/pad/PathLookupListener.java | 14 +++- 4 files changed, 93 insertions(+), 9 deletions(-) create mode 100644 PlayWall/src/de/tobias/playpad/viewcontroller/main/ColorAdjuster.java diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/ColorAdjuster.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/ColorAdjuster.java new file mode 100644 index 00000000..9ba8fb78 --- /dev/null +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/ColorAdjuster.java @@ -0,0 +1,72 @@ +package de.tobias.playpad.viewcontroller.main; + +import java.util.List; + +import de.tobias.playpad.action.cartaction.CartAction; +import de.tobias.playpad.action.connect.CartActionConnect; +import de.tobias.playpad.action.feedback.ColorAssociator; +import de.tobias.playpad.action.feedback.DisplayableFeedbackColor; +import de.tobias.playpad.action.feedback.FeedbackMessage; +import de.tobias.playpad.action.mapper.Mapper; +import de.tobias.playpad.action.mapper.MapperFeedbackable; +import de.tobias.playpad.design.CartDesign; +import de.tobias.playpad.design.DesignColorAssociator; +import de.tobias.playpad.design.GlobalDesign; +import de.tobias.playpad.pad.Pad; +import de.tobias.playpad.project.Project; +import de.tobias.playpad.settings.Profile; +import javafx.scene.paint.Color; + +public class ColorAdjuster { + + public static void applyColorsToMappers(Project project) { + // Apply Layout to Mapper + List<CartAction> actions = Profile.currentProfile().getMappings().getActiveMapping().getActions(CartActionConnect.TYPE); + for (CartAction cartAction : actions) { + if (cartAction.isAutoFeedbackColors()) { + for (Mapper mapper : cartAction.getMappers()) { + if (mapper instanceof MapperFeedbackable) { + mapColorForMapper(cartAction, mapper, project); + } + } + } + } + } + + private static void mapColorForMapper(CartAction cartAction, Mapper mapper, Project project) { + MapperFeedbackable feedbackable = (MapperFeedbackable) mapper; + if (feedbackable.supportFeedback() && mapper instanceof ColorAssociator) { + ColorAssociator colorAssociator = (ColorAssociator) mapper; + + Pad pad = project.getPad(cartAction.getCart()); + Color layoutStdColor = null; + Color layoutEvColor = null; + + if (pad.isCustomLayout()) { + CartDesign layout = pad.getLayout(); + if (layout instanceof DesignColorAssociator) { + DesignColorAssociator associator = (DesignColorAssociator) layout; + layoutStdColor = associator.getAssociatedStandardColor(); + layoutEvColor = associator.getAssociatedEventColor(); + } + } else { + GlobalDesign layout = Profile.currentProfile().currentLayout(); + if (layout instanceof DesignColorAssociator) { + DesignColorAssociator associator = (DesignColorAssociator) layout; + layoutStdColor = associator.getAssociatedStandardColor(); + layoutEvColor = associator.getAssociatedEventColor(); + } + } + + if (layoutStdColor != null) { + DisplayableFeedbackColor associator = Mapper.searchColor(colorAssociator, FeedbackMessage.STANDARD, layoutStdColor); + colorAssociator.setColor(FeedbackMessage.STANDARD, associator.midiVelocity()); + } + + if (layoutEvColor != null) { + DisplayableFeedbackColor associator = Mapper.searchColor(colorAssociator, FeedbackMessage.EVENT, layoutEvColor); + colorAssociator.setColor(FeedbackMessage.EVENT, associator.midiVelocity()); + } + } + } +} diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java index 4dcf9be0..3d2f5ace 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java @@ -473,9 +473,9 @@ public class MainViewControllerV2 extends ViewController implements IMainViewCon @Override public void showLiveInfo() { // TODO Auto-generated method stub - + } - + // Settings @Override public void reloadSettings(Profile old, Profile currentProfile) { @@ -643,7 +643,9 @@ public class MainViewControllerV2 extends ViewController implements IMainViewCon @Override public void applyColorsToMappers() { - + if (openProject != null) { + ColorAdjuster.applyColorsToMappers(openProject); + } } public void setTitle() { diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java index 631696d9..e599ddc3 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/PadSettingsViewController.java @@ -8,6 +8,7 @@ import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.PlayPadPlugin; import de.tobias.playpad.Strings; import de.tobias.playpad.pad.Pad; +import de.tobias.playpad.pad.PadContentRegistry; import de.tobias.playpad.pad.PadStatus; import de.tobias.playpad.pad.conntent.PadContent; import de.tobias.playpad.pad.conntent.PadContentConnect; @@ -57,13 +58,14 @@ public class PadSettingsViewController extends ViewController implements IPadSet try { // Get Pad Type specific tab String type = pad.getContent().getType(); - PadContentConnect padContentConnect = PlayPadPlugin.getRegistryCollection().getPadContents().getComponent(type); + PadContentRegistry registry = PlayPadPlugin.getRegistryCollection().getPadContents(); + PadContentConnect padContentConnect = registry.getComponent(type); PadSettingsTabViewController contentTab = padContentConnect.getSettingsViewController(pad); + if (contentTab != null) addTab(contentTab); } catch (NoSuchComponentException e) { - // TODO Auto-generated catch block e.printStackTrace(); } } @@ -78,7 +80,7 @@ public class PadSettingsViewController extends ViewController implements IPadSet } private void setupPathLookupButton() { - pathLookupListener = new PathLookupListener(); + pathLookupListener = new PathLookupListener(this); if (pad.getContent() != null) { PadContent content = pad.getContent(); diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/PathLookupListener.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/PathLookupListener.java index d87039ea..30e00be8 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/PathLookupListener.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/PathLookupListener.java @@ -4,6 +4,10 @@ import java.awt.Desktop; import java.io.IOException; import java.nio.file.Path; +import de.tobias.playpad.PlayPadPlugin; +import de.tobias.playpad.Strings; +import de.tobias.utils.ui.Alertable; +import de.tobias.utils.util.Localization; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.Button; @@ -11,8 +15,13 @@ import javafx.scene.control.MenuItem; public class PathLookupListener implements EventHandler<ActionEvent> { + private Alertable alertable; + + public PathLookupListener(Alertable alertable) { + this.alertable = alertable; + } + public void handle(ActionEvent event) { - System.out.println(event); Object source = event.getSource(); if (source instanceof Button) { // single path @@ -30,11 +39,10 @@ public class PathLookupListener implements EventHandler<ActionEvent> { } private void showPath(Path path) { - System.out.println(path); try { Desktop.getDesktop().browse(path.getParent().toUri()); } catch (IOException e) { - // TODO Auto-generated catch block + alertable.showErrorMessage(Localization.getString(Strings.Error_Standard_Gen), PlayPadPlugin.getImplementation().getIcon()); e.printStackTrace(); } } -- GitLab