From bf5a74a6c4c886e08a5e824941a82dee574e9805 Mon Sep 17 00:00:00 2001
From: tobias <tobias.ullerich@icloud.com>
Date: Tue, 23 Aug 2016 23:14:30 +0200
Subject: [PATCH] Code cleaning and localiziation enhancement

---
 .../tobias/playpad/assets/lang/_de.properties | 62 +++++++++----------
 .../playpad/assets/lang/ui_de.properties      | 47 +++++++-------
 .../assets/view/option/global/keysTab.fxml    |  4 +-
 PlayWall/src/application.yml                  |  4 +-
 .../src/de/tobias/playpad/PlayPadMain.java    | 21 +------
 .../mapper/listener/KeyboardHandler.java      |  3 +-
 .../main/MainViewControllerV2.java            |  8 +--
 .../project/PathsTabViewController.java       |  5 +-
 .../src/de/tobias/playpad/action/Mapping.java | 39 ++++--------
 .../playpad/project/ProjectReferenceList.java | 17 ++---
 10 files changed, 88 insertions(+), 122 deletions(-)

diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties
index a6c8a6b2..091e56fb 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties
+++ b/PlayWall/assets/de/tobias/playpad/assets/lang/_de.properties
@@ -8,7 +8,7 @@ Standard.Time.Seconds={} sek
 Standard.Time.Volume={} %
 
 # File - Filter
-File.Filter.ZIP=Archive
+File.Filter.ZIP=Archiv
 File.Filter.Media=Medien
 File.Filter.Preset=Vorlagen
 
@@ -20,11 +20,11 @@ Pad.TimeMode.BOTH=Abgelaufende Zeit / Gesamtzeit
 # UI - Window - Titles
 UI.Dialog.Launch.Title=Projekt w�hlen...
 UI.Window.Main.Title=Play Wall [Projekt: {} - Profil: {}]
-UI.Window.Changelog.Title=Was ist neu?
+UI.Window.Changelog.Title=Versions�nderungen
 UI.Window.Settings.Title=Einstellungen - {}
-UI.Window.GlobalSettings.Title=Programm Einstellungen
-UI.Window.PadSettings.Title=Kachel Einstellungen - {} | {}
-UI.Window.PadSettings.Title.Empty=Kachel Einstellungen - {}
+UI.Window.GlobalSettings.Title=Programmeinstellungen
+UI.Window.PadSettings.Title=Kacheleinstellungen - {} | {}
+UI.Window.PadSettings.Title.Empty=Kacheleinstellungen - {}
 UI.Dialog.DragAndDrop.Title=Drag and Drop
 UI.Dialog.ProjectExport.Title=Projekt exportieren
 UI.Dialog.ErrorSummary.Title=Fehlerbericht
@@ -32,7 +32,7 @@ UI.Dialog.NewProfile.Title=Neues Profil
 UI.Dialog.NewProject.Title=Neues Projekt
 UI.Dialog.ChooseProfile.Title=Profil w�hlen
 UI.Dialog.ProjectManager.Title=Projektverwaltung
-UI.Dialog.UpdateCenter.Title=Aktualisierungen
+UI.Dialog.UpdateCenter.Title=Aktualisierung
 UI.Dialog.Preset.Title=Vorlagen
 UI.Dialog.Plugins.Title=Erweiterungen
 UI.Dialog.Print.Title=Drucken
@@ -63,13 +63,13 @@ UI.Window.Settings.Midi.Title=Midi
 UI.Window.Settings.Layout.Title=Layout
 UI.Window.Settings.Player.Title=Player
 UI.Window.Settings.Audio.Title=Audio
-UI.Window.Settings.Updates.Title=Updates
-UI.Window.Settings.Keys.Title=Tastaturbefehle
+UI.Window.Settings.Updates.Title=Aktualisierung
+UI.Window.Settings.Keys.Title=Tastenkombinationen
 UI.Window.Settings.Paths.Title=Ordner
 
 # UI - Settings - Keys
-UI.Settings.Keys.Conflict.Header=Konflikt
-UI.Settings.Keys.Conflict.Content=Es gibt bereits Aktionen, bei denen diese Tastenkombination verwendet wird: \n{}
+UI.Settings.Keys.Conflict.Header=Tastenkombination bereits verwendet
+UI.Settings.Keys.Conflict.Content=Diese Tastenkombination wird bereits verwendet f�r: \n{}
 
 # UI - Dialog - NewProfile
 UI.Dialog.NewProfile.Content=Geben Sie einen Namen f�r das neue Profil ein:
@@ -99,13 +99,13 @@ UI.Dialog.Info.Header=
 UI.Dialog.Info.Content=Version: {} (Build: {})\nAutor: {}\nGrafiken: Robert Goldmann.\n\nDieses Programm nutzt Bibliotheken. ControlsFX (8.40.10), dom4j (1.6.1), snakeyaml (1.11), guava (15.0), gagawa (1.0.1), TinySound (1.1.1), JLayer (1.0.1), JSPF (1.0.2), json-smart (1.2). \nBesonderen Dank an die Betatester: Stefan, Robert.
 
 # UI - Dialog - Feedback
-UI.Dialog.Feedback.Content=Der Fehlerbericht wird �bermittelt. Dies dauert einen kleinen Moment. Bitte haben Sie etwas Geduld. Ihre Nummer wird am Ende angezeigt.
+UI.Dialog.Feedback.Content=Der Fehlerbericht wird �bermittelt, dies kann einen Augenblick dauern. Ihre Nummer wird am Ende angezeigt.
 
 # UI - Placeholder
 UI.Placeholder.Project=Keine Projekte vorhanden
 UI.Placeholder.Preset=Keine Vorlagen vorhanden
-UI.Placeholder.Plugins=Keine Plugins vorhanden
-UI.Placeholder.Updates=Es sind keine Updates verf�gbar
+UI.Placeholder.Plugins=Keine Erweiterungen vorhanden
+UI.Placeholder.Updates=Es sind keine Aktualisierungen verf�gbar
 UI.Placeholder.ErrorSummary=Keine Fehler
 
 # Info - MIDI
@@ -113,13 +113,13 @@ Info.Midi.Device.Connected=Midi-Ger
 
 # Info - Settings
 Info.Settings.ResetWarning=Die Einstellungen wurden zur�ckgesetzt.
-Info.Settings.CacheDelete={} Dateien wurden gel�scht.
+Info.Settings.CacheDelete={} Datei(en) wurden gel�scht.
 
 # Info - Print
 Info.Print.Header={} - Seite {}
 
 # Error - Standard
-Error.Standard.Gen=Es ist ein Fehler aufgetreten. Bitte versuchen Sie es sp�ter noch einmal. ({})
+Error.Standard.Gen=Es ist ein Fehler aufgetreten. Bitte versuchen Sie es sp�ter erneut. ({})
 Error.Standard.NameInUse=Der Name {} ist bereits vorhanden. Bitte w�hlen Sie einen anderen Namen.
 
 # Error - Settings
@@ -131,7 +131,7 @@ Error.Profile.Create=Das Profil konnte aufgrund eines Fehlers nicht erstellt wer
 Error.Profile.NotFound=Das Profil konnte nicht geladen werden, da die ben�tigten Dateien fehlen. W�hlen Sie eine anderes Profile aus und �ffnen Sie das Projekt erneut. ({})
 Error.Profile.Save=Das Profil konnte aufgrund eines Fehlers nicht gespeichert werden. ({})
 Error.Profile.Delete=Das Projekt konnte nicht gel�scht werden. ({})
-Error.Profile.SmallScreen=Ihr Bildschirm ist f�r die gew�hlte Anzahl der Kacheln zu klein. (Maximal: {}x{})
+Error.Profile.SmallScreen=Ihr Bildschirm ist f�r die gew�hlte Anzahl der Kacheln zu klein. (Maximal: {}x{} Kacheln)
 
 # Error - Preset
 Error.Preset.Import=Es ist ein Fehler beim Importieren der Vorlage aufgetreten. ({})
@@ -145,7 +145,7 @@ Error.Project.Save=Das Projekt {} konnte nicht gespeichert werden. ({})
 Error.Project.Rename=Das Projekt konnte nicht umbenannt werden. ({})
 Error.Project.Delete=Das Projekt konnte nicht gel�scht werden. ({})
 Error.Project.Export=Das Projekt {} konnte nicht exportiert werden. ({})
-Error.Project.MediaPath=Der neue Ordner muss au�erhalb des alten Medienordners liegen.
+Error.Project.MediaPath=Der neue Ordner darf kein Unterodner des alten Medienordners sein.
 
 # Error - Pad - Enum
 Error.Pad.FILE_NOT_FOUND=Die Datei {} konnte nicht gefunden werden.
@@ -159,15 +159,15 @@ Error.Fix.NewFile=Neue Datei w
 Error.Fix.Delete=Kachel l�schen
 
 # Error - Midi
-Error.Midi.Settings.Unkown=F�r die ausgew�hlte Seite sind keine Midi Einstellungen aktiv. In Einstellungen -> Midi -> Presets kann dies angepasst werden.
+Error.Midi.Settings.Unkown=F�r die ausgew�hlte Seite sind keine Midi Einstellungen aktiv. Gehen Sie in die Einstellungen, um Midi zu aktivieren.
 Error.Midi.Device.Busy=Das Midi-Ger�t wird bereits durch ein anderes Programm verwendet. ({})
 Error.Midi.Device.Unavailible=Das Midi-Ger�t {} konnte nicht gefunden werden.
 Error.Midi.Record.Fail=Die gedr�ckte Taste wird bereits verwendet.
 Error.Midi.Send=Der Midi Befehl konnte nicht gesendet werden. ({})
 
 # Error - Plugins
-Error.Plugins.Download=Das Plugin {} konnte nicht geladen werden.
-Error.Plugins.Avaiable=Es sind keine Plugins f�r dieses Update Kanal verf�gbar.
+Error.Plugins.Download=Die Erweiterung {} konnte nicht geladen werden.
+Error.Plugins.Avaiable=Es sind keine Erweiterungen f�r diesen Update-Kanal verf�gbar.
 
 #Mapper
 Mapper.Keyboard.Name=Tastatur
@@ -177,10 +177,10 @@ Mapper.Midi.toString=Midi {}
 
 # Info - Mapper
 # Das ist Midi und Tastatur gemeinsam
-Info.Mapper.PressKey=Dr�cken Sie eine Taste auf dem Ger�t.
+Info.Mapper.PressKey=Dr�cken Sie eine Taste auf dem Midi-Ger�t.
 
 #UI - Settings - Alerts
-UI.Settings.Alert.NewKeyShortcut.Text=Dr�cken Sie bitte die gew�nschte Tastenkombination. (Erlaubt sind Buchstaben, Ziffern und Funktionstasten).
+UI.Settings.Alert.NewKeyShortcut.Text=Dr�cken Sie bitte die gew�nschte Tastenkombination. \nDieses kann aus Buchstaben, Ziffern und/oder den F-Tasten bestehen.
 
 # UI - Window - PadSettings
 UI.Window.PadSettings.General.Title=Allgemein
@@ -210,12 +210,12 @@ CartAction.Mode.PLAY_PAUSE=Play/Pause
 CartAction.Mode.PLAY_HOLD=Play/Hold
 
 #UI - Dialog -AutoUpdate
-UI.Dialog.AutoUpdate.Header=Updates
-UI.Dialog.AutoUpdate.Content=Es sind Updates verf�gbar. M�chten Sie diese jetzt installieren?\n{}
-UI.Dialog.AutoUpdate.Title=Updates
-UI.Dialog.AutoUpdate.Checkbox=Dieses Update nicht mehr anzeigen.
-UI.Dialog.AutoUpdate.Butto.Update=Jetzt updaten
-UI.Dialog.AutoUpdate.Butto.Cancel=Jetzt nicht updaten
+UI.Dialog.AutoUpdate.Header=Aktualisierung
+UI.Dialog.AutoUpdate.Content=Es sind Aktualisierungen verf�gbar. M�chten Sie diese jetzt installieren?\n{}
+UI.Dialog.AutoUpdate.Title=Aktualisierung
+UI.Dialog.AutoUpdate.Checkbox=Diese Aktualisierung nicht mehr anzeigen.
+UI.Dialog.AutoUpdate.Butto.Update=Jetzt aktualisieren
+UI.Dialog.AutoUpdate.Butto.Cancel=Jetzt nicht aktualisieren
 
 # Update Channel - BaseName
 UpdateChannel.STABLE=Stabil
@@ -230,7 +230,7 @@ UI.Dialog.Update.Info=Die Aktualisierung wird vorbereitet. Bitte schlie
 UI.Window.Settings.Updates.CurrentVersion={} (Build {})
 
 # Error - Update - Downlaod
-Error.Update.Download=Es ist ein Fehler beim Herunterladen des Updates aufgetreten. Bitte versuchen Sie es sp�ter erneut. ({})
+Error.Update.Download=Es ist ein Fehler beim Herunterladen der Aktualisierung aufgetreten. Bitte versuchen Sie es sp�ter erneut. ({})
 
 # Layout
 Layout.Modern.Name=Modern
@@ -250,8 +250,8 @@ DnDMode.Replace=Ersetzen
 DnDMode.Move=Tauschen
 
 # Main Layout
-MainLayout.Desktop=Desktop Modus
-MainLayout.Touch=Touch Modus
+MainLayout.Desktop=Desktopmodus
+MainLayout.Touch=Touchmodus
 
 # Suche
 Search.Button=Suchen
diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
index 60b6e819..82dbbae7 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
+++ b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
@@ -1,4 +1,5 @@
 #Sprachdatei f�r die Benutzeroberfl�che
+#Kommentare befinden sich immer -->�BER<-- dem jeweiligen Eintrag
 
 main.menu.file=Datei
 main.menu.option=Optionen
@@ -17,9 +18,9 @@ main.menuitem.onTop=Fenster im Vordergrund
 main.menuitem.plugins=Erweiterungen...
 main.menuitem.dnd=Bearbeitungsmodus
 main.menuitem.errors=Fehlerbericht anzeigen...
-main.menuitem.projectSettings=Projekt Einstellungen...
-main.menuitem.profileSettings=Profil Einstellungen...
-main.menuitem.globalSettings=Globale (Programm) Einstellungen
+main.menuitem.projectSettings=Projekteinstellungen...
+main.menuitem.profileSettings=Profileinstellungen...
+main.menuitem.globalSettings=Globale Einstellungen...
 main.menuitem.about=�ber Play Wall...
 main.menuitem.website=Webseite besuchen...
 main.menuitem.senderror=Fehler senden...
@@ -76,22 +77,22 @@ settings.update.label.search=Nach Updates suchen:
 settings.update.label.available=Verf�gbare Updates:
 settings.update.button.search=Jetzt suchen
 settings.update.button.install=Aktualisieren und neu starten
-settings.update.label.channel=Update Kanal:
-settings.update.label.infoC=Program
+settings.update.label.channel=Update-Kanal:
+settings.update.label.infoC=Programm
 settings.update.label.infoE=Erweiterung
 
 settings.keys.label.headline=Tastenkombinationen
 settings.keys.label.name=Name:
-settings.keys.label.shortcut=Kurzbefehl:
-settings.keys.button.change=Neu
-settings.keys.button.delete=Verbindung aufheben
+settings.keys.label.shortcut=Tastenkombination:
+settings.keys.button.change=�ndern
+settings.keys.button.delete=L�schen
 settings.keys.table.name=Name
-settings.keys.table.shortcut=Kurzbefehl
+settings.keys.table.shortcut=Tastenkombination
 settings.keys.textfield.search=Suchen...
 
 settings.paths.label.media=Mediendateien:
 settings.paths.button.choose=W�hlen...
-settings.paths.checkbox.mediaActive=Mediendateien in Medienordner kopieren (oder am Orgenialpfad lassen)
+settings.paths.checkbox.mediaActive=Mediendateien beim Import in den Medienordner kopieren
 
 settings.button.finish=Fertig
 settings.checkbox.activate=Aktivieren
@@ -140,7 +141,7 @@ project.button.new=Neues Projekt
 project.button.duplicate=Duplizieren
 project.button.export=Exportieren...
 project.button.import=Importieren..
-project.label.export=Wenn Sie ein ge�ffnetes Projekt exportieren, wird es zuerst gespeichert.
+project.label.export=Wenn Sie ein ge�ffnetes Projekt exportieren, wird dieses zuerst gespeichert.
 project.label.name=Name:
 project.label.fileSize=Dateigr��e
 project.label.lastModified=Zuletzt bearbeitet:
@@ -172,15 +173,15 @@ print.button.cancel=Abbrechen
 print.button.print=Drucken
 
 plugin.label.restart=Einige �nderungen werden erst nach dem Neustart des Programmes wirksam.
-plugin.label.updateInfo=Plugins k�nnen in den Updateeinstellungen aktualisiert werden.
+plugin.label.updateInfo=Erweiterungen k�nnen in den Aktualisierungseinstellungen aktualisiert werden.
 plugin.button.finish=Fertig
 
-settings.audio.type=Ausgabe Type w�hlen:
+settings.audio.type=Ausgabetype w�hlen:
 
 newProject.label.name=Name:
-newProject.label.media=Media Ordner:
-newProject.checkbox.mediafolder=Media Ordner nutzen (Benutze Dateien werden dort hin kopiert)
-newProject.button.media=Media Ordner w�hlen
+newProject.label.media=Medienordner:
+newProject.checkbox.mediafolder=Medienordner nutzen (Importierte Dateien werden in den angegebenen Ordner kopiert)
+newProject.button.media=Medienordner w�hlen
 
 newProject.label.profile=Profil:
 newProject.button.newProfile=Neues Profil...
@@ -193,15 +194,15 @@ newProfile.label.midi=Midi Funktion:
 newProfile.button.finish=Profil erstellen
 newProfile.button.cancel=Abbrechen
 
-profileChoose.label.info=Die Voreinstellungen zu diesem Projekt wurden nicht gefunden.\nBitte w�hlen Sie neue Voreinstellungen aus.
+profileChoose.label.info=Das verwendete Profil wurde nicht gefunden.\nBitte w�hlen Sie ein anderes Profil aus, welches verwendet werden soll.
 profileChoose.button.finish=Profil w�hlen
 
-doubleFeedback.label.colorEvent=Event Farbe:
-doubleFeedback.label.colorDefault=Standard Farbe:
+doubleFeedback.label.colorEvent=Eventfarbe:
+doubleFeedback.label.colorDefault=Standardfarbe:
 
 cartAction.label.headline=Einstellungen zur Kachel:
 cartAction.label.type=Typ:
-cartAction.label.autoColor=Feedback wie Layout:
+cartAction.label.autoColor=Feedback-Farbe wie Layout:
 cartAction.checkbox.autoColor=Aktivieren
 
 action.mapper.headline=Einstellungen zum Mapping:
@@ -219,7 +220,7 @@ mappingPreset.label.name=Name:
 errorSummary.label.headline=Fehlerzusammenfassung:
 errorSummary.column.cart=Kachel
 errorSummary.column.des=Fehlerbeschreibung
-errorSummary.column.solution=L�sung
+errorSummary.column.solution=L�sungsvorschl�ge
 errorSummary.button.close=Schlie�en
 
 tinysound.label.soundcard=Soundkarte:
@@ -228,7 +229,7 @@ triggertime.label.time=Zeit vom Trigger: (Sek)
 
 carttrigger.label.action=Aktion f�r Kacheln:
 carttrigger.label.carts=Kacheln:
-carttrigger.checkbox.all=Alle, au�er diese
+carttrigger.checkbox.all=Alle anderen Kacheln
 
 volumetrigger.label.volume=Lautst�rke:
-volumetrigger.label.duration=Fade Dauer:
\ No newline at end of file
+volumetrigger.label.duration=�berblenddauer:
\ No newline at end of file
diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/global/keysTab.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/global/keysTab.fxml
index 53e304a2..a45b3546 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/view/option/global/keysTab.fxml
+++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/global/keysTab.fxml
@@ -19,13 +19,13 @@
       <HBox spacing="14.0">
          <children>
             <Label alignment="CENTER_RIGHT" prefWidth="150.0" text="%settings.keys.label.name" />
-            <Label fx:id="nameLabel" prefWidth="100.0" />
+            <Label fx:id="nameLabel" />
          </children>
       </HBox>
       <HBox alignment="CENTER_LEFT" spacing="14.0">
          <children>
             <Label alignment="CENTER_RIGHT" prefWidth="150.0" text="%settings.keys.label.shortcut" />
-            <Label fx:id="shortcutLabel" prefWidth="100.0" />
+            <Label fx:id="shortcutLabel" prefWidth="150.0" />
             <Button fx:id="newShortcutButton" mnemonicParsing="false" onAction="#newShortcutButtonHandler" text="%settings.keys.button.change" />
             <Button fx:id="deleteButton" mnemonicParsing="false" onAction="#deleteHandler" text="%settings.keys.button.delete" />
          </children>
diff --git a/PlayWall/src/application.yml b/PlayWall/src/application.yml
index 29f0ca1f..9211e227 100644
--- a/PlayWall/src/application.yml
+++ b/PlayWall/src/application.yml
@@ -1,6 +1,6 @@
 name: PlayWall
-version: 5.0.1
-build: 33
+version: b5.1.0
+build: 34
 identifier: de.tobias.playpad
 main: de.tobias.playpad.PlayPadMain
 author: Tobias Ullerich
diff --git a/PlayWall/src/de/tobias/playpad/PlayPadMain.java b/PlayWall/src/de/tobias/playpad/PlayPadMain.java
index c50689e3..cdf17287 100644
--- a/PlayWall/src/de/tobias/playpad/PlayPadMain.java
+++ b/PlayWall/src/de/tobias/playpad/PlayPadMain.java
@@ -39,23 +39,7 @@ import javafx.stage.Window;
 /*
  * TODOS
  */
-// PlayWall 5.0.0
-// FIXME XML Tags in String Konstanten
-
-// Common Updater für Plugins & Programme
-// Changelog OK Button
-// Keine Schriftgröße bei Cart Layout
-
-// Profile mit UUID
-
-// Pad System neu machen
-// Neue PadViewController für jedes pad
-// Midi Modell Überarbeiten
-// Bei Seitenwechsel Pad auf Play lassen
-
-// TEST Trigger
-
-// PlayWall 5.1
+// Idden
 // FEATURE Global Volume Trigger mit x% und 100%
 // FEATURE Option bei Import Media auch Copy Media in Library
 // FEATURE lnk für Windows mit Dateiparameter
@@ -124,8 +108,7 @@ public class PlayPadMain extends Application implements LocalizationDelegate {
 			try {
 				Image stageIcon = new Image(iconPath);
 				PlayPadMain.stageIcon = Optional.of(stageIcon);
-			} catch (Exception e) {
-			}
+			} catch (Exception e) {}
 
 			/*
 			 * Setup
diff --git a/PlayWall/src/de/tobias/playpad/action/mapper/listener/KeyboardHandler.java b/PlayWall/src/de/tobias/playpad/action/mapper/listener/KeyboardHandler.java
index 7f1cee36..000a86eb 100644
--- a/PlayWall/src/de/tobias/playpad/action/mapper/listener/KeyboardHandler.java
+++ b/PlayWall/src/de/tobias/playpad/action/mapper/listener/KeyboardHandler.java
@@ -22,14 +22,13 @@ public class KeyboardHandler implements EventHandler<KeyEvent> {
 		this.project = project;
 		this.mainViewController = mainViewController;
 
-		// TEST
 		mainViewController.registerKeyboardListener(KeyEvent.ANY, this);
 	}
 
 	// KeyType ist nicht unterstützt.
 	@Override
 	public void handle(KeyEvent event) {
-		if (event.getTarget() instanceof Scene) { // TEST Ob Probleme da sind, wegen Fokus und so
+		if (event.getTarget() instanceof Scene) {
 			if (!event.isShortcutDown()) {
 				KeyCode code = null;
 				InputType type = null;
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java
index d84bcfc5..78b9f8fa 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewControllerV2.java
@@ -114,10 +114,11 @@ public class MainViewControllerV2 extends ViewController implements IMainViewCon
 		volumeChangeListener = new VolumeChangeListener(this);
 		lockedListener = new LockedListener(this);
 		layoutChangedListener = new LayoutChangedListener();
-
-		setMainLayout(new DesktopMainLayoutConnect()); // DEBUG
 		initMapper(openProject);
 
+		// Default Layout
+		setMainLayout(new DesktopMainLayoutConnect());
+		
 		Profile.registerListener(this);
 		reloadSettings(null, Profile.currentProfile());
 
@@ -539,8 +540,7 @@ public class MainViewControllerV2 extends ViewController implements IMainViewCon
 			{
 				try {
 					Thread.sleep(PlayPadMain.displayTimeMillis * 2);
-				} catch (Exception e) {
-				}
+				} catch (Exception e) {}
 				Platform.runLater(() ->
 				{
 					if (menuToolbarViewController != null)
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/PathsTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/PathsTabViewController.java
index f755db2f..551b2d4c 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/PathsTabViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/project/PathsTabViewController.java
@@ -136,10 +136,7 @@ public class PathsTabViewController extends ProjectSettingsTabViewController imp
 								{
 									try {
 										content.handlePath(copiedFile);
-									} catch (NoSuchComponentException e) {
-										// TODO Auto-generated catch block
-										e.printStackTrace();
-									} catch (IOException e) {
+									} catch (NoSuchComponentException | IOException e) {
 										// TODO Auto-generated catch block
 										e.printStackTrace();
 									}
diff --git a/PlayWallCore/src/de/tobias/playpad/action/Mapping.java b/PlayWallCore/src/de/tobias/playpad/action/Mapping.java
index c1292c49..43473168 100644
--- a/PlayWallCore/src/de/tobias/playpad/action/Mapping.java
+++ b/PlayWallCore/src/de/tobias/playpad/action/Mapping.java
@@ -13,7 +13,6 @@ import de.tobias.playpad.action.mapper.Mapper;
 import de.tobias.playpad.action.mapper.MapperConnect;
 import de.tobias.playpad.action.mapper.MapperConnectFeedbackable;
 import de.tobias.playpad.project.Project;
-import de.tobias.playpad.registry.NoSuchComponentException;
 import de.tobias.playpad.registry.Registry;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
@@ -112,13 +111,8 @@ public class Mapping implements Cloneable, ActionDisplayable {
 
 	public void initActionType(Profile profile) {
 		Registry<ActionConnect> actions = PlayPadPlugin.getRegistryCollection().getActions();
-		for (String type : actions.getTypes()) {
-			try {
-				actions.getComponent(type).initActionType(this, profile); // TODO
-			} catch (NoSuchComponentException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
+		for (ActionConnect component : actions.getComponents()) {
+			component.initActionType(this, profile);
 		}
 	}
 
@@ -131,16 +125,10 @@ public class Mapping implements Cloneable, ActionDisplayable {
 	}
 
 	public void initFeedback() {
-		Registry<MapperConnect> mappers = PlayPadPlugin.getRegistryCollection().getMappers();
-		for (String mapperType : mappers.getTypes()) {
-			try {
-				MapperConnect mapper = mappers.getComponent(mapperType);
-				if (mapper instanceof MapperConnectFeedbackable) {
-					((MapperConnectFeedbackable) mapper).initFeedbackType();
-				}
-			} catch (NoSuchComponentException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
+		Registry<MapperConnect> registry = PlayPadPlugin.getRegistryCollection().getMappers();
+		for (MapperConnect mapper : registry.getComponents()) {
+			if (mapper instanceof MapperConnectFeedbackable) {
+				((MapperConnectFeedbackable) mapper).initFeedbackType();
 			}
 		}
 	}
@@ -163,18 +151,13 @@ public class Mapping implements Cloneable, ActionDisplayable {
 	}
 
 	public void clearFeedback() {
-		Registry<MapperConnect> mappers = PlayPadPlugin.getRegistryCollection().getMappers();
-		for (String mapperType : mappers.getTypes()) {
-			try {
-				MapperConnect mapper = mappers.getComponent(mapperType);
-				if (mapper instanceof MapperConnectFeedbackable) {
-					((MapperConnectFeedbackable) mapper).clearFeedbackType();
-				}
-			} catch (NoSuchComponentException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
+		Registry<MapperConnect> registry = PlayPadPlugin.getRegistryCollection().getMappers();
+		for (MapperConnect mapper : registry.getComponents()) {
+			if (mapper instanceof MapperConnectFeedbackable) {
+				((MapperConnectFeedbackable) mapper).clearFeedbackType();
 			}
 		}
+
 		getActions().forEach(action -> action.clearFeedback());
 	}
 
diff --git a/PlayWallCore/src/de/tobias/playpad/project/ProjectReferenceList.java b/PlayWallCore/src/de/tobias/playpad/project/ProjectReferenceList.java
index a9d7ea84..a9a172d9 100644
--- a/PlayWallCore/src/de/tobias/playpad/project/ProjectReferenceList.java
+++ b/PlayWallCore/src/de/tobias/playpad/project/ProjectReferenceList.java
@@ -16,19 +16,22 @@ final class ProjectReferenceList extends UniqList<ProjectReference> {
 
 	public boolean contains(Object o) {
 		if (o instanceof String) {
-			for (ProjectReference reference : this) {
-				if (reference.getName().equals(o)) {
+			for (ProjectReference item : this) {
+				if (item.getName().equals(o)) {
 					return true;
-				} else if (reference.toString().equals(o)) {
+				} else if (item.toString().equals(o)) {
 					return true;
 				}
 			}
 		} else if (o instanceof ProjectReference) {
-			for (ProjectReference reference : this) {
-				if (reference.getName() == o) {
-					return true;
-				} else if (reference.getName().equals(((ProjectReference) o).getName())) { // TODO Check
+			for (ProjectReference item : this) {
+				if (item.getName() == o) {
 					return true;
+				} else {
+					ProjectReference projectRef = (ProjectReference) o;
+					if (item.getName().equals(projectRef.getName())) {
+						return true;
+					}
 				}
 			}
 		}
-- 
GitLab