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