From 9321393e2351e28aacf8e72513fed5cad4d60f43 Mon Sep 17 00:00:00 2001
From: tobias <tobias.ullerich@icloud.com>
Date: Sat, 24 Sep 2016 21:49:14 +0200
Subject: [PATCH] Bug Fixes

- Fixed Volume Managment
- Code Cleanup, Remove Deprecated Methods
---
 .../src/de/tobias/playpad/PlayPadImpl.java    | 11 +++++++-
 PlayWall/src/de/tobias/playpad/Strings.java   |  5 ----
 .../action/actions/NavigateAction.java        |  1 +
 .../playpad/action/actions/PageAction.java    |  1 +
 .../playpad/audio/ClipAudioHandler.java       | 10 ++-----
 .../playpad/audio/JavaFXAudioHandler.java     | 26 +++++++++----------
 .../playpad/audio/TinyAudioHandler.java       | 15 +++--------
 .../design/classic/ClassicCartDesign.java     |  4 +++
 .../design/classic/ClassicDesignConnect.java  |  2 +-
 .../design/classic/ClassicGlobalDesign.java   |  1 +
 .../design/modern/ModernCartDesign.java       |  1 +
 .../design/modern/ModernGlobalDesign.java     |  1 +
 .../layout/desktop/PageButtonDragHandler.java |  1 +
 .../pad/content/AudioContentConnect.java      |  4 +--
 .../actions/CartActionsViewController.java    |  6 ++---
 .../cell/errordialog/ErrorCell.java           |  3 ++-
 .../ClassicGlobalDesignViewController.java    |  2 +-
 .../dialog/ProjectExportDialog.java           |  2 +-
 .../dialog/ProjectManagerDialog.java          |  4 +--
 .../main/MainViewController.java              | 11 +++++---
 .../global/GlobalSettingsViewController.java  |  1 +
 .../option/pad/PathLookupListener.java        |  1 +
 .../pad/TriggerPadTabViewController.java      |  1 +
 .../trigger/CartTriggerViewController.java    |  1 +
 .../ProfileSettingsViewController.java        |  1 +
 .../de/tobias/playpad/audio/AudioHandler.java |  3 ---
 .../src/de/tobias/playpad/midi/Midi.java      |  1 +
 .../playpad/pad/view/IPadContentView.java     |  8 +-----
 .../project/ref/ProjectReferenceList.java     |  1 +
 .../settings/ProfileReferenceList.java        |  1 +
 .../playpad/settings/keys/KeySerializer.java  |  1 +
 .../ProjectSettingsTabViewController.java     |  2 +-
 .../main/impl/EqualizerPluginImpl.java        |  2 +-
 .../image/ImageContentConntect.java           |  2 +-
 .../video/VideoContentConntect.java           |  2 +-
 35 files changed, 72 insertions(+), 67 deletions(-)

diff --git a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java
index b99b1c7a..b63f6e43 100644
--- a/PlayWall/src/de/tobias/playpad/PlayPadImpl.java
+++ b/PlayWall/src/de/tobias/playpad/PlayPadImpl.java
@@ -23,6 +23,7 @@ import de.tobias.playpad.audio.JavaFXAudioHandler;
 import de.tobias.playpad.design.modern.ModernGlobalDesign;
 import de.tobias.playpad.midi.device.DeviceRegistry;
 import de.tobias.playpad.midi.device.PD12;
+import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.plugin.AdvancedPlugin;
 import de.tobias.playpad.plugin.Module;
 import de.tobias.playpad.plugin.PadListener;
@@ -36,6 +37,8 @@ import de.tobias.playpad.viewcontroller.IPadSettingsViewController;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.playpad.viewcontroller.main.MainViewController;
 import de.tobias.playpad.viewcontroller.option.IProfileSettingsViewController;
+import de.tobias.playpad.volume.GlobalVolume;
+import de.tobias.playpad.volume.PadVolume;
 import de.tobias.updater.client.Updatable;
 import de.tobias.updater.client.UpdateRegistery;
 import de.tobias.utils.application.App;
@@ -80,7 +83,7 @@ public class PlayPadImpl implements PlayPad {
 		modules = new HashSet<>();
 
 		this.globalSettings = globalSettings;
-		
+
 		getModules().add(module); // Add Main Module
 	}
 
@@ -211,6 +214,7 @@ public class PlayPadImpl implements PlayPad {
 		Worker.shutdown();
 	}
 
+	@Override
 	public void loadPlugin(URI uri) {
 		pluginManager.addPluginsFrom(uri);
 
@@ -275,6 +279,10 @@ public class PlayPadImpl implements PlayPad {
 			e.printStackTrace();
 		}
 
+		// Volume Management
+		Pad.getVolumeManager().addFilter(new GlobalVolume());
+		Pad.getVolumeManager().addFilter(new PadVolume());
+
 		// Key Bindings
 		GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
 		globalSettings.getKeyCollection().loadDefaultFromFile("de/tobias/playpad/components/Keys.xml", resourceBundle);
@@ -284,6 +292,7 @@ public class PlayPadImpl implements PlayPad {
 
 	}
 
+	@Override
 	public Set<Module> getModules() {
 		return modules;
 	}
diff --git a/PlayWall/src/de/tobias/playpad/Strings.java b/PlayWall/src/de/tobias/playpad/Strings.java
index 0686a4d0..4e0f3885 100644
--- a/PlayWall/src/de/tobias/playpad/Strings.java
+++ b/PlayWall/src/de/tobias/playpad/Strings.java
@@ -46,7 +46,6 @@ public class Strings {
 
 	// UI - Window - Main
 	public static final String UI_Window_Main_CloseRequest = "UI.Window.Main.CloseRequest";
-	@Deprecated public static final String UI_Window_Main_SaveRequest = "UI.Window.Main.SaveRequest";
 	public static final String UI_Window_Main_PageButton = "UI.Window.Main.PageButton";
 
 	// UI - Dialog - Launch
@@ -161,7 +160,6 @@ public class Strings {
 	public static final String Error_Midi_Send = "Error.Midi.Send";
 
 	// Error - Plugins
-	@Deprecated public static final String Error_Plugins_Download = "Error.Plugins.Download";
 	public static final String Error_Plugins_Available = "Error.Plugins.Available";
 	public static final String Error_Plugins_Missing = "Error.Plugins.Missing";
 
@@ -230,9 +228,6 @@ public class Strings {
 	public static final String UI_Dialog_Update_Info = "UI.Dialog.Update.Info";
 	public static final String UI_Window_Settings_Updates_CurrentVersion = "UI.Window.Settings.Updates.CurrentVersion";
 
-	// Error - Update - Downlaod
-	@Deprecated public static final String Error_Update_Download = "Error.Update.Download";
-
 	// Layout
 	public static final String Layout_Modern_Name = "Layout.Modern.Name";
 	public static final String Layout_Classic_Name = "Layout.Classic.Name";
diff --git a/PlayWall/src/de/tobias/playpad/action/actions/NavigateAction.java b/PlayWall/src/de/tobias/playpad/action/actions/NavigateAction.java
index b4c9e005..e8df71b4 100644
--- a/PlayWall/src/de/tobias/playpad/action/actions/NavigateAction.java
+++ b/PlayWall/src/de/tobias/playpad/action/actions/NavigateAction.java
@@ -21,6 +21,7 @@ public class NavigateAction extends Action {
 		PREVIOUS,
 		NEXT;
 
+		@Override
 		public String toString() {
 			return Localization.getString(Strings.NavigationType_BaseName + name());
 		};
diff --git a/PlayWall/src/de/tobias/playpad/action/actions/PageAction.java b/PlayWall/src/de/tobias/playpad/action/actions/PageAction.java
index 6cc149eb..cd564863 100644
--- a/PlayWall/src/de/tobias/playpad/action/actions/PageAction.java
+++ b/PlayWall/src/de/tobias/playpad/action/actions/PageAction.java
@@ -98,6 +98,7 @@ public class PageAction extends Action {
 		return new SimpleStringProperty(toString());
 	}
 
+	@Override
 	public Action cloneAction() throws CloneNotSupportedException {
 		PageAction action = (PageAction) super.clone();
 
diff --git a/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandler.java b/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandler.java
index e9e4d6cf..d80cae8b 100644
--- a/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandler.java
+++ b/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandler.java
@@ -85,9 +85,7 @@ public class ClipAudioHandler extends AudioHandler {
 					}
 
 					Thread.sleep(SLEEP_TIME_POSITION);
-				} catch (InterruptedException e) {
-				} catch (ConcurrentModificationException e) {
-				} catch (Exception e) {
+				} catch (InterruptedException e) {} catch (ConcurrentModificationException e) {} catch (Exception e) {
 					e.printStackTrace();
 				}
 			}
@@ -166,17 +164,13 @@ public class ClipAudioHandler extends AudioHandler {
 		return durationProperty;
 	}
 
-	@Override
-	public void setVolume(double volume, double masterVolume, double customVolume) {
-		setVolume(masterVolume * volume * customVolume);
-	}
-
 	/**
 	 * Lineaer to dB
 	 * 
 	 * @param volume
 	 *            [0, 1]
 	 */
+	@Override
 	public void setVolume(double volume) {
 		if (volumeControl != null) {
 			if (volume == 1.0) {
diff --git a/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java b/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java
index a1c001b1..a5a4a39f 100644
--- a/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java
+++ b/PlayWall/src/de/tobias/playpad/audio/JavaFXAudioHandler.java
@@ -78,12 +78,6 @@ public class JavaFXAudioHandler extends AudioHandler implements Equalizable {
 		return durationProperty;
 	}
 
-	@Override
-	public void setVolume(double volume, double masterVolume, double customVolume) {
-		if (player != null)
-			player.setVolume(volume * masterVolume * customVolume);
-	}
-	
 	@Override
 	public void setVolume(double volume) {
 		if (player != null) {
@@ -98,7 +92,8 @@ public class JavaFXAudioHandler extends AudioHandler implements Equalizable {
 
 	@Override
 	public void loadMedia(Path[] paths) {
-		Platform.runLater(() -> {
+		Platform.runLater(() ->
+		{
 			if (getContent().getPad().isPadVisible()) {
 				getContent().getPad().getController().getView().showBusyView(true);
 			}
@@ -114,28 +109,33 @@ public class JavaFXAudioHandler extends AudioHandler implements Equalizable {
 		player = new MediaPlayer(media);
 
 		// Player Listener
-		player.setOnReady(() -> {
+		player.setOnReady(() ->
+		{
 			durationProperty.set(player.getTotalDuration());
 			getContent().getPad().setStatus(PadStatus.READY);
 			loadedProperty.set(true);
 
-			Platform.runLater(() -> {
+			Platform.runLater(() ->
+			{
 				if (getContent().getPad().isPadVisible()) {
 					getContent().getPad().getController().getView().showBusyView(false);
 				}
 			});
 		});
 
-		player.setOnError(() -> {
-			Platform.runLater(() -> {
+		player.setOnError(() ->
+		{
+			Platform.runLater(() ->
+			{
 				if (getContent().getPad().isPadVisible()) {
 					getContent().getPad().getController().getView().showBusyView(false);
 				}
 			});
 			loadedProperty.set(false);
-//			getContent().getPad().throwException(path, player.getError()); TODO Error Handling User
+			// getContent().getPad().throwException(path, player.getError()); TODO Error Handling User
 		});
-		player.setOnEndOfMedia(() -> {
+		player.setOnEndOfMedia(() ->
+		{
 			if (!getContent().getPad().getPadSettings().isLoop()) {
 				getContent().getPad().setEof(true);
 				getContent().getPad().setStatus(PadStatus.STOP);
diff --git a/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java b/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java
index e78b7be1..af2517a0 100644
--- a/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java
+++ b/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java
@@ -98,9 +98,7 @@ public class TinyAudioHandler extends AudioHandler {
 					}
 
 					Thread.sleep(SLEEP_TIME_POSITION);
-				} catch (InterruptedException e) {
-				} catch (ConcurrentModificationException e) {
-				} catch (Exception e) {
+				} catch (InterruptedException e) {} catch (ConcurrentModificationException e) {} catch (Exception e) {
 					e.printStackTrace();
 				}
 			}
@@ -200,13 +198,6 @@ public class TinyAudioHandler extends AudioHandler {
 		return duration;
 	}
 
-	@Override
-	public void setVolume(double volume, double masterVolume, double customVolume) {
-		if (music != null) {
-			music.setVolume(volume * masterVolume * customVolume);
-		}
-	}
-	
 	@Override
 	public void setVolume(double volume) {
 		if (music != null) {
@@ -255,7 +246,7 @@ public class TinyAudioHandler extends AudioHandler {
 				});
 			} catch (Exception e) {
 				loadedProperty.set(false);
-//				getContent().getPad().throwException(path, e); TODO Error Handling User
+				// getContent().getPad().throwException(path, e); TODO Error Handling User
 				e.printStackTrace();
 			} finally {
 				Platform.runLater(() ->
@@ -270,7 +261,7 @@ public class TinyAudioHandler extends AudioHandler {
 
 	private void calcDuration(URL url) throws UnsupportedAudioFileException, IOException {
 		AudioInputStream iStr = AudioSystem.getAudioInputStream(url);
-		double max = 1000.0 * (double) iStr.getFrameLength() / (double) iStr.getFormat().getFrameRate();
+		double max = 1000.0 * iStr.getFrameLength() / iStr.getFormat().getFrameRate();
 		Duration duration = Duration.millis(max);
 		Platform.runLater(() -> this.duration.set(duration));
 		iStr.close();
diff --git a/PlayWall/src/de/tobias/playpad/design/classic/ClassicCartDesign.java b/PlayWall/src/de/tobias/playpad/design/classic/ClassicCartDesign.java
index af5a1e1f..2e163328 100644
--- a/PlayWall/src/de/tobias/playpad/design/classic/ClassicCartDesign.java
+++ b/PlayWall/src/de/tobias/playpad/design/classic/ClassicCartDesign.java
@@ -91,6 +91,7 @@ public class ClassicCartDesign extends Design implements CartDesign {
 		this.accentColor = accentColor;
 	}
 
+	@Override
 	public void reset() {
 		backgroundColor = Color.TRANSPARENT;
 		playbackColor = Color.web("#ffb48bbb");
@@ -102,6 +103,7 @@ public class ClassicCartDesign extends Design implements CartDesign {
 		titleLabelColor = Color.BLACK;
 	}
 
+	@Override
 	public void load(Element rootElement) {
 		setBackgroundColor(ColorXMLUtils.load(rootElement.element("BackgroundColor")));
 		setPlaybackColor(ColorXMLUtils.load(rootElement.element("PlaybackColor")));
@@ -120,6 +122,7 @@ public class ClassicCartDesign extends Design implements CartDesign {
 		}
 	}
 
+	@Override
 	public void save(Element element) {
 		ColorXMLUtils.save(element.addElement("BackgroundColor"), backgroundColor);
 		ColorXMLUtils.save(element.addElement("PlaybackColor"), playbackColor);
@@ -162,6 +165,7 @@ public class ClassicCartDesign extends Design implements CartDesign {
 		return layout;
 	}
 
+	@Override
 	public String convertToCss(String classSufix, boolean fullCss) {
 		StringBuilder builder = new StringBuilder();
 
diff --git a/PlayWall/src/de/tobias/playpad/design/classic/ClassicDesignConnect.java b/PlayWall/src/de/tobias/playpad/design/classic/ClassicDesignConnect.java
index d4c0a91c..d551c8a3 100644
--- a/PlayWall/src/de/tobias/playpad/design/classic/ClassicDesignConnect.java
+++ b/PlayWall/src/de/tobias/playpad/design/classic/ClassicDesignConnect.java
@@ -2,8 +2,8 @@ package de.tobias.playpad.design.classic;
 
 import de.tobias.playpad.Strings;
 import de.tobias.playpad.design.CartDesign;
-import de.tobias.playpad.design.GlobalDesign;
 import de.tobias.playpad.design.DesignConnect;
+import de.tobias.playpad.design.GlobalDesign;
 import de.tobias.playpad.viewcontroller.CartDesignViewController;
 import de.tobias.playpad.viewcontroller.GlobalDesignViewController;
 import de.tobias.playpad.viewcontroller.design.ClassicCartDesignViewController;
diff --git a/PlayWall/src/de/tobias/playpad/design/classic/ClassicGlobalDesign.java b/PlayWall/src/de/tobias/playpad/design/classic/ClassicGlobalDesign.java
index f0d33ad5..8052196b 100644
--- a/PlayWall/src/de/tobias/playpad/design/classic/ClassicGlobalDesign.java
+++ b/PlayWall/src/de/tobias/playpad/design/classic/ClassicGlobalDesign.java
@@ -161,6 +161,7 @@ public class ClassicGlobalDesign extends Design implements GlobalDesign {
 		return minWidth;
 	}
 
+	@Override
 	public void reset() {
 		themeProperty = new SimpleObjectProperty<>(Theme.LIGHT);
 		customLayout = false;
diff --git a/PlayWall/src/de/tobias/playpad/design/modern/ModernCartDesign.java b/PlayWall/src/de/tobias/playpad/design/modern/ModernCartDesign.java
index 1e7a2880..07044edf 100644
--- a/PlayWall/src/de/tobias/playpad/design/modern/ModernCartDesign.java
+++ b/PlayWall/src/de/tobias/playpad/design/modern/ModernCartDesign.java
@@ -41,6 +41,7 @@ public class ModernCartDesign extends Design implements CartDesign, DesignColorA
 		this.playColor = playColor;
 	}
 
+	@Override
 	public void reset() {
 		backgroundColor = ModernColor.GRAY1;
 		playColor = ModernColor.RED1;
diff --git a/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java b/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java
index fbf9cde0..28da223a 100644
--- a/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java
+++ b/PlayWall/src/de/tobias/playpad/design/modern/ModernGlobalDesign.java
@@ -106,6 +106,7 @@ public class ModernGlobalDesign extends Design implements GlobalDesign, DesignCo
 		return minWidth;
 	}
 
+	@Override
 	public void reset() {
 		backgroundColor = ModernColor.GRAY1;
 		playColor = ModernColor.RED1;
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/PageButtonDragHandler.java b/PlayWall/src/de/tobias/playpad/layout/desktop/PageButtonDragHandler.java
index 3043e41a..5d4e7d37 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/PageButtonDragHandler.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/PageButtonDragHandler.java
@@ -21,6 +21,7 @@ public class PageButtonDragHandler implements EventHandler<DragEvent> {
 		this.page = page;
 	}
 
+	@Override
 	public void handle(DragEvent event) {
 		if (event.getEventType() == DragEvent.DRAG_OVER) {
 			controller.showPage(page);
diff --git a/PlayWall/src/de/tobias/playpad/pad/content/AudioContentConnect.java b/PlayWall/src/de/tobias/playpad/pad/content/AudioContentConnect.java
index 538d4d41..f0eb579d 100644
--- a/PlayWall/src/de/tobias/playpad/pad/content/AudioContentConnect.java
+++ b/PlayWall/src/de/tobias/playpad/pad/content/AudioContentConnect.java
@@ -70,7 +70,7 @@ public class AudioContentConnect extends PadContentConnect {
 		public AudioContentView(Pad pad, Pane parentNode) {
 			nameLabel = new Label();
 			nameLabel.textProperty().bind(pad.nameProperty());
-			
+
 			nameLabel.setWrapText(true);
 			nameLabel.setAlignment(Pos.CENTER);
 			nameLabel.setTextAlignment(TextAlignment.CENTER);
@@ -86,7 +86,7 @@ public class AudioContentConnect extends PadContentConnect {
 		}
 
 		@Override
-		public void unconnect() {
+		public void deinit() {
 			nameLabel.textProperty().unbind();
 		}
 	}
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java
index ee150b2c..34edd58f 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/actions/CartActionsViewController.java
@@ -8,8 +8,8 @@ import de.tobias.playpad.PlayPadMain;
 import de.tobias.playpad.action.Mapping;
 import de.tobias.playpad.action.cartaction.CartAction;
 import de.tobias.playpad.action.connect.CartActionConnect;
-import de.tobias.playpad.project.ProjectSettings;
 import de.tobias.playpad.project.Project;
+import de.tobias.playpad.project.ProjectSettings;
 import de.tobias.playpad.viewcontroller.IMappingTabViewController;
 import de.tobias.utils.ui.ContentViewController;
 import javafx.fxml.FXML;
@@ -63,7 +63,7 @@ public class CartActionsViewController extends ContentViewController {
 		gridPane.getChildren().clear();
 
 		gridPane.getColumnConstraints().clear();
-		double xPercentage = 1.0 / (double) settings.getColumns();
+		double xPercentage = 1.0 / settings.getColumns();
 		for (int i = 0; i < settings.getColumns(); i++) {
 			ColumnConstraints c = new ColumnConstraints();
 			c.setPercentWidth(xPercentage * 100);
@@ -71,7 +71,7 @@ public class CartActionsViewController extends ContentViewController {
 		}
 
 		gridPane.getRowConstraints().clear();
-		double yPercentage = 1.0 / (double) settings.getRows();
+		double yPercentage = 1.0 / settings.getRows();
 		for (int i = 0; i < settings.getRows(); i++) {
 			RowConstraints c = new RowConstraints();
 			c.setPercentHeight(yPercentage * 100);
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/cell/errordialog/ErrorCell.java b/PlayWall/src/de/tobias/playpad/viewcontroller/cell/errordialog/ErrorCell.java
index 25a1cc9c..327b1491 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/cell/errordialog/ErrorCell.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/cell/errordialog/ErrorCell.java
@@ -3,6 +3,7 @@ package de.tobias.playpad.viewcontroller.cell.errordialog;
 import de.tobias.playpad.pad.PadException;
 import javafx.scene.control.Control;
 import javafx.scene.control.TableCell;
+import javafx.scene.layout.Region;
 import javafx.scene.text.Text;
 
 public class ErrorCell extends TableCell<PadException, String> {
@@ -11,7 +12,7 @@ public class ErrorCell extends TableCell<PadException, String> {
 		Text text = new Text();
 		text.getStyleClass().add("label");
 		setGraphic(text);
-		setPrefHeight(Control.USE_COMPUTED_SIZE);
+		setPrefHeight(Region.USE_COMPUTED_SIZE);
 		text.wrappingWidthProperty().bind(widthProperty());
 		text.textProperty().bind(itemProperty());
 	}
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/design/ClassicGlobalDesignViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/design/ClassicGlobalDesignViewController.java
index d27b88dd..491005c0 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/design/ClassicGlobalDesignViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/design/ClassicGlobalDesignViewController.java
@@ -2,8 +2,8 @@ package de.tobias.playpad.viewcontroller.design;
 
 import de.tobias.playpad.PlayPadMain;
 import de.tobias.playpad.PseudoClasses;
-import de.tobias.playpad.design.GlobalDesign;
 import de.tobias.playpad.design.DesignConnect;
+import de.tobias.playpad.design.GlobalDesign;
 import de.tobias.playpad.design.classic.ClassicGlobalDesign;
 import de.tobias.playpad.design.classic.Theme;
 import de.tobias.playpad.viewcontroller.GlobalDesignViewController;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/ProjectExportDialog.java b/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/ProjectExportDialog.java
index 213b0699..e730c2d2 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/ProjectExportDialog.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/ProjectExportDialog.java
@@ -90,7 +90,7 @@ public class ProjectExportDialog extends ViewController implements ExportView {
 					boolean includeProject = profileCheckBox.isSelected();
 					boolean includeMedia = mediaCheckBox.isSelected();
 
-					ProjectExporter.exportProject(projectRef, path, includeProject, includeMedia, (ExportView) this);
+					ProjectExporter.exportProject(projectRef, path, includeProject, includeMedia, this);
 
 					Platform.runLater(() ->
 					{
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/ProjectManagerDialog.java b/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/ProjectManagerDialog.java
index 17ad484e..33ca6255 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/ProjectManagerDialog.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/dialog/ProjectManagerDialog.java
@@ -79,7 +79,7 @@ public class ProjectManagerDialog extends ViewController implements Notification
 	public void init() {
 		// Notification Handler
 		notificationPane = new NotificationPane(rootNode);
-		notificationPane.getStyleClass().add(NotificationPane.STYLE_CLASS_DARK);
+		notificationPane.getStyleClass().add(org.controlsfx.control.NotificationPane.STYLE_CLASS_DARK);
 
 		setAnchor(notificationPane, 0, 0, 0, 0);
 		((AnchorPane) getParent()).getChildren().add(notificationPane);
@@ -201,7 +201,7 @@ public class ProjectManagerDialog extends ViewController implements Notification
 		String oldName = projectReference.toString();
 
 		try {
-			String newProjectName = (String) nameTextField.getText();
+			String newProjectName = nameTextField.getText();
 			if (ProjectReference.getProjects().contains(newProjectName) || !nameTextField.getText().matches(Project.PROJECT_NAME_PATTERN)) {
 				showErrorMessage(Localization.getString(Strings.Error_Standard_NameInUse, nameTextField.getText()));
 				return;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
index d1b217aa..4081a872 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
@@ -181,7 +181,7 @@ public class MainViewController extends ViewController implements IMainViewContr
 		padGridPane.getStyleClass().add("pad-grid");
 
 		notificationPane = new NotificationPane(padGridPane);
-		notificationPane.getStyleClass().add(NotificationPane.STYLE_CLASS_DARK);
+		notificationPane.getStyleClass().add(org.controlsfx.control.NotificationPane.STYLE_CLASS_DARK);
 
 		gridContainer.getChildren().add(notificationPane);
 		setAnchor(notificationPane, 0, 0, 0, 0);
@@ -192,6 +192,7 @@ public class MainViewController extends ViewController implements IMainViewContr
 		return mainLayout;
 	}
 
+	@Override
 	public void setMainLayout(MainLayoutConnect mainLayoutConnect) {
 		removePadsFromView();
 		removePadViews();
@@ -382,6 +383,7 @@ public class MainViewController extends ViewController implements IMainViewContr
 
 		openProject = project;
 
+		volumeChangeListener.setOpenProject(openProject);
 		midiHandler.setProject(project);
 		keyboardHandler.setProject(project);
 		Profile.currentProfile().getMappings().getActiveMapping().showFeedback(openProject);
@@ -409,7 +411,7 @@ public class MainViewController extends ViewController implements IMainViewContr
 
 		// Table
 		padGridPane.getColumnConstraints().clear();
-		double xPercentage = 1.0 / (double) projectSettings.getColumns();
+		double xPercentage = 1.0 / projectSettings.getColumns();
 		for (int i = 0; i < projectSettings.getColumns(); i++) {
 			ColumnConstraints c = new ColumnConstraints();
 			c.setPercentWidth(xPercentage * 100);
@@ -417,7 +419,7 @@ public class MainViewController extends ViewController implements IMainViewContr
 		}
 
 		padGridPane.getRowConstraints().clear();
-		double yPercentage = 1.0 / (double) projectSettings.getRows();
+		double yPercentage = 1.0 / projectSettings.getRows();
 		for (int i = 0; i < projectSettings.getRows(); i++) {
 			RowConstraints c = new RowConstraints();
 			c.setPercentHeight(yPercentage * 100);
@@ -649,12 +651,14 @@ public class MainViewController extends ViewController implements IMainViewContr
 		getParent().getScene().addEventHandler(eventType, listener);
 	}
 
+	@Override
 	public <T extends Event> void addListenerForPads(EventHandler<? super T> handler, EventType<T> eventType) {
 		for (IPadView view : padViews) {
 			view.getRootNode().addEventFilter(eventType, handler);
 		}
 	}
 	
+	@Override
 	public <T extends Event> void removeListenerForPads(EventHandler<? super T> handler, EventType<T> eventType) {
 		for (IPadView view : padViews) {
 			view.getRootNode().removeEventFilter(eventType, handler);
@@ -705,6 +709,7 @@ public class MainViewController extends ViewController implements IMainViewContr
 		}
 	}
 
+	@Override
 	public void updateWindowTitle() {
 		if (openProject != null && Profile.currentProfile() != null) {
 			getStage().setTitle(Localization.getString(Strings.UI_Window_Main_Title, openProject.getProjectReference().getName(),
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/GlobalSettingsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/GlobalSettingsViewController.java
index e7551ff2..71db68f7 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/GlobalSettingsViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/GlobalSettingsViewController.java
@@ -103,6 +103,7 @@ public class GlobalSettingsViewController extends ViewController implements IGlo
 		}
 	}
 
+	@Override
 	public boolean closeRequest() {
 		return onFinish();
 	}
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 c397e4e3..ef255025 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/PathLookupListener.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/PathLookupListener.java
@@ -21,6 +21,7 @@ public class PathLookupListener implements EventHandler<ActionEvent> {
 		this.alertable = alertable;
 	}
 
+	@Override
 	public void handle(ActionEvent event) {
 		Object source = event.getSource();
 		if (source instanceof Button) {
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java
index 49df6c48..6b90fd74 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java
@@ -53,6 +53,7 @@ public class TriggerPadTabViewController extends PadSettingsTabViewController im
 		treeView.setRoot(rootItem);
 	}
 
+	@Override
 	public void changed(ObservableValue<? extends TreeItem<TriggerUIWrapper>> observable, TreeItem<TriggerUIWrapper> oldValue,
 			TreeItem<TriggerUIWrapper> newValue) {
 		contentView.getChildren().clear();
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java
index f8e58620..69e60440 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java
@@ -65,6 +65,7 @@ public class CartTriggerViewController extends ContentViewController {
 			@Override
 			public ListCell<UUID> call(ListView<UUID> param) {
 				ListCell<UUID> cell = new ListCell<UUID>() {
+					@Override
 					protected void updateItem(UUID item, boolean empty) {
 						super.updateItem(item, empty);
 						if (!empty) {
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java
index 5d37af62..ae657afc 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/ProfileSettingsViewController.java
@@ -140,6 +140,7 @@ public class ProfileSettingsViewController extends ViewController implements IPr
 		}
 	}
 
+	@Override
 	public boolean closeRequest() {
 		return onFinish();
 	}
diff --git a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java
index ebe336c8..202af608 100644
--- a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java
+++ b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandler.java
@@ -35,9 +35,6 @@ public abstract class AudioHandler {
 	public abstract ReadOnlyObjectProperty<Duration> durationProperty();
 
 	public abstract void setVolume(double volume);
-	
-	@Deprecated
-	public abstract void setVolume(double volume, double masterVolume, double customVolume);
 
 	public abstract boolean isMediaLoaded();
 
diff --git a/PlayWallCore/src/de/tobias/playpad/midi/Midi.java b/PlayWallCore/src/de/tobias/playpad/midi/Midi.java
index 099dd02d..34868d79 100644
--- a/PlayWallCore/src/de/tobias/playpad/midi/Midi.java
+++ b/PlayWallCore/src/de/tobias/playpad/midi/Midi.java
@@ -170,6 +170,7 @@ public class Midi {
 			}
 		}
 
+		@Override
 		public void close() {}
 	}
 
diff --git a/PlayWallCore/src/de/tobias/playpad/pad/view/IPadContentView.java b/PlayWallCore/src/de/tobias/playpad/pad/view/IPadContentView.java
index d2cc6821..653ec898 100644
--- a/PlayWallCore/src/de/tobias/playpad/pad/view/IPadContentView.java
+++ b/PlayWallCore/src/de/tobias/playpad/pad/view/IPadContentView.java
@@ -19,14 +19,8 @@ public interface IPadContentView {
 	 */
 	public Node getNode();
 
-	@Deprecated
-	public void unconnect();
-
 	/**
 	 * Deinitialisiert die View. Hier können mögliche Bindings und Listener entfernt werden.
 	 */
-	public default void deinit() {
-		// TODO Remove the default after remove unconnect from interface
-		unconnect();
-	}
+	public void deinit();
 }
diff --git a/PlayWallCore/src/de/tobias/playpad/project/ref/ProjectReferenceList.java b/PlayWallCore/src/de/tobias/playpad/project/ref/ProjectReferenceList.java
index b576c519..00db638d 100644
--- a/PlayWallCore/src/de/tobias/playpad/project/ref/ProjectReferenceList.java
+++ b/PlayWallCore/src/de/tobias/playpad/project/ref/ProjectReferenceList.java
@@ -14,6 +14,7 @@ final class ProjectReferenceList extends UniqList<ProjectReference> {
 
 	private static final long serialVersionUID = 1L;
 
+	@Override
 	public boolean contains(Object o) {
 		if (o instanceof String) {
 			for (ProjectReference reference : this) {
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/ProfileReferenceList.java b/PlayWallCore/src/de/tobias/playpad/settings/ProfileReferenceList.java
index 01bf7b7d..6fa17230 100644
--- a/PlayWallCore/src/de/tobias/playpad/settings/ProfileReferenceList.java
+++ b/PlayWallCore/src/de/tobias/playpad/settings/ProfileReferenceList.java
@@ -14,6 +14,7 @@ final class ProfileReferenceList extends UniqList<ProfileReference> {
 
 	private static final long serialVersionUID = 1L;
 
+	@Override
 	public boolean contains(Object o) {
 		if (o instanceof String) {
 			for (ProfileReference reference : this) {
diff --git a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeySerializer.java b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeySerializer.java
index c61992e7..7a393b0e 100644
--- a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeySerializer.java
+++ b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeySerializer.java
@@ -14,6 +14,7 @@ public class KeySerializer implements XMLSerializer<Key>, XMLDeserializer<Key> {
 	private static final String META_ATTR = "meta";
 	private static final String SHIFT_ATTR = "shift";
 
+	@Override
 	public Key loadElement(Element element) {
 		boolean shift = false;
 		if (element.attributeValue(SHIFT_ATTR) != null) {
diff --git a/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/ProjectSettingsTabViewController.java b/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/ProjectSettingsTabViewController.java
index 8bbc1d2b..0f4b33e9 100644
--- a/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/ProjectSettingsTabViewController.java
+++ b/PlayWallCore/src/de/tobias/playpad/viewcontroller/option/ProjectSettingsTabViewController.java
@@ -2,8 +2,8 @@ package de.tobias.playpad.viewcontroller.option;
 
 import java.util.ResourceBundle;
 
-import de.tobias.playpad.project.ProjectSettings;
 import de.tobias.playpad.project.Project;
+import de.tobias.playpad.project.ProjectSettings;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.utils.ui.ContentViewController;
diff --git a/PlayWallPlugins/equalizerplugin/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java b/PlayWallPlugins/equalizerplugin/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java
index 60cfab93..f12a8dcb 100644
--- a/PlayWallPlugins/equalizerplugin/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java
+++ b/PlayWallPlugins/equalizerplugin/de/tobias/playpad/equalizerplugin/main/impl/EqualizerPluginImpl.java
@@ -123,7 +123,7 @@ public class EqualizerPluginImpl implements EqualizerPlugin, WindowListener<IMai
 		}
 	}
 
-	@FXML
+	@Override
 	public void handle(ActionEvent event) {
 		if (equalizerViewController == null) {
 			equalizerViewController = new EqualizerViewController(mainStage);
diff --git a/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/image/ImageContentConntect.java b/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/image/ImageContentConntect.java
index 53e049cd..fabd24a8 100644
--- a/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/image/ImageContentConntect.java
+++ b/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/image/ImageContentConntect.java
@@ -119,7 +119,7 @@ public class ImageContentConntect extends PadContentConnect {
 		}
 
 		@Override
-		public void unconnect() {
+		public void deinit() {
 			nameLabel.textProperty().unbind();
 		}
 
diff --git a/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/video/VideoContentConntect.java b/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/video/VideoContentConntect.java
index 4fd611c0..394e41c6 100644
--- a/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/video/VideoContentConntect.java
+++ b/PlayWallPlugins/mediaplugin/de/tobias/playpad/mediaplugin/video/VideoContentConntect.java
@@ -87,7 +87,7 @@ public class VideoContentConntect extends PadContentConnect {
 		}
 
 		@Override
-		public void unconnect() {
+		public void deinit() {
 			nameLabel.textProperty().unbind();
 		}
 	}
-- 
GitLab