From 5dc22e884fa4f9380721b1d43336485738a802f5 Mon Sep 17 00:00:00 2001
From: Tiziano Munaro <munaro@fortiss.org>
Date: Wed, 9 Sep 2020 17:36:34 +0200
Subject: [PATCH] Use the ModelEditorNotAvaiableBinding to denote extensions of
 FX editors

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

Signed-off-by: Tiziano Munaro <munaro@fortiss.org>
---
 .../org/fortiss/tooling/kernel/ui/extension/.ratings |  2 +-
 .../ui/extension/ModelEditorNotAvailableBinding.java |  2 +-
 .../org/fortiss/tooling/kernel/ui/internal/.ratings  |  4 ++--
 .../ui/internal/ModelEditorBindingService.java       | 12 ++++++------
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/.ratings
index e039d39f8..006af6d09 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/.ratings
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/.ratings
@@ -8,4 +8,4 @@ IModelElementHandler.java 86a8ec88b9679bbe7f53cfa8d1592bd862873f80 GREEN
 ITutorialStepUI.java b8aee2b95857484ab6ad9ecd55b5de9f0ea158e5 GREEN
 ITutorialUIProvider.java aa0ff5db4d7ba0953e34edeb99f3e8279567e18f GREEN
 ITutorialUIWhitelistProvider.java d703c1531c6ae7677c2d94cbc95d498dfa4a7e9b GREEN
-ModelEditorNotAvailableBinding.java aa2a519ff0dcc53985b9759a94adb52f213ecc84 GREEN
+ModelEditorNotAvailableBinding.java ba0ea0fe9004cf16579d053d0ddf7eb3f35ed101 YELLOW
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/ModelEditorNotAvailableBinding.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/ModelEditorNotAvailableBinding.java
index aa2a519ff..ba0ea0fe9 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/ModelEditorNotAvailableBinding.java
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/ModelEditorNotAvailableBinding.java
@@ -24,7 +24,7 @@ import org.fortiss.tooling.kernel.ui.extension.base.ModelEditorBindingBase;
  * 
  * @author barner
  */
-public final class ModelEditorNotAvailableBinding extends ModelEditorBindingBase<EObject> {
+public class ModelEditorNotAvailableBinding<T extends EObject> extends ModelEditorBindingBase<T> {
 	// Nothing to do: The type ModelEditorNotAvailableBinding is used in ModelEditorBindingService
 	// to make a case distinction for model elements without dedicated editors.
 }
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/.ratings
index d42e67884..e55e9668c 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/.ratings
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/.ratings
@@ -3,8 +3,8 @@ AllocationEditPartFactoryService.java 81bd227736013f1157ba9d0f79a9f3deefe10064 G
 ContextMenuService.java ca3c899293f25b70ce8e5f0d86ca2f9683329d81 GREEN
 EditPartFactoryService.java e9180c0020f1769d9e24ef3c08f9ca5599dbc5c3 GREEN
 MarkerService.java 505296c356f8d66c5c009b6d6181a971d02a9501 GREEN
-ModelEditorBindingService.java d980691db4b700714c0669050014d08751354d5e GREEN
-ModelElementHandlerService.java eeb07f6926012aa98256d452d1e554a5486dc657 GREEN
+ModelEditorBindingService.java 4f502438a9fed17a3c8d03a7f11140ad1f10a0a9 YELLOW
+ModelElementHandlerService.java ef618c1c0852c6cb087443fd3d4c74279d8b4c0a GREEN
 NavigatorService.java 1d773dde3791ddf7051616fe249558e7e307757d GREEN
 ToolingKernelUIInternal.java a70d19883dfb315d860233156d8524cf1ac2952f GREEN
 TutorialUIService.java b1d632eca91b4feb583f3930cd6ee4722dd9bfed GREEN
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/ModelEditorBindingService.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/ModelEditorBindingService.java
index d980691db..4f502438a 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/ModelEditorBindingService.java
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/ModelEditorBindingService.java
@@ -155,18 +155,18 @@ public class ModelEditorBindingService extends EObjectAwareServiceBase<IModelEdi
 
 		List<IModelEditorBinding<EObject>> bindings = getBindings(element);
 		int numBindings = bindings.size();
-		// There is exactly one binding that indicates that no editor should be displayed.
-		if(numBindings == 1 && bindings.get(0) instanceof ModelEditorNotAvailableBinding) {
-			return;
-		}
 
-		// Recurse if there is an editor for one the model element's ancestors.
-		if(numBindings == 0) {
+		// Recurse if there is no binding or no editor for the current model element.
+		boolean noEditor =
+				numBindings == 1 && bindings.get(0) instanceof ModelEditorNotAvailableBinding;
+		boolean noBindings = numBindings == 0;
+		if(noBindings || noEditor) {
 			if(element.eContainer() != null) {
 				openInEditor(element.eContainer());
 			}
 			return;
 		}
+
 		try {
 			IWorkbench workbench = PlatformUI.getWorkbench();
 			IWorkbenchPage activePage = workbench.getActiveWorkbenchWindow().getActivePage();
-- 
GitLab