From 2cc7e80e921a095d02689f8bf46522ca6b7b2ae4 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 1 Mar 2020 17:07:23 +0100
Subject: [PATCH] Fixed #158 - menu shows option to view desktop mode even if
 touch mode is not active

---
 .../main/java/de/tobias/playpad/Strings.java  |  4 --
 .../DesktopMenuToolbarViewController.java     | 40 ++++++++++++-------
 .../touch/TouchMenuToolbarViewController.java |  4 ++
 .../main/MainViewController.java              |  1 +
 .../main/MenuToolbarViewController.java       |  2 +
 5 files changed, 32 insertions(+), 19 deletions(-)

diff --git a/PlayWall/src/main/java/de/tobias/playpad/Strings.java b/PlayWall/src/main/java/de/tobias/playpad/Strings.java
index b0dd8185..b28adcf2 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/Strings.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/Strings.java
@@ -232,10 +232,6 @@ public class Strings {
 	// TriggerPoint - Enum
 	public static final String TRIGGER_POINT = "TriggerPoint.";
 
-	// Main Layout
-	public static final String MAIN_LAYOUT_DESKTOP = "MainLayout.Desktop";
-	public static final String MAIN_LAYOUT_TOUCH = "MainLayout.Touch";
-
 	// Search
 	public static final String SEARCH_BUTTON = "Search.Button";
 	public static final String SEARCH_PLACEHOLDER = "Search.Placeholder";
diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
index 6c5477e3..fc6d030e 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java
@@ -82,6 +82,8 @@ import java.util.Optional;
 public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewController
 		implements EventHandler<ActionEvent>, ChangeListener<DesktopEditMode> {
 
+	private static final String LAYOUT_MENU_ITEM_IDENTIFIER = "layout-menu-item";
+
 	@FXML
 	private MenuBar menuBar;
 
@@ -230,6 +232,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 	// Desktop Edit Mode Change Listener --> Update Button
 	@Override
 	public void changed(ObservableValue<? extends DesktopEditMode> observable, DesktopEditMode oldValue, DesktopEditMode newValue) {
+
 		// handle old mode
 		if (oldValue == DesktopEditMode.DRAG) {
 			for (IPadView view : mainViewController.getPadViews()) {
@@ -291,30 +294,37 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro
 		mainViewController.getPadViews().forEach(i -> i.getViewController().updateButtonDisable());
 	}
 
-	private void initLayoutMenu() {
+	@Override
+	public void initLayoutMenu() {
 		ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings();
 		Registry<MainLayoutFactory> mainLayouts = PlayPadPlugin.getRegistries().getMainLayouts();
 
+		layoutMenu.getItems().removeIf(item -> LAYOUT_MENU_ITEM_IDENTIFIER.equals(item.getUserData()));
+
 		int index = 1; // Für Tastenkombination
 		for (MainLayoutFactory connect : mainLayouts.getComponents()) {
-			if (!connect.getType().equals(profileSettings.getMainLayoutType())) {
-				MenuItem item = new MenuItem(connect.toString());
+			if(connect.getType().equals(profileSettings.getMainLayoutType()))
+			{
+				continue;
+			}
 
-				item.setOnAction(e ->
-				{
-					mainViewController.setMainLayout(connect);
-					Profile.currentProfile().getProfileSettings().setMainLayoutType(connect.getType());
-				});
+			MenuItem item = new MenuItem(connect.toString());
+			item.setUserData(LAYOUT_MENU_ITEM_IDENTIFIER);
 
-				// Key Combi
-				if (index < 10) {
-					item.setAccelerator(KeyCombination.keyCombination("Shortcut+" + index));
-				}
+			item.setOnAction(e ->
+			{
+				mainViewController.setMainLayout(connect);
+				Profile.currentProfile().getProfileSettings().setMainLayoutType(connect.getType());
+			});
 
-				layoutMenu.getItems().add(item);
-				index++;
+			// Key combination
+			if (index < 10) {
+				item.setAccelerator(KeyCombination.keyCombination("Shortcut+" + index));
 			}
-		}
+
+			layoutMenu.getItems().add(item);
+			index++;
+	}
 	}
 
 	@Override
diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
index 0ebc97bc..51f0e319 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/layout/touch/TouchMenuToolbarViewController.java
@@ -156,4 +156,8 @@ public class TouchMenuToolbarViewController extends BasicMenuToolbarViewControll
 		}
 	}
 
+	@Override
+	public void initLayoutMenu()
+	{
+	}
 }
\ No newline at end of file
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java
index bfe085df..408749b0 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/main/MainViewController.java
@@ -591,6 +591,7 @@ public class MainViewController extends NVC implements IMainViewController, Noti
 
 		this.mainLayout = mainLayoutConnect;
 		initMainLayout();
+		this.menuToolbarViewController.initLayoutMenu();
 	}
 
 	/*
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java b/PlayWallCore/src/main/java/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java
index bc6a2257..a72fc0d3 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/viewcontroller/main/MenuToolbarViewController.java
@@ -164,4 +164,6 @@ public abstract class MenuToolbarViewController extends NVC {
 	 * @param project neues Project
 	 */
 	public abstract void setOpenProject(Project project);
+
+	public abstract void initLayoutMenu();
 }
-- 
GitLab