diff --git a/org.fortiss.tooling.base.ui/trunk/plugin.xml b/org.fortiss.tooling.base.ui/trunk/plugin.xml index 479642b342548c3e6e6d950b3824e07e6ad31342..3b5fc75f46c4446f8033f8599f95e4538177f405 100644 --- a/org.fortiss.tooling.base.ui/trunk/plugin.xml +++ b/org.fortiss.tooling.base.ui/trunk/plugin.xml @@ -21,4 +21,13 @@ </view> </extension> + <!--extension point="org.fortiss.tooling.kernel.migrationProvider"> + <migrationProvider + migrationProvider="org.fortiss.tooling.base.ui.annotation.AnnotationInstantiationMigrationProvider"> + <objectClass + objectClass="org.fortiss.tooling.kernel.extension.data.ITopLevelElement"> + </objectClass> + </migrationProvider> + </extension--> + </plugin> diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/view/AnnotationViewPartBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/view/AnnotationViewPartBase.java index c57eee9bc8b1920e31a323486e637cf460f88980..0464241c8c57ccc4480f8e987227bc6ec6c4a059 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/view/AnnotationViewPartBase.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/annotation/view/AnnotationViewPartBase.java @@ -74,6 +74,9 @@ public abstract class AnnotationViewPartBase extends ViewPart implements ISelect private Map<EObject, Collection<AnnotationEntry>> lastAnnotationEntriesMap = new HashMap<EObject, Collection<AnnotationEntry>>(); + /** Flag to prevent nested calls of {@link #selectionChanged(IWorkbenchPart, ISelection)}. */ + private boolean processingSectionChanged = false; + /** * {@link Adapter} to watch for the addition, removal or value change of model elements * to/from/in elements visible in this {@link AnnotationViewPartBase} (to trigger according @@ -137,6 +140,11 @@ public abstract class AnnotationViewPartBase extends ViewPart implements ISelect /** {@inheritDoc} */ @Override public void selectionChanged(IWorkbenchPart part, ISelection selection) { + if(processingSectionChanged) { + return; + } + processingSectionChanged = true; + currentlySelectedObject = null; currentlySelectedObject = SelectionUtils.checkAndPickFirst(selection, IModelElement.class); @@ -149,14 +157,12 @@ public abstract class AnnotationViewPartBase extends ViewPart implements ISelect } // Optimization: Do nothing if the same object as been selected again - if(currentlySelectedObject == lastSelectedObject) { - return; - } - - if(currentlySelectedObject != null) { + if(currentlySelectedObject != lastSelectedObject && currentlySelectedObject != null) { update(currentlySelectedObject); lastSelectedObject = currentlySelectedObject; } + + processingSectionChanged = false; } /** Determines root element of the given model element. */