From 5ad6a3d3d0216cdfe08eb0602ed45e88f4f6cb76 Mon Sep 17 00:00:00 2001
From: Simon Barner <barner@fortiss.org>
Date: Tue, 21 Sep 2021 11:08:45 +0200
Subject: [PATCH] Retrieve both specification and model element for the edited
 row entry

* Fixes a bug for DerivedAnnotations that return different EENums
  depending on the edited model element

Issue-Ref: 4092
Issue-Url: https://git.fortiss.org/af3/af3/-/issues/4092

Signed-off-by: Simon Barner <barner@fortiss.org>
---
 .../tooling/base/ui/annotation/view/fx/.ratings       |  2 +-
 .../view/fx/AnnotationViewFXController.java           | 11 +++++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/fx/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/fx/.ratings
index be6692896..a0bc51a56 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/fx/.ratings
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/fx/.ratings
@@ -1,6 +1,6 @@
 AnnotationFxViewPart.java ca1548c49aa3842a9436262531464ba345b83688 GREEN
 AnnotationTreeTableUIProvider.java 9efdeb7261cafe9dfe763daf20af186c906c3ec3 YELLOW
-AnnotationViewFXController.java c2b3e6a1cbffae55b88bff93418fa5797585d75d YELLOW
+AnnotationViewFXController.java 7017eb40e9511b6bdc40fcc5a95fd9f79247dfee YELLOW
 AnnotationsFXUtils.java e180d593b69b1e4b90adf83ba47753b29f9d6ff8 YELLOW
 ColumnHandle.java 7b0fe536d4eb9faa63c4d812f0c078cf83d0fd42 GREEN
 FXAnnotationFilterContentProvider.java ca4587ef5dce1288ee4d7bf3bea5bd544ce6b89e GREEN
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/fx/AnnotationViewFXController.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/fx/AnnotationViewFXController.java
index c2b3e6a1c..7017eb40e 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/fx/AnnotationViewFXController.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/fx/AnnotationViewFXController.java
@@ -25,6 +25,7 @@ import static org.fortiss.tooling.base.ui.annotation.view.fx.FXAnnotationFilterC
 import static org.fortiss.tooling.kernel.ui.util.SelectionUtils.checkAndPickFirst;
 import static org.fortiss.tooling.kernel.utils.EcoreUtils.getChildrenWithType;
 import static org.fortiss.tooling.kernel.utils.EcoreUtils.getFirstParentWithType;
+import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickFirstInstanceOf;
 import static org.fortiss.tooling.kernel.utils.LoggingUtils.showWarning;
 
 import java.util.ArrayList;
@@ -425,10 +426,16 @@ public class AnnotationViewFXController extends CompositeFXControllerBase<SplitP
 		if(valueType instanceof EEnum || valueType instanceof EClass) {
 			// Add a combo column for enumerations and references
 			column = annotationViewer.addComboColumn(columnName, 150, rowEntry -> {
-				Map<Object, String> comboValues = getComboValues(featureDescriptor, specification,
-						rowEntry.getModelElement());
+				// We must retrieve the specification and model element for the edited row entry
+				IAnnotatedSpecification entrySpec =
+						pickFirstInstanceOf(annotationType, rowEntry.getSpecificationsList());
+				IModelElement entryElement = rowEntry.getModelElement();
+
+				Map<Object, String> comboValues =
+						getComboValues(featureDescriptor, entrySpec, entryElement);
 				return comboValues;
 			});
+
 		} else if(valueType.getInstanceClass().equals(Boolean.class)) {
 			// Use a checkbox column for booleans
 			column = annotationViewer.addCheckboxColumn(columnName, 100);
-- 
GitLab