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 cdc05e376046c786b0040e53573933f7eef7f0a6..76da608d457544218a68030a9677139781f6aa83 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
+++ b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties
@@ -16,7 +16,6 @@ main.menuitem.profile=Profile verwalten...
 main.menuitem.print=Drucken...
 main.menuitem.onTop=Fenster im Vordergrund
 main.menuitem.plugins=Erweiterungen...
-main.menuitem.dnd=Bearbeitungsmodus
 main.menuitem.errors=Fehlerbericht anzeigen...
 main.menuitem.projectSettings=Projekteinstellungen...
 main.menuitem.profileSettings=Profileinstellungen...
diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml
index dd7c7d2aa525e7b2093debec88e177d3f3cdc92f..4596aa8d1aba7628ed36e39fbc146a383b7228b0 100644
--- a/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml
+++ b/PlayWall/assets/de/tobias/playpad/assets/view/main/desktop/header.fxml
@@ -39,11 +39,6 @@
       </Menu>
       <Menu mnemonicParsing="false" text="%main.menu.option">
          <items>
-            <CheckMenuItem fx:id="dndModeMenuItem" mnemonicParsing="false" onAction="#dndModeHandler" text="%main.menuitem.dnd">
-               <accelerator>
-                  <KeyCodeCombination alt="UP" code="M" control="UP" meta="UP" shift="UP" shortcut="DOWN" />
-               </accelerator>
-            </CheckMenuItem>
             <MenuItem fx:id="errorMenu" mnemonicParsing="false" onAction="#errorMenuHandler" text="%main.menuitem.errors">
                <accelerator>
                   <KeyCodeCombination alt="UP" code="E" control="UP" meta="UP" shift="UP" shortcut="DOWN" />
diff --git a/PlayWall/src/de/tobias/playpad/components/Keys.xml b/PlayWall/src/de/tobias/playpad/components/Keys.xml
index d5f0239e01f66870f30a2311003816151f3532af..603df4417aabacddf62d4d51858503bba6d1b5b9 100644
--- a/PlayWall/src/de/tobias/playpad/components/Keys.xml
+++ b/PlayWall/src/de/tobias/playpad/components/Keys.xml
@@ -6,7 +6,6 @@
 		<Key id="save_proj" name="main.menuitem.save" key="S" ctrl="true" alt="false" meta="false" shift="false"/>
 		<Key id="print_proj" name="main.menuitem.print" key="P" ctrl="true" alt="false" meta="false" shift="false"/>
 		
-		<Key id="dnd" name="main.menuitem.dnd" key="M" ctrl="true" alt="false" meta="false" shift="false"/>
 		<Key id="errors" name="main.menuitem.errors" key="E" ctrl="true" alt="false" meta="false" shift="false"/>
 		<Key id="plugins" name="main.menuitem.plugins"/>
 		<Key id="project_settings" name="main.menuitem.projectSettings" key="Comma" ctrl="true" alt="true" meta="false" shift="false"/>
@@ -23,7 +22,6 @@
 		<Key id="save_proj" name="main.menuitem.save" key="S" ctrl="false" alt="false" meta="true" shift="false"/>
 		<Key id="print_proj" name="main.menuitem.print" key="P" ctrl="false" alt="false" meta="true" shift="false"/>
 		
-		<Key id="dnd" name="main.menuitem.dnd" key="M" ctrl="false" alt="false" meta="true" shift="false"/>
 		<Key id="errors" name="main.menuitem.errors" key="E" ctrl="false" alt="false" meta="true" shift="false"/>
 		<Key id="plugins" name="main.menuitem.plugins"/>
 		<Key id="project_settings" name="main.menuitem.projectSettings" key="Comma" ctrl="false" alt="true" meta="true" shift="false"/>
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopEditMode.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopEditMode.java
new file mode 100644
index 0000000000000000000000000000000000000000..ae58ecf802afaea4b891fcc52ac8efd7b0afafb9
--- /dev/null
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopEditMode.java
@@ -0,0 +1,7 @@
+package de.tobias.playpad.layout.desktop;
+
+public enum DesktopEditMode {
+	PLAY,
+	DRAG,
+	COLOR;
+}
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java
index 9d9b3657b2436e236cf07934870d735adbc84ee4..0d1c754dd79d7a6759f36a893103004e41b507ed 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMainLayoutConnect.java
@@ -21,6 +21,7 @@ public class DesktopMainLayoutConnect implements MainLayoutConnect {
 	private static final String TYPE = "Desktop";
 
 	private DesktopMenuToolbarViewController desktopMenuToolbarViewController;
+	private DesktopEditMode editMode = DesktopEditMode.PLAY;
 
 	private Stack<IPadView> recyclingStack;
 
@@ -41,7 +42,7 @@ public class DesktopMainLayoutConnect implements MainLayoutConnect {
 	@Override
 	public MenuToolbarViewController createMenuToolbar(IMainViewController mainViewRef) {
 		if (desktopMenuToolbarViewController == null) {
-			desktopMenuToolbarViewController = new DesktopMenuToolbarViewController(mainViewRef);
+			desktopMenuToolbarViewController = new DesktopMenuToolbarViewController(mainViewRef, this);
 		}
 		return desktopMenuToolbarViewController;
 	}
@@ -51,7 +52,7 @@ public class DesktopMainLayoutConnect implements MainLayoutConnect {
 		if (!recyclingStack.isEmpty()) {
 			return recyclingStack.pop();
 		}
-		return new DesktopPadView();
+		return new DesktopPadView(this);
 	}
 
 	@Override
@@ -64,4 +65,11 @@ public class DesktopMainLayoutConnect implements MainLayoutConnect {
 		return null;
 	}
 
+	public DesktopEditMode getEditMode() {
+		return editMode;
+	}
+
+	public void setEditMode(DesktopEditMode editMode) {
+		this.editMode = editMode;
+	}
 }
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
index d130626ee700e48dae98cd463ce9d097000b2567..34ee58d90c6c8e78eb2720fb712e43060a04079b 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
@@ -8,6 +8,7 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import org.controlsfx.control.SegmentedButton;
 import org.controlsfx.control.textfield.TextFields;
 
 import de.tobias.playpad.AppUserInfoStrings;
@@ -43,11 +44,12 @@ import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.playpad.viewcontroller.option.global.GlobalSettingsViewController;
 import de.tobias.playpad.viewcontroller.option.profile.ProfileSettingsViewController;
 import de.tobias.playpad.viewcontroller.option.project.ProjectSettingsViewController;
-import de.tobias.playpad.viewcontroller.pad.PadDragListener;
 import de.tobias.utils.application.ApplicationInfo;
 import de.tobias.utils.application.ApplicationUtils;
 import de.tobias.utils.application.container.PathType;
 import de.tobias.utils.ui.Alertable;
+import de.tobias.utils.ui.icon.FontAwesomeType;
+import de.tobias.utils.ui.icon.FontIcon;
 import de.tobias.utils.ui.scene.NotificationPane;
 import de.tobias.utils.util.Localization;
 import de.tobias.utils.util.Worker;
@@ -69,6 +71,7 @@ import javafx.scene.control.MenuBar;
 import javafx.scene.control.MenuItem;
 import javafx.scene.control.Slider;
 import javafx.scene.control.TextField;
+import javafx.scene.control.ToggleButton;
 import javafx.scene.input.KeyCombination;
 import javafx.scene.layout.HBox;
 import javafx.stage.Modality;
@@ -85,7 +88,6 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	@FXML protected MenuItem profileMenu;
 	@FXML protected MenuItem printProjectMenuItem;
 
-	@FXML protected CheckMenuItem dndModeMenuItem;
 	@FXML protected MenuItem errorMenu;
 	@FXML protected MenuItem pluginMenu;
 
@@ -107,13 +109,16 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 
 	private IMainViewController mainViewController;
 
-	private ProjectSettingsViewController projectSettingsViewController;
-	private ProfileSettingsViewController profileSettingsViewController;
-	private GlobalSettingsViewController globalSettingsViewController;
+	private transient ProjectSettingsViewController projectSettingsViewController;
+	private transient ProfileSettingsViewController profileSettingsViewController;
+	private transient GlobalSettingsViewController globalSettingsViewController;
 
-	public DesktopMenuToolbarViewController(IMainViewController controller) {
+	private DesktopMainLayoutConnect connect;
+
+	public DesktopMenuToolbarViewController(IMainViewController controller, DesktopMainLayoutConnect connect) {
 		super("header", "de/tobias/playpad/assets/view/main/desktop/", PlayPadMain.getUiResourceBundle());
 		this.mainViewController = controller;
+		this.connect = connect;
 
 		initLayoutMenu();
 	}
@@ -130,6 +135,37 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		// Help Menu --> HIDDEN TODO
 		helpMenu.setVisible(false);
 		helpMenu.getItems().add(new HelpMenuItem(helpMenu));
+
+		// Edit Mode Buttons
+		SegmentedButton editButtons = new SegmentedButton();
+		ToggleButton playButton = new ToggleButton("", new FontIcon(FontAwesomeType.HAND_ALT_LEFT));
+		playButton.setFocusTraversable(false);
+		ToggleButton dragButton = new ToggleButton("", new FontIcon(FontAwesomeType.ARROWS));
+		dragButton.setFocusTraversable(false);
+		ToggleButton colorButton = new ToggleButton("", new FontIcon(FontAwesomeType.PENCIL));
+		colorButton.setFocusTraversable(false);
+		editButtons.getButtons().addAll(playButton, dragButton, colorButton);
+		editButtons.getToggleGroup().selectedToggleProperty().addListener((a, b, c) ->
+		{
+			if (b == dragButton) {
+				for (IPadView view : mainViewController.getPadViews()) {
+					view.enableDragAndDropDesignMode(false);
+				}
+			}
+
+			if (c == playButton) {
+				connect.setEditMode(DesktopEditMode.PLAY);
+			} else if (c == dragButton) {
+				connect.setEditMode(DesktopEditMode.DRAG);
+				System.out.println("Drag");
+				for (IPadView view : mainViewController.getPadViews()) {
+					view.enableDragAndDropDesignMode(true);
+				}
+			} else if (c == colorButton) {
+				connect.setEditMode(DesktopEditMode.COLOR);
+			}
+		});
+		iconHbox.getChildren().add(editButtons);
 	}
 
 	private void initLayoutMenu() {
@@ -203,7 +239,6 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		setKeyBindingForMenu(saveProjectMenuItem, keys.getKey("save_proj"));
 		setKeyBindingForMenu(printProjectMenuItem, keys.getKey("print_proj"));
 
-		setKeyBindingForMenu(dndModeMenuItem, keys.getKey("dnd"));
 		setKeyBindingForMenu(errorMenu, keys.getKey("errors"));
 		setKeyBindingForMenu(pluginMenu, keys.getKey("plugins"));
 		setKeyBindingForMenu(projectSettingsMenuItem, keys.getKey("project_settings"));
@@ -219,7 +254,6 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		saveProjectMenuItem.setDisable(false);
 		printProjectMenuItem.setDisable(false);
 
-		dndModeMenuItem.setDisable(false);
 		errorMenu.setDisable(false);
 		pluginMenu.setDisable(false);
 		projectSettingsMenuItem.setDisable(false);
@@ -233,7 +267,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 
 	@Override
 	public void setLocked(boolean looked) {
-		dndModeMenuItem.setDisable(looked);
+		// TODO Lock Edit Buttons
 	}
 
 	@Override
@@ -276,7 +310,6 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		saveProjectMenuItem.setDisable(true);
 		printProjectMenuItem.setDisable(true);
 
-		dndModeMenuItem.setDisable(true);
 		errorMenu.setDisable(true);
 		pluginMenu.setDisable(true);
 		projectSettingsMenuItem.setDisable(true);
@@ -287,13 +320,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		alwaysOnTopItem.setDisable(true);
 		searchPadMenuItem.setDisable(true);
 
-		// Disable Drag Mode wenn aktiv und diese Toolbar deaktiviert wird.
-		if (dndModeMenuItem.isSelected()) {
-			PadDragListener.setDndMode(false);
-			for (IPadView view : mainViewController.getPadViews()) {
-				view.enableDragAndDropDesignMode(false);
-			}
-		}
+		connect.setEditMode(DesktopEditMode.PLAY); // TODO -> Button Mit wecheln
 	}
 
 	@Override
@@ -320,7 +347,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 				newNode.getStyleClass().add(CURRENT_PAGE_BUTTON);
 				currentPage = index;
 
-				if (newNode instanceof Button && dndModeMenuItem.isSelected()) { // Nur bei Drag And Drop mode
+				if (newNode instanceof Button && connect.getEditMode() == DesktopEditMode.DRAG) { // Nur bei Drag And Drop mode
 					Button button = (Button) newNode;
 					DesktopButtonEditView editBox = new DesktopButtonEditView(openProject.getPage(index), button);
 					button.setGraphic(editBox);
@@ -410,29 +437,6 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		dialog.getStage().show();
 	}
 
-	@FXML
-	void dndModeHandler(ActionEvent event) {
-		if (dndModeMenuItem.isSelected()) {
-			GlobalSettings settings = PlayPadPlugin.getImplementation().getGlobalSettings();
-			Project currentProject = PlayPadMain.getProgramInstance().getCurrentProject();
-
-			if (settings.isLiveMode() && settings.isLiveModeDrag() && currentProject.getActivePlayers() == 0) {
-				PadDragListener.setDndMode(true);
-				for (IPadView view : mainViewController.getPadViews()) {
-					view.enableDragAndDropDesignMode(true);
-				}
-			}
-		} else {
-			PadDragListener.setDndMode(false);
-			for (IPadView view : mainViewController.getPadViews()) {
-				view.enableDragAndDropDesignMode(false);
-			}
-		}
-
-		// Damit werden Page Buttons editierbar (die 3 Button vom DesktopButtonEditView)
-		highlightPageButton(currentPage);
-	}
-
 	@FXML
 	void errorMenuHandler(ActionEvent event) {
 		ErrorSummaryDialog.getInstance().getStage().show();
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/pad/PadDragListener.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadDragListener.java
similarity index 91%
rename from PlayWall/src/de/tobias/playpad/viewcontroller/pad/PadDragListener.java
rename to PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadDragListener.java
index 814032b715b6e22f7c8ba572ae00f3080cbaf32e..de4d05aac2bcdd4f8551172c691bdb5563611b97 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/pad/PadDragListener.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadDragListener.java
@@ -1,4 +1,4 @@
-package de.tobias.playpad.viewcontroller.pad;
+package de.tobias.playpad.layout.desktop;
 
 import java.io.File;
 import java.io.IOException;
@@ -31,12 +31,12 @@ import javafx.scene.input.TransferMode;
 import javafx.scene.layout.Pane;
 import javafx.scene.paint.Color;
 
-public class PadDragListener {
+public class DesktopPadDragListener {
 
 	private Pad sourcePad;
 	final private Pane view;
 
-	private static boolean dndMode;
+	private DesktopMainLayoutConnect connect;
 	private static Project project;
 
 	private PadDragOptionView padHud;
@@ -44,8 +44,10 @@ public class PadDragListener {
 
 	private static DataFormat dataFormat = new DataFormat("de.tobias.playpad.padindex");
 
-	public PadDragListener(Pad pad, IPadView view) {
+	public DesktopPadDragListener(Pad pad, IPadView view, DesktopMainLayoutConnect connect) {
 		this.sourcePad = pad;
+		this.connect = connect;
+
 		this.view = view.getRootNode();
 
 		// Drag and Drop
@@ -157,7 +159,7 @@ public class PadDragListener {
 			PadIndex padID = (PadIndex) db.getContent(dataFormat); // TODO Check Cast
 
 			PadDragMode mode = padHud.getSelectedPadDragMode();
-			
+
 			mode.handle(padID, sourcePad.getPadIndex(), project);
 			padHud.hide();
 
@@ -170,7 +172,7 @@ public class PadDragListener {
 	}
 
 	private void dragDetacted(MouseEvent event) {
-		if (dndMode) {
+		if (connect.getEditMode() == DesktopEditMode.DRAG) {
 			GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings();
 
 			if (sourcePad.getProject() != null) {
@@ -202,23 +204,8 @@ public class PadDragListener {
 		}
 	}
 
-	/**
-	 * Aktiviert den Drag And Drop Modus für Kacheln. Diese Methode muss vom Menu / KeyShortcut aufgerufen werden.
-	 * 
-	 * @param dndMode
-	 *            <code>true</code> Aktiv
-	 */
-	public static void setDndMode(boolean dndMode) {
-		PadDragListener.dndMode = dndMode;
-	}
-
-	@Deprecated
-	public void setPad(Pad pad) {
-		this.sourcePad = pad;
-	}
-
 	public static void setProject(Project project) {
-		PadDragListener.project = project;
+		DesktopPadDragListener.project = project;
 	}
 
 }
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadView.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadView.java
index 72d74d982d3b7465e7abe24e6b4c0a58774e56ea..70203abd4c88ae25872c48c819f1dc8bc62d531e 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadView.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadView.java
@@ -56,9 +56,9 @@ public class DesktopPadView implements IPadView {
 	private BusyView busyView;
 
 	private transient DesktopPadViewController controller; // Reference to its controller
-
-	public DesktopPadView() {
-		controller = new DesktopPadViewController(this);
+	
+	public DesktopPadView(DesktopMainLayoutConnect connect) {
+		controller = new DesktopPadViewController(this, connect);
 		setupView();
 	}
 
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadViewController.java
index 0384a296e54b07d84224036dd1865e53d0717f57..f22e6f26b68b84b0e792d905415526c4432545c5 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadViewController.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopPadViewController.java
@@ -29,7 +29,6 @@ import de.tobias.playpad.settings.ProfileSettings;
 import de.tobias.playpad.view.FileDragOptionView;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import de.tobias.playpad.viewcontroller.option.pad.PadSettingsViewController;
-import de.tobias.playpad.viewcontroller.pad.PadDragListener;
 import de.tobias.utils.application.ApplicationUtils;
 import de.tobias.utils.util.FileUtils;
 import de.tobias.utils.util.Localization;
@@ -57,10 +56,13 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 	private PadDurationListener padDurationListener;
 	private IPadPositionListener padPositionListener;
 
-	private PadDragListener padDragListener;
+	private DesktopPadDragListener padDragListener;
 
-	public DesktopPadViewController(DesktopPadView padView) {
+	private DesktopMainLayoutConnect connect;
+	
+	public DesktopPadViewController(DesktopPadView padView, DesktopMainLayoutConnect connect) {
 		this.padView = padView;
+		this.connect = connect;
 
 		padLockedListener = new PadLockedListener(this);
 		padStatusListener = new PadStatusListener(this);
@@ -109,7 +111,7 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 			padContentListener.changed(null, null, pad.getContent()); // Add Duration listener
 			padStatusListener.changed(null, null, pad.getStatus());
 
-			padDragListener = new PadDragListener(pad, padView);
+			padDragListener = new DesktopPadDragListener(pad, padView, connect);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -393,7 +395,7 @@ public class DesktopPadViewController implements IPadViewController, EventHandle
 		return padDurationListener;
 	}
 
-	public PadDragListener getPadDragListener() {
+	public DesktopPadDragListener getPadDragListener() {
 		return padDragListener;
 	}
 }
diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/PageButtonDragHandler.java b/PlayWall/src/de/tobias/playpad/layout/desktop/PageButtonDragHandler.java
index 64b67e7204d8d147366d572b64b8d2b2954da50b..3043e41a3c33b0e17a1273fe906003b85d4eaf64 100644
--- a/PlayWall/src/de/tobias/playpad/layout/desktop/PageButtonDragHandler.java
+++ b/PlayWall/src/de/tobias/playpad/layout/desktop/PageButtonDragHandler.java
@@ -4,6 +4,13 @@ import de.tobias.playpad.viewcontroller.main.IMainViewController;
 import javafx.event.EventHandler;
 import javafx.scene.input.DragEvent;
 
+/**
+ * Drag and Drop eines Pads auf ein Page Button (umschalten auf neue Page), wird im DesktopMenuToolbarController verwaltet.
+ * 
+ * @author tobias
+ * 
+ * @since 5.1.0
+ */
 public class PageButtonDragHandler implements EventHandler<DragEvent> {
 
 	private IMainViewController controller;
diff --git a/PlayWall/src/de/tobias/playpad/layout/touch/TouchPadViewController.java b/PlayWall/src/de/tobias/playpad/layout/touch/TouchPadViewController.java
index 11ef9044b35d086c2f6dbcce2d21a24b8714d7e4..92f038f0c0dbb8590e79de5fbd415754aa3221b5 100644
--- a/PlayWall/src/de/tobias/playpad/layout/touch/TouchPadViewController.java
+++ b/PlayWall/src/de/tobias/playpad/layout/touch/TouchPadViewController.java
@@ -14,7 +14,6 @@ import de.tobias.playpad.pad.view.IPadView;
 import de.tobias.playpad.pad.viewcontroller.IPadViewController;
 import de.tobias.playpad.settings.Profile;
 import de.tobias.playpad.settings.ProfileSettings;
-import de.tobias.playpad.viewcontroller.pad.PadDragListener;
 import javafx.beans.value.ChangeListener;
 import javafx.event.Event;
 import javafx.event.EventHandler;
@@ -37,8 +36,6 @@ public class TouchPadViewController implements IPadViewController, EventHandler<
 	private PadDurationListener padDurationListener;
 	private IPadPositionListener padPositionListener;
 
-	private PadDragListener padDragListener;
-
 	public TouchPadViewController(TouchPadView padView) {
 		this.padView = padView;
 
@@ -91,8 +88,6 @@ public class TouchPadViewController implements IPadViewController, EventHandler<
 																		// Duration
 																		// listener
 			padStatusListener.changed(null, null, pad.getStatus());
-
-			padDragListener = new PadDragListener(pad, padView);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -122,14 +117,12 @@ public class TouchPadViewController implements IPadViewController, EventHandler<
 				durationable.positionProperty().removeListener(padPositionListener);
 			}
 			pad.setController(null);
-			padDragListener = null;
 
 			// GUI Cleaning
 			padPositionListener.stopWaning();
 			padView.removeStyleClasses();
 		}
 
-		this.padDragListener = null;
 		this.pad = null;
 	}
 
@@ -232,8 +225,4 @@ public class TouchPadViewController implements IPadViewController, EventHandler<
 	public ChangeListener<Duration> getPadDurationListener() {
 		return padDurationListener;
 	}
-
-	public PadDragListener getPadDragListener() {
-		return padDragListener;
-	}
 }
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
index b260afc55ff730a6f5126a9ac2fa592223e1b485..ccbc3fe9c5896b0021c98717f8d113a236289f28 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/main/MainViewController.java
@@ -15,6 +15,7 @@ import de.tobias.playpad.action.mapper.listener.KeyboardHandler;
 import de.tobias.playpad.action.mapper.listener.MidiHandler;
 import de.tobias.playpad.design.GlobalDesign;
 import de.tobias.playpad.layout.desktop.DesktopMainLayoutConnect;
+import de.tobias.playpad.layout.desktop.DesktopPadDragListener;
 import de.tobias.playpad.midi.Midi;
 import de.tobias.playpad.midi.MidiListener;
 import de.tobias.playpad.pad.Pad;
@@ -34,7 +35,6 @@ import de.tobias.playpad.view.main.MainLayoutConnect;
 import de.tobias.playpad.view.main.MainLayoutHandler;
 import de.tobias.playpad.viewcontroller.dialog.ErrorSummaryDialog;
 import de.tobias.playpad.viewcontroller.dialog.SaveDialog;
-import de.tobias.playpad.viewcontroller.pad.PadDragListener;
 import de.tobias.utils.ui.BasicControllerSettings;
 import de.tobias.utils.ui.NotificationHandler;
 import de.tobias.utils.ui.ViewController;
@@ -386,7 +386,7 @@ public class MainViewController extends ViewController implements IMainViewContr
 
 		midiHandler.setProject(project);
 		keyboardHandler.setProject(project);
-		PadDragListener.setProject(project);
+		DesktopPadDragListener.setProject(project);
 		ErrorSummaryDialog.getInstance().setProject(openProject);
 
 		menuToolbarViewController.setOpenProject(openProject);
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/pad/PadViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/pad/PadViewController.java
deleted file mode 100644
index 47372327084c09e2b17c49f972f6956a1e89f1f6..0000000000000000000000000000000000000000
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/pad/PadViewController.java
+++ /dev/null
@@ -1,395 +0,0 @@
-package de.tobias.playpad.viewcontroller.pad;
-
-import java.io.File;
-import java.nio.file.Path;
-
-import de.tobias.playpad.PlayPadPlugin;
-import de.tobias.playpad.PseudoClasses;
-import de.tobias.playpad.pad.Pad;
-import de.tobias.playpad.pad.PadStatus;
-import de.tobias.playpad.pad.TimeMode;
-import de.tobias.playpad.pad.conntent.PadContent;
-import de.tobias.playpad.pad.conntent.PadContentConnect;
-import de.tobias.playpad.pad.conntent.play.Durationable;
-import de.tobias.playpad.pad.listener.IPadPositionListener;
-import de.tobias.playpad.pad.listener.PadContentListener;
-import de.tobias.playpad.pad.listener.PadDurationListener;
-import de.tobias.playpad.pad.listener.PadLockedListener;
-import de.tobias.playpad.pad.listener.PadPositionListener;
-import de.tobias.playpad.pad.listener.PadStatusListener;
-import de.tobias.playpad.pad.view.IPadViewController;
-import de.tobias.playpad.registry.NoSuchComponentException;
-import de.tobias.playpad.settings.Profile;
-import de.tobias.playpad.settings.ProfileSettings;
-import de.tobias.playpad.view.PadView;
-import de.tobias.playpad.viewcontroller.IPadView;
-import de.tobias.playpad.viewcontroller.main.IMainViewController;
-import de.tobias.playpad.viewcontroller.option.pad.PadSettingsViewController;
-import de.tobias.utils.util.FileUtils;
-import javafx.event.ActionEvent;
-import javafx.event.EventHandler;
-import javafx.stage.Stage;
-import javafx.util.Duration;
-
-public class PadViewController implements EventHandler<ActionEvent>, IPadViewController {
-
-	private static final String DURATION_FORMAT = "%d:%02d";
-	private static final String OPEN_FOLDER = "openFolder";
-
-	private PadView view;
-	private Pad pad;
-
-	private PadLockedListener padLockedListener;
-	private PadStatusListener padStatusListener;
-	private PadContentListener padContentListener;
-	private PadDurationListener padDurationListener;
-	private PadPositionListener padPositionListener;
-
-	private PadDragListener padDragListener;
-	private transient PadSettingsViewController padSettingsViewController;
-
-	public PadViewController() {
-		view = new PadView(this);
-
-		// TODO Disable this
-		/*padLockedListener = new PadLockedListener(this);
-		padStatusListener = new PadStatusListener(this);
-		padContentListener = new PadContentListener(this);
-		padDurationListener = new PadDurationListener(this);
-		padPositionListener = new PadPositionListener(this);*/
-
-		// Listener muss nur einmal hier hinzugefügt werden, weil bei einem neuen Profile, werden neue PadViewController erzeugt
-		ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings();
-		profileSettings.lockedProperty().addListener(padLockedListener);
-	}
-
-	@Override
-	public IPadView getParent() {
-		return view;
-	}
-
-	@Override
-	public void handle(ActionEvent event) {
-		if (event.getSource() == view.getPlayButton()) {
-			onPlay();
-		} else if (event.getSource() == view.getPauseButton()) {
-			onPause();
-		} else if (event.getSource() == view.getStopButton()) {
-			onStop();
-		} else if (event.getSource() == view.getNewButton()) {
-			onNew(event);
-		} else if (event.getSource() == view.getSettingsButton()) {
-			onSettings();
-		}
-	}
-
-	private void onPlay() {
-		if (pad.getContent() != null) {
-			pad.setStatus(PadStatus.PLAY);
-		}
-	}
-
-	private void onPause() {
-		if (pad.getContent() != null) {
-			pad.setStatus(PadStatus.PAUSE);
-		}
-	}
-
-	private void onStop() {
-		if (pad.getContent() != null) {
-			pad.setStatus(PadStatus.STOP);
-		}
-	}
-
-	private void onNew(ActionEvent event) {
-//		ProfileSettings settings = Profile.currentProfile().getProfileSettings();
-//		if (pad.getProject() != null) {
-//			if (settings.isLiveMode() && settings.isLiveModeFile() && pad.getProject().getPlayedPlayers() > 0) {
-//				PlayPadPlugin.getImplementation().getMainViewController().showLiveInfo();
-//				return;
-//			}
-//		}
-//
-//		FileChooser chooser = new FileChooser();
-//
-//		// File Extension
-//		ExtensionFilter extensionFilter = new ExtensionFilter(Localization.getString(Strings.File_Filter_Media),
-//				PadContentRegistry.getSupportedFileTypes());
-//		chooser.getExtensionFilters().add(extensionFilter);
-//
-//		// Last Folder
-//		Object openFolder = ApplicationUtils.getApplication().getUserDefaults().getData(OPEN_FOLDER);
-//		if (openFolder != null) {
-//			File folder = new File(openFolder.toString());
-//			chooser.setInitialDirectory(folder);
-//		}
-//
-//		File file = chooser.showOpenDialog(((Node) event.getTarget()).getScene().getWindow());
-//		if (file != null) {
-//			Path path = file.toPath();
-//
-//			try {
-//				Set<PadContentConnect> connects = PadContentRegistry.getPadContentConnectsForFile(file.toPath());
-//				if (!connects.isEmpty()) {
-//					if (connects.size() > 1) {
-//						FileDragOptionView hud = new FileDragOptionView(view);
-//						hud.showDropOptions(connects, connect ->
-//						{
-//							if (connect != null) {
-//								setNewPadContent(file, path, connect);
-//								hud.hide();
-//							}
-//						});
-//					} else {
-//						PadContentConnect connect = connects.iterator().next();
-//						setNewPadContent(file, path, connect);
-//					}
-//				}
-//			} catch (UnkownPadContentException e) {
-//				e.printStackTrace();
-//			}
-//
-//			ApplicationUtils.getApplication().getUserDefaults().setData(OPEN_FOLDER, path.getParent().toString());
-//		}
-	}
-
-	private void setNewPadContent(File file, Path path, PadContentConnect connect) {
-		PadContent content = pad.getContent();
-		if (pad.getContent() == null || !pad.getContent().getType().equals(connect.getType())) {
-			content = connect.newInstance(pad);
-			this.pad.setContent(content);
-		}
-
-		try {
-			content.handlePath(file.toPath());
-		} catch (NoSuchComponentException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		this.pad.setName(FileUtils.getFilenameWithoutExtention(path.getFileName()));
-	}
-
-	private void onSettings() {
-		ProfileSettings settings = Profile.currentProfile().getProfileSettings();
-		IMainViewController mvc = PlayPadPlugin.getImplementation().getMainViewController();
-
-		if (mvc != null) {
-			if (pad.getProject() != null) {
-				if (settings.isLiveMode() && settings.isLiveModeSettings() && pad.getProject().getPlayedPlayers() > 0) {
-					mvc.showLiveInfo();
-					return;
-				}
-			}
-
-			Stage owner = mvc.getStage();
-			if (padSettingsViewController == null) {
-				padSettingsViewController = new PadSettingsViewController(pad, owner);
-				padSettingsViewController.getStage().setOnHiding(ev ->
-				{
-					if (view != null && pad != null)
-						view.setTriggerLabelActive(pad.hasTriggerItems());
-				});
-			}
-			padSettingsViewController.getStage().show();
-		}
-	}
-
-	@Override
-	public void unconnectPad() {
-		view.getIndexLabel().setText("");
-		view.clearPreviewContent();
-		view.getTimeLabel().setText("");
-
-		view.setTriggerLabelActive(false);
-
-		view.getLoopLabel().visibleProperty().unbind();
-
-		if (pad != null) {
-			pad.contentProperty().removeListener(padContentListener);
-			pad.statusProperty().removeListener(padStatusListener);
-
-			if (pad.getContent() instanceof Durationable) {
-				Durationable durationable = (Durationable) pad.getContent();
-				durationable.durationProperty().removeListener(padDurationListener);
-				durationable.positionProperty().removeListener(padPositionListener);
-			}
-			pad.setController(null);
-			padDragListener = null;
-
-			// GUI Cleaning
-			getPadPositionListener().stopWaning();
-			view.removeStyleClasses(pad);
-		}
-		this.pad = null;
-	}
-
-	@Override
-	public Pad getPad() {
-		return pad;
-	}
-
-	@Override
-	public void setPad(Pad pad) {
-		unconnectPad();
-
-		this.pad = pad;
-
-		view.setPreviewContent(pad);
-		view.addStyleClasses(pad);
-
-		connectPad();
-	}
-
-	@Override
-	public void connectPad() {
-//		pad.setController(this); TODO
-
-		try {
-			// Settings
-			view.getIndexLabel().setText(String.valueOf(pad.getIndexReadable()));
-			view.getLoopLabel().visibleProperty().bind(pad.loopProperty());
-
-			view.setTriggerLabelActive(pad.hasTriggerItems());
-
-			// Update Listener
-			padContentListener.setPad(pad);
-			padPositionListener.setPad(pad);
-
-			// Pad Content Chnage
-			pad.contentProperty().addListener(padContentListener);
-			// Pad Status Change
-			pad.statusProperty().addListener(padStatusListener);
-
-			// First Listener call with new data
-			padContentListener.changed(null, null, pad.getContent()); // Add Duration listener
-			padStatusListener.changed(null, null, pad.getStatus());
-
-//			padDragListener = new PadDragListener(pad, view); TODO
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void updateTimeLabel() {
-		if (pad.getContent() != null && pad.getStatus() != PadStatus.EMPTY && pad.getStatus() != PadStatus.ERROR) {
-			if (pad.getContent() instanceof Durationable) {
-				Durationable durationable = (Durationable) pad.getContent();
-
-				Duration duration = durationable.getDuration();
-				Duration position = durationable.getPosition();
-
-				if (duration != null) {
-					// Nur Gesamtzeit anzeigen
-					if (pad.getStatus() == PadStatus.READY || position == null) {
-						String time = durationToString(duration);
-						view.getTimeLabel().setText(time);
-						view.getPlayBar().setProgress(0);
-					} else {
-						// Play/Gesamtzeit anzeigen
-						TimeMode timeMode = pad.getTimeMode();
-
-						if (timeMode == TimeMode.REST) {
-							Duration leftTime = duration.subtract(position);
-
-							view.getTimeLabel().setText("- " + durationToString(leftTime));
-						} else if (timeMode == TimeMode.PLAYED) {
-							view.getTimeLabel().setText(durationToString(position));
-						} else if (timeMode == TimeMode.BOTH) {
-							String time = durationToString(position);
-							String totalTime = durationToString(duration);
-
-							view.getTimeLabel().setText(time + "/" + totalTime);
-						}
-					}
-				}
-				return;
-			}
-		}
-		view.getPlayBar().setProgress(0);
-		view.getTimeLabel().setText("");
-	}
-
-	public String durationToString(Duration value) {
-		if (value != null) {
-			int secounds = (int) ((value.toMillis() / 1000) % 60);
-			int minutes = (int) ((value.toMillis() / (1000 * 60)) % 60);
-			String time = String.format(DURATION_FORMAT, minutes, secounds);
-			return time;
-		} else {
-			return null;
-		}
-	}
-
-	public void updateButtonDisable() {
-		if (pad == null) {
-			return;
-		}
-		if (pad.getContent() != null) {
-			if (pad.getStatus() == PadStatus.PLAY) {
-				view.getPlayButton().setDisable(true);
-				view.getPauseButton().setDisable(false);
-				view.getStopButton().setDisable(false);
-				view.getNewButton().setDisable(true);
-				view.getSettingsButton().setDisable(false);
-			} else if (pad.getStatus() == PadStatus.PAUSE) {
-				view.getPlayButton().setDisable(false);
-				view.getPauseButton().setDisable(true);
-				view.getStopButton().setDisable(false);
-				view.getNewButton().setDisable(true);
-				view.getSettingsButton().setDisable(false);
-			} else if (pad.getStatus() == PadStatus.STOP) {
-				view.getPlayButton().setDisable(false);
-				view.getPauseButton().setDisable(true);
-				view.getStopButton().setDisable(true);
-				view.getNewButton().setDisable(true);
-				view.getSettingsButton().setDisable(false);
-			} else if (pad.getStatus() == PadStatus.READY) {
-				view.getPlayButton().setDisable(false);
-				view.getPauseButton().setDisable(true);
-				view.getStopButton().setDisable(true);
-				view.getNewButton().setDisable(false);
-				view.getSettingsButton().setDisable(false);
-			} else if (pad.getStatus() == PadStatus.ERROR) {
-				view.getPlayButton().setDisable(true);
-				view.getPauseButton().setDisable(true);
-				view.getStopButton().setDisable(true);
-				view.getNewButton().setDisable(false);
-				view.getSettingsButton().setDisable(false);
-			}
-		} else if (pad.getStatus() == PadStatus.EMPTY || pad.getStatus() == PadStatus.ERROR || pad.getContent() == null
-				|| !pad.getContent().isPadLoaded()) {
-			view.getPlayButton().setDisable(true);
-			view.getPauseButton().setDisable(true);
-			view.getStopButton().setDisable(true);
-			view.getNewButton().setDisable(false);
-			view.getSettingsButton().setDisable(false);
-		}
-
-		if (Profile.currentProfile().getProfileSettings().isLocked()) {
-			view.getNewButton().setDisable(true);
-			view.getSettingsButton().setDisable(true);
-		}
-	}
-
-	@Override
-	public void showDnDLayout(boolean b) {
-		view.pseudoClassState(PseudoClasses.DRAG_CLASS, b);
-	}
-
-	// getter for listener
-	public PadDurationListener getPadDurationListener() {
-		return padDurationListener;
-	}
-
-	public PadStatusListener getPadStatusListener() {
-		return padStatusListener;
-	}
-
-	public IPadPositionListener getPadPositionListener() {
-		return padPositionListener;
-	}
-
-	public PadDragListener getPadDragListener() {
-		return padDragListener;
-	}
-}
diff --git a/PlayWallCore/src/de/tobias/playpad/pad/view/IPadView.java b/PlayWallCore/src/de/tobias/playpad/pad/view/IPadView.java
index 67c3ce99cb1b6a3956df92cea0d6a50783f68d39..c62d67a1a6e992b811fb7960695ef5e667ad8321 100644
--- a/PlayWallCore/src/de/tobias/playpad/pad/view/IPadView.java
+++ b/PlayWallCore/src/de/tobias/playpad/pad/view/IPadView.java
@@ -38,7 +38,7 @@ public interface IPadView {
 	public IPadViewController getViewController();
 
 	/**
-	 * Gibt das oberste GUI Element zurück, welche im MainView verwendet wird.
+	 * Gibt das oberste GUI Element des Pads zurück, welche im MainView verwendet wird.
 	 * 
 	 * @return root node
 	 */