From 398f9fb804ad45c9408402882bda6bba7eeec5dd Mon Sep 17 00:00:00 2001
From: Simon Barner <barner@fortiss.org>
Date: Sat, 23 Jan 2021 06:37:46 +0100
Subject: [PATCH] Factorize contextMenuContributions()

Issue-Ref: 4097
Issue-Url: https://af3-developer.fortiss.org/issues/4097

Signed-off-by: Simon Barner <barner@fortiss.org>
---
 .../ui/javafx/lwfxef/controller/base/.ratings |  2 +-
 .../base/DefaultDiagramController.java        | 54 +++++++++++--------
 2 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings
index f4861e4fd..b24623e41 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings
@@ -2,7 +2,7 @@ AnchorageContentControllerBase.java da56b10cbf2711b5da69f0b59f43eacbe54f4eea GRE
 ClickControllerBase.java 8e5861ed5f9318008ad0fdd5497ed320cd5bd647 GREEN
 ContentAnchorageMoveControllerBase.java c18e7915ce23e124757f5b736086ecc46694800a GREEN
 ControllerBase.java 9311521b252e46640e26d409610e527fd5ed6922 GREEN
-DefaultDiagramController.java 0e083b89a08f63967102a384d66ebc1d64d203af GREEN
+DefaultDiagramController.java 2d229228a05a96c54464575643bcb25e2e58efec YELLOW
 DelegatingContentAnchorageController.java 1889628a346a2183082ffe213978f9d15a949494 GREEN
 DragControllerBase.java b15ff874304f679fe494d85f57cc8cbe4d0d1d15 GREEN
 DraggingUtils.java 95117e2ea4c36b6c6a31f8088bb95b484e0e6612 GREEN
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/DefaultDiagramController.java b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/DefaultDiagramController.java
index 0e083b89a..2d229228a 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/DefaultDiagramController.java
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/DefaultDiagramController.java
@@ -9,7 +9,8 @@
  *******************************************************************************/
 package org.fortiss.tooling.common.ui.javafx.lwfxef.controller.base;
 
-import java.util.LinkedList;
+import static java.util.Arrays.asList;
+
 import java.util.List;
 
 import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramCoordinate;
@@ -37,43 +38,50 @@ public class DefaultDiagramController extends ControllerBase {
 		super(mvcb);
 	}
 
-	/** {@inheritDoc} */
-	@Override
-	public List<MenuItem> contextMenuContributions(Node node, DiagramCoordinate diagramLocation) {
-		Menu menu = new Menu("Display ...");
-		DiagramViewerFeatures features = getViewer().getFeatures();
-		// link highlighting
+	/** Creates the {@link MenuItem} to enable/disable link highlighting. */
+	private MenuItem createLinkHighlightingMenuItem(DiagramViewerFeatures features) {
+		MenuItem linkHighLightingMenuItem;
 		if(features.isLinkHighlightingEnabled()) {
-			MenuItem disableLinkHighlighting = new MenuItem("Disable Link Highlighting");
-			disableLinkHighlighting.setOnAction(evt -> {
+			linkHighLightingMenuItem = new MenuItem("Disable Link Highlighting");
+			linkHighLightingMenuItem.setOnAction(evt -> {
 				features.setLinkHighlightingEnabled(false);
 			});
-			menu.getItems().add(disableLinkHighlighting);
 		} else {
-			MenuItem enableLinkHighlighting = new MenuItem("Enable Link Highlighting");
-			enableLinkHighlighting.setOnAction(evt -> {
+			linkHighLightingMenuItem = new MenuItem("Enable Link Highlighting");
+			linkHighLightingMenuItem.setOnAction(evt -> {
 				features.setLinkHighlightingEnabled(true);
 			});
-			menu.getItems().add(enableLinkHighlighting);
 		}
-		// interaction area shading
+		return linkHighLightingMenuItem;
+	}
+
+	/** Creates a {@link MenuItem} to enable/disable interaction shading. */
+	private MenuItem createInteractionAreaShadingMenuItem(DiagramViewerFeatures features) {
+		MenuItem interactionAreaShadingMenuItem;
 		if(features.isInteractionAreaShadingEnabled()) {
-			MenuItem disableInteractionShading = new MenuItem("Disable Interactive Area Shading");
-			disableInteractionShading.setOnAction(evt -> {
+			interactionAreaShadingMenuItem = new MenuItem("Disable Interactive Area Shading");
+			interactionAreaShadingMenuItem.setOnAction(evt -> {
 				features.setInteractionAreaShadingEnabled(false);
 			});
-			menu.getItems().add(disableInteractionShading);
 		} else {
-			MenuItem enableInteractionShading = new MenuItem("Enable Interactive Area Shading");
-			enableInteractionShading.setOnAction(evt -> {
+			interactionAreaShadingMenuItem = new MenuItem("Enable Interactive Area Shading");
+			interactionAreaShadingMenuItem.setOnAction(evt -> {
 				features.setInteractionAreaShadingEnabled(true);
 			});
-			menu.getItems().add(enableInteractionShading);
 		}
+		return interactionAreaShadingMenuItem;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public List<MenuItem> contextMenuContributions(Node node, DiagramCoordinate diagramLocation) {
+		Menu menu = new Menu("Display ...");
+		DiagramViewerFeatures features = getViewer().getFeatures();
+
+		menu.getItems().add(createLinkHighlightingMenuItem(features));
+		menu.getItems().add(createInteractionAreaShadingMenuItem(features));
 
-		List<MenuItem> menuList = new LinkedList<>();
-		menuList.add(menu);
-		return menuList;
+		return asList(menu);
 	}
 
 	/** {@inheritDoc} */
-- 
GitLab