From 184cdc06ac14287f4c13019377348b2ace389748 Mon Sep 17 00:00:00 2001
From: Andreas Bayha <bayha@fortiss.org>
Date: Mon, 19 Oct 2020 14:19:43 +0200
Subject: [PATCH] Annotations: Ordering of entries reflects hierarchy

The AnnotationEntries in the annotations view are ordered according to
hierarchy and after that alphabetically now.

Issue-Ref: 4014
Issue-Url: https://af3-developer.fortiss.org/issues/4014
Signed-off-by: Andreas Bayha <bayha@fortiss.org>
---
 .../src/org/fortiss/tooling/base/annotation/.ratings   |  2 +-
 .../tooling/base/annotation/AnnotationEntry.java       | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/.ratings b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/.ratings
index abca4e511..f164c269a 100644
--- a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/.ratings
+++ b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/.ratings
@@ -1,3 +1,3 @@
-AnnotationEntry.java 50d8790560ed60ba534b9d84a42f985e8f3e92a4 YELLOW
+AnnotationEntry.java 967e6c0eeb47165fcd175c23aa372f0d8385d406 YELLOW
 AnnotationValueService.java 01fc46fb381854b16ce78779217ffc7c29036c14 GREEN
 IAnnotationValueService.java 81ff274a7b2d4c58e7b8485db857eb83f99710d0 GREEN
diff --git a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/AnnotationEntry.java b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/AnnotationEntry.java
index 50d879056..967e6c0ee 100644
--- a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/AnnotationEntry.java
+++ b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/annotation/AnnotationEntry.java
@@ -15,6 +15,8 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.base.annotation;
 
+import static org.fortiss.tooling.kernel.utils.EcoreUtils.getModelElementLevel;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -236,6 +238,14 @@ public class AnnotationEntry implements Comparable<AnnotationEntry> {
 	public int compareTo(AnnotationEntry otherEntry) {
 		IModelElement otherModelElement = otherEntry.getModelElement();
 		IModelElement thisModelElement = this.getModelElement();
+
+		int thisLevel = getModelElementLevel(thisModelElement);
+		int otherLevel = getModelElementLevel(otherModelElement);
+
+		if(thisLevel != otherLevel) {
+			return ((Integer)thisLevel).compareTo(otherLevel);
+		}
+
 		if(thisModelElement instanceof INamedElement &&
 				otherModelElement instanceof INamedElement) {
 			INamedElement thisNamed = (INamedElement)thisModelElement;
-- 
GitLab