diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/.ratings index aed51645e78a81e9c701ee857c0936faa187bbe8..958a4eba48aaa84eeb0d6602f6b74cc9c434e49c 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/.ratings +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/.ratings @@ -1,2 +1,2 @@ ColumnHandle.java 8fc5f04cbb0127e5df8c7a9e3b2620502bf93716 GREEN -GenericAnnotationView.java 0fea0eafedcf1d24ea9faa34d84f3044443f951f YELLOW +GenericAnnotationView.java 3986c6ab6f1b5f9ec04780c3d6256e7c70b91c1d YELLOW diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/GenericAnnotationView.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/GenericAnnotationView.java index 0fea0eafedcf1d24ea9faa34d84f3044443f951f..3986c6ab6f1b5f9ec04780c3d6256e7c70b91c1d 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/GenericAnnotationView.java +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/GenericAnnotationView.java @@ -17,7 +17,6 @@ package org.fortiss.tooling.base.ui.annotation.view.generic; import static org.fortiss.tooling.base.ui.annotation.editingsupport.EditingSupportFactory.createEditingSupport; import static org.fortiss.tooling.base.ui.annotation.labelprovider.LabelProviderFactory.createLabelProvider; -import static org.fortiss.tooling.kernel.utils.HierarchicalNameComparator.compareByNameIdHashCode; import java.lang.reflect.Method; import java.util.Collection; @@ -516,7 +515,7 @@ public class GenericAnnotationView extends AnnotationViewPartBase { ((AnnotationEntry)o2).getModelElement()); } - return compareByNameIdHashCode(o1, o2); + return super.compare(viewer, o1, o2); } }); diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings index c80414eb73c7bb927abeb138568a2ceaf4ede3db..4ed0f41a1e98d0a937b6e4fe5510668e2b71275c 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings @@ -4,7 +4,7 @@ CopyPasteUtils.java bbc5cf9c9dc03ebf8dc75d42c919fe6eb60b388e GREEN DataBindingUtils.java 6ae66457694227b69c13c092ef62babdd4a2a137 GREEN DragAndDropUtils.java 7aab91518aa12d76533a345bf6ed0be9ac7ff0e5 GREEN EObjectSelectionUtils.java 128cf8f96c6b9478171dff3deda662d5934f5f44 GREEN -HierarchicalNameViewerComparator.java f9a2a8add3ea2bedfa40bcde25b35389cb2dd005 YELLOW +HierarchicalNameViewerComparator.java 199d82e392d4e437810cc65c0fc521dab52038e0 YELLOW KernelUIUtils.java 46d3279ef3523b104f89a6c526109f72d36f72f2 GREEN ObservableUtils.java 34abfd1dfaf9c0acbb31caf1f525e7b39416c116 GREEN PropertiesConstantUtils.java 59b1a1e4d594bb98db3aa396f2ff6474ba405920 GREEN diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/HierarchicalNameViewerComparator.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/HierarchicalNameViewerComparator.java index f9a2a8add3ea2bedfa40bcde25b35389cb2dd005..199d82e392d4e437810cc65c0fc521dab52038e0 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/HierarchicalNameViewerComparator.java +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/HierarchicalNameViewerComparator.java @@ -15,8 +15,6 @@ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.ui.util; -import static org.fortiss.tooling.kernel.utils.HierarchicalNameComparator.compareByNameIdHashCode; - import java.util.Comparator; import org.eclipse.emf.ecore.EObject; @@ -38,10 +36,6 @@ public class HierarchicalNameViewerComparator extends ViewerComparator { /** {@inheritDoc} */ @Override public int compare(Viewer viewer, Object o1, Object o2) { - if(o1 instanceof EObject && o2 instanceof EObject) { - return comp.compare((EObject)o1, (EObject)o2); - } - - return compareByNameIdHashCode(o1, o2); + return comp.compare(o1, o2); } } diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/.ratings b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/.ratings index 7990a229929d23267812a244de3c20aa4bb35284..e6a5f6bf92df4c26787a43b17ae64bc8f90f58d1 100644 --- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/.ratings +++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/.ratings @@ -4,7 +4,7 @@ EMFResourceUtils.java 979d0e1f4f66a2b3e715d2da0ebef6493f547fd7 GREEN EcoreSerializerBase.java 0a0c2969d793d2e68094c55c8f7b0a662ef6e5d5 GREEN EcoreUtils.java ffb428de083b536cd06e875e75484706f2149c2a GREEN ExtensionPointUtils.java 7ce63242b49eb9a7cd4eaadd223f5ebce1dfd75b GREEN -HierarchicalNameComparator.java 7bd2d55a57374134ba210852ff94956886947a32 GREEN +HierarchicalNameComparator.java 6face1b673126701a0721af48ead2f9766c17d46 YELLOW IdentifierUtils.java fff43dc4e84cdd89c3ece4f5d9d89aec4b0749c2 GREEN JavaUtils.java 65cdadfb9137a240ad59992eacf53a15b7f20804 GREEN KernelModelElementUtils.java a7fa0e2596e06195634e3163b23fa376b2420920 GREEN diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/HierarchicalNameComparator.java b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/HierarchicalNameComparator.java index 7bd2d55a57374134ba210852ff94956886947a32..6face1b673126701a0721af48ead2f9766c17d46 100644 --- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/HierarchicalNameComparator.java +++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/HierarchicalNameComparator.java @@ -23,12 +23,13 @@ import org.fortiss.tooling.kernel.model.IIdLabeled; import org.fortiss.tooling.kernel.model.INamedElement; /** - * Comparator whose {@link #compare(EObject, EObject)} method sorts {@link EObject} model elements - * according to hierarchy level. Elements within one hierarchy level are sorted by name. + * Comparator whose {@link #compare(Object, Object)} method sorts model elements + * according to hierarchy level (in case they are {@link EObject}s. Elements within one hierarchy + * level (or non-{@link EObject}s) are sorted by name, ID, and hash code. * * @author eder, diewald, barner */ -public class HierarchicalNameComparator implements java.util.Comparator<EObject> { +public class HierarchicalNameComparator implements java.util.Comparator<Object> { /** * Compare two {@link Object}s by @@ -38,7 +39,7 @@ public class HierarchicalNameComparator implements java.util.Comparator<EObject> * <li>Hash code (otherwise)</li> * </ul> */ - public static int compareByNameIdHashCode(Object o1, Object o2) { + private int compareByNameIdHashCode(Object o1, Object o2) { // Compare elements by name if they are INamedElements if(o1 instanceof INamedElement && o2 instanceof INamedElement) { // Elements are at the same level -> compare by name @@ -65,14 +66,20 @@ public class HierarchicalNameComparator implements java.util.Comparator<EObject> /** {@inheritDoc} */ @Override - public int compare(EObject modelElement1, EObject modelElement2) { + public int compare(Object o1, Object o2) { - int modelElement1Level = getModelElementLevel(modelElement1); - int modelElement2Level = getModelElementLevel(modelElement2); + if(!(o1 instanceof EObject) || !(o2 instanceof EObject)) { + return compareByNameIdHashCode(o1, o2); + } + EObject modelElement1 = (EObject)o1; + EObject modelElement2 = (EObject)o2; EObject e1 = modelElement1; EObject e2 = modelElement2; + int modelElement1Level = getModelElementLevel(modelElement1); + int modelElement2Level = getModelElementLevel(modelElement2); + if(modelElement1Level < modelElement2Level) { // Element1 is higher than element2: Get ancestor of element2 that is at the // level as the element1.