diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/.ratings deleted file mode 100644 index c969d7cd1c462a1b15897d17310671db6b901d76..0000000000000000000000000000000000000000 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/.ratings +++ /dev/null @@ -1 +0,0 @@ -HierarchicalNameComparator.java 479dc1a3da772e551d15cbfb0d820cce87c15d63 GREEN diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/editingsupport/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/editingsupport/.ratings index e5c97907068166006f8dc4832dd66da515d2f9ec..4fba611b176d76304063c3b1ec52b166d6647087 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/editingsupport/.ratings +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/editingsupport/.ratings @@ -5,7 +5,7 @@ EditingSupportFactory.java 03123559abc2952e417e6180b9364c2f5ecff4a3 GREEN ElementCommentEditingSupport.java 4be366924a040caf3f80e35b383e796e84aedcac GREEN ElementEditingSupportBase.java a6360f99ee149276f0fbd299820ebd1c9731ea97 GREEN ElementNameEditingSupport.java 0dcaecf4ba5f8ddefa3ccb7d6f4e4506f7f09b26 GREEN -LabelValueMapping.java 54bf09ebd23039827a72dfbe9edb3d117f2db607 GREEN +LabelValueMapping.java 51fa603929b0e89f5fb2d757761746bd773ba371 GREEN MultiSelectionCellEditor.java cac4a63137203ea90777b8ff971c945a457165c2 GREEN MultiSelectionEditingSupport.java c9d45d09c2d64518d58e6e62254804608638a0ed GREEN TextEditingSupport.java e761ea393816f23ca41157f2a9a9a8d8ef30b858 GREEN diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/editingsupport/LabelValueMapping.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/editingsupport/LabelValueMapping.java index 54bf09ebd23039827a72dfbe9edb3d117f2db607..51fa603929b0e89f5fb2d757761746bd773ba371 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/editingsupport/LabelValueMapping.java +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/editingsupport/LabelValueMapping.java @@ -38,10 +38,10 @@ import org.eclipse.emf.ecore.EReference; import org.fortiss.tooling.base.annotation.valueprovider.EStructuralFeatureDescriptor; import org.fortiss.tooling.base.annotation.valueprovider.EStructuralFeatureDescriptor.EReferenceScope; import org.fortiss.tooling.base.model.element.IAnnotatedSpecification; -import org.fortiss.tooling.base.ui.annotation.HierarchicalNameComparator; import org.fortiss.tooling.kernel.model.IIdLabeled; import org.fortiss.tooling.kernel.model.INamedElement; import org.fortiss.tooling.kernel.model.IProjectRootElement; +import org.fortiss.tooling.kernel.utils.HierarchicalNameComparator; /** * Translates between the labels shown in a GUI and actual model elements (=values) (e.g., 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 98070c39677f919f1b21a5883f57ff182456121b..6903af7740d23ce32bb1b4980a4279fd76fd9120 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,3 +1,2 @@ ColumnHandle.java 8fc5f04cbb0127e5df8c7a9e3b2620502bf93716 GREEN -GenericAnnotationView.java 9ece325e33056bc866aa842a7be5e0be3db84fe0 GREEN -HierarchicalNameViewerComparator.java 393f888a671d788c05650d17c937b76dda8a0f43 GREEN +GenericAnnotationView.java 3986c6ab6f1b5f9ec04780c3d6256e7c70b91c1d GREEN 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 9ece325e33056bc866aa842a7be5e0be3db84fe0..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 @@ -41,6 +41,7 @@ import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; +import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.jface.window.ToolTip; import org.eclipse.swt.SWT; @@ -81,6 +82,7 @@ import org.fortiss.tooling.base.ui.annotation.view.generic.filter.AnnotationFilt import org.fortiss.tooling.base.ui.dialog.MultiFieldInputDialog; import org.fortiss.tooling.kernel.extension.data.ITopLevelElement; import org.fortiss.tooling.kernel.service.IPersistencyService; +import org.fortiss.tooling.kernel.ui.util.HierarchicalNameViewerComparator; /** * <p> @@ -504,7 +506,18 @@ public class GenericAnnotationView extends AnnotationViewPartBase { fixedColumnCount = createFixedModelElementColumns(); columnWidthCache = new HashMap<String, Integer>(); - tableViewer.setComparator(new HierarchicalNameViewerComparator()); + tableViewer.setComparator(new HierarchicalNameViewerComparator() { + /** {@inheritDoc} */ + @Override + public int compare(Viewer viewer, Object o1, Object o2) { + if(o1 instanceof AnnotationEntry && o2 instanceof AnnotationEntry) { + return super.compare(viewer, ((AnnotationEntry)o1).getModelElement(), + ((AnnotationEntry)o2).getModelElement()); + } + + return super.compare(viewer, o1, o2); + } + }); tableViewer.setComparer(new IElementComparer() { diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/javafx/control/contentprovider/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/javafx/control/contentprovider/.ratings index eee9e02379f94968aa62e00eee5264a805c3d441..815101acd90b0f1dcac8a681cecf7b2575f1ff75 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/javafx/control/contentprovider/.ratings +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/javafx/control/contentprovider/.ratings @@ -1,2 +1,2 @@ ChildrenContentProvider.java d5aa8d8d16f453be39d97a7ba2e1955e3e1582a0 GREEN -SameTypeContentProvider.java dc923f33aaf70b1f833d388837536e9e303d55c1 GREEN +SameTypeContentProvider.java 67d62fa5cb568e396062025baab7bf34c2c35a45 GREEN diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/javafx/control/contentprovider/SameTypeContentProvider.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/javafx/control/contentprovider/SameTypeContentProvider.java index dc923f33aaf70b1f833d388837536e9e303d55c1..67d62fa5cb568e396062025baab7bf34c2c35a45 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/javafx/control/contentprovider/SameTypeContentProvider.java +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/javafx/control/contentprovider/SameTypeContentProvider.java @@ -36,11 +36,11 @@ public class SameTypeContentProvider<T extends IHierarchicElement & INamedElemen extends DynamicTreeContentProviderBase<T> { /** EObject type to check against. */ - EClass type; + private EClass eClass; /** Constructor. */ - public SameTypeContentProvider(EClass type) { - this.type = type; + public SameTypeContentProvider(EClass eClass) { + this.eClass = eClass; } /** {@inheritDoc} */ @@ -51,7 +51,7 @@ public class SameTypeContentProvider<T extends IHierarchicElement & INamedElemen // @CodeFormatterOff Collection<? extends T> children = (Collection<? extends T>) filterStream(current.getContainedElements(), e -> e instanceof INamedElement) - .filter(e -> (e.getClass().equals(type)) || (type.isInstance(e))) + .filter(e -> eClass.isInstance(e)) .collect(Collectors.toList()); // @CodeFormatterOn return children; 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 7b9ae0f733b8263437cd031ac20200b4b41bceec..33be2d7a21a1c9fc530116dd7becaa0f28b84380 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,6 +4,7 @@ CopyPasteUtils.java bbc5cf9c9dc03ebf8dc75d42c919fe6eb60b388e GREEN DataBindingUtils.java 6ae66457694227b69c13c092ef62babdd4a2a137 GREEN DragAndDropUtils.java 7aab91518aa12d76533a345bf6ed0be9ac7ff0e5 GREEN EObjectSelectionUtils.java 128cf8f96c6b9478171dff3deda662d5934f5f44 GREEN +HierarchicalNameViewerComparator.java 199d82e392d4e437810cc65c0fc521dab52038e0 GREEN KernelUIUtils.java 46d3279ef3523b104f89a6c526109f72d36f72f2 GREEN ObservableUtils.java 34abfd1dfaf9c0acbb31caf1f525e7b39416c116 GREEN PropertiesConstantUtils.java 59b1a1e4d594bb98db3aa396f2ff6474ba405920 GREEN diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/HierarchicalNameViewerComparator.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/HierarchicalNameViewerComparator.java similarity index 71% rename from org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/HierarchicalNameViewerComparator.java rename to org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/HierarchicalNameViewerComparator.java index 393f888a671d788c05650d17c937b76dda8a0f43..199d82e392d4e437810cc65c0fc521dab52038e0 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/view/generic/HierarchicalNameViewerComparator.java +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/HierarchicalNameViewerComparator.java @@ -13,20 +13,18 @@ | See the License for the specific language governing permissions and | | limitations under the License. | +--------------------------------------------------------------------------*/ -package org.fortiss.tooling.base.ui.annotation.view.generic; - -import static org.fortiss.tooling.base.ui.annotation.HierarchicalNameComparator.compareByNameIdHashCode; +package org.fortiss.tooling.kernel.ui.util; import java.util.Comparator; +import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; -import org.fortiss.tooling.base.annotation.AnnotationEntry; -import org.fortiss.tooling.base.ui.annotation.HierarchicalNameComparator; +import org.fortiss.tooling.kernel.utils.HierarchicalNameComparator; /** - * {@link ViewerComparator} that sorts rows according to hierarchy level. Elements within one - * hierarchy level are sorted by name. + * {@link ViewerComparator} whose {@link #compare(Viewer, Object, Object)} method sorts + * {@link EObject} model elements by wrapping {@link HierarchicalNameComparator}). * * @author barner */ @@ -38,11 +36,6 @@ public class HierarchicalNameViewerComparator extends ViewerComparator { /** {@inheritDoc} */ @Override public int compare(Viewer viewer, Object o1, Object o2) { - if(o1 instanceof AnnotationEntry && o2 instanceof AnnotationEntry) { - return comp.compare(((AnnotationEntry)o1).getModelElement(), - ((AnnotationEntry)o2).getModelElement()); - } - - 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 cf66d0bab651e33630ac54a296b13adb69e3cdc3..961ee852ef0cc60d17d8d47b0d1f73a1e5f2fb33 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,9 +4,10 @@ EMFResourceUtils.java 979d0e1f4f66a2b3e715d2da0ebef6493f547fd7 GREEN EcoreSerializerBase.java 0a0c2969d793d2e68094c55c8f7b0a662ef6e5d5 GREEN EcoreUtils.java ffb428de083b536cd06e875e75484706f2149c2a GREEN ExtensionPointUtils.java 7ce63242b49eb9a7cd4eaadd223f5ebce1dfd75b GREEN +HierarchicalNameComparator.java 6face1b673126701a0721af48ead2f9766c17d46 GREEN IdentifierUtils.java fff43dc4e84cdd89c3ece4f5d9d89aec4b0749c2 GREEN JavaUtils.java 65cdadfb9137a240ad59992eacf53a15b7f20804 GREEN -KernelModelElementUtils.java a7fa0e2596e06195634e3163b23fa376b2420920 GREEN +KernelModelElementUtils.java 56c86fe9afb23053f50d7279809afd2a5bb10eba GREEN LoggingUtils.java a982f7c3371e72feb8658510b5b0358876281a12 GREEN PrototypesUtils.java ec75bed75cfc5103f1f38e3a29df86f729428775 GREEN ResourceUtils.java 698c7db34acb4f1a258a1953e6afcca9823763a8 GREEN diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/HierarchicalNameComparator.java b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/HierarchicalNameComparator.java similarity index 86% rename from org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/HierarchicalNameComparator.java rename to org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/HierarchicalNameComparator.java index 479dc1a3da772e551d15cbfb0d820cce87c15d63..6face1b673126701a0721af48ead2f9766c17d46 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/HierarchicalNameComparator.java +++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/HierarchicalNameComparator.java @@ -13,7 +13,7 @@ | See the License for the specific language governing permissions and | | limitations under the License. | +--------------------------------------------------------------------------*/ -package org.fortiss.tooling.base.ui.annotation; +package org.fortiss.tooling.kernel.utils; import static org.fortiss.tooling.kernel.utils.EcoreUtils.getModelElementAncestor; import static org.fortiss.tooling.kernel.utils.EcoreUtils.getModelElementLevel; @@ -23,12 +23,13 @@ import org.fortiss.tooling.kernel.model.IIdLabeled; import org.fortiss.tooling.kernel.model.INamedElement; /** - * Comparator that sorts rows 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. diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/KernelModelElementUtils.java b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/KernelModelElementUtils.java index a7fa0e2596e06195634e3163b23fa376b2420920..56c86fe9afb23053f50d7279809afd2a5bb10eba 100644 --- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/KernelModelElementUtils.java +++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/KernelModelElementUtils.java @@ -150,8 +150,8 @@ public final class KernelModelElementUtils { while(currentElement != null && !(currentElement instanceof IProjectRootElement)) { if(targetClass.isAssignableFrom(currentElement.getClass())) { retList.add((T)currentElement); - currentElement = currentElement.eContainer(); } + currentElement = currentElement.eContainer(); } return retList; }