From becb0a891e38e083671ab2850889118bdabf9a13 Mon Sep 17 00:00:00 2001 From: Florian Hoelzl <hoelzl@fortiss.org> Date: Thu, 3 Mar 2011 10:13:47 +0000 Subject: [PATCH] fixed navigator listening, some rework to clean up --- .../kernel/internal/NavigatorService.java | 15 +++++++++++ .../internal/navigator/NavigatorViewPart.java | 27 +++++++++++++------ .../kernel/services/INavigatorService.java | 7 ++++- 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/NavigatorService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/NavigatorService.java index 2b36fe1d6..8735111d1 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/NavigatorService.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/NavigatorService.java @@ -17,6 +17,8 @@ $Id$ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.internal; +import org.eclipse.ui.part.ViewPart; +import org.fortiss.tooling.kernel.internal.navigator.NavigatorViewPart; import org.fortiss.tooling.kernel.services.INavigatorService; /** @@ -29,4 +31,17 @@ import org.fortiss.tooling.kernel.services.INavigatorService; */ public class NavigatorService implements INavigatorService { + /** Stores the navigator view. */ + private NavigatorViewPart navigatorViewPart; + + /** Sets the navigator view. */ + public void setNavigatorViewPart(NavigatorViewPart part) { + this.navigatorViewPart = part; + } + + /** {@inheritDoc} */ + @Override + public ViewPart getNavigatorView() { + return navigatorViewPart; + } } diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java index 90f8a3293..27cfc1351 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/navigator/NavigatorViewPart.java @@ -46,7 +46,9 @@ import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; import org.eclipse.ui.progress.UIJob; import org.fortiss.tooling.kernel.ToolingKernelActivator; +import org.fortiss.tooling.kernel.internal.NavigatorService; import org.fortiss.tooling.kernel.services.IEditorService; +import org.fortiss.tooling.kernel.services.INavigatorService; import org.fortiss.tooling.kernel.util.EObjectSelectionUtils; import org.unicase.ecp.model.ECPWorkspaceManager; import org.unicase.ecp.model.NoWorkspaceException; @@ -81,6 +83,15 @@ public final class NavigatorViewPart extends ViewPart implements /** Stores the menu manager. */ private MenuManager menuManager; + /** Stores the UI update job. */ + private final UIJob updateUI = new UIJob("Update Model Navigator") { + @Override + public IStatus runInUIThread(IProgressMonitor monitor) { + viewer.refresh(); + return Status.OK_STATUS; + } + }; + /** Constructor. */ public NavigatorViewPart() { try { @@ -98,6 +109,9 @@ public final class NavigatorViewPart extends ViewPart implements createWorkspaceListener(); workspace.eAdapters().add(workspaceListener); + + ((NavigatorService) INavigatorService.INSTANCE) + .setNavigatorViewPart(this); } /** @@ -124,6 +138,7 @@ public final class NavigatorViewPart extends ViewPart implements .getOldValue(); projectSpace.removeECPProjectListener(projectListener); } + updateUI.schedule(); } super.notifyChanged(msg); } @@ -143,14 +158,7 @@ public final class NavigatorViewPart extends ViewPart implements @Override public void projectChanged() { - new UIJob("Update Model Navigator") { - - @Override - public IStatus runInUIThread(IProgressMonitor monitor) { - viewer.refresh(); - return Status.OK_STATUS; - } - }.schedule(); + updateUI.schedule(); } @Override @@ -252,6 +260,9 @@ public final class NavigatorViewPart extends ViewPart implements /** {@inheritDoc} */ @Override public void dispose() { + ((NavigatorService) INavigatorService.INSTANCE) + .setNavigatorViewPart(null); + PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getSelectionService().removeSelectionListener(this); getSite().setSelectionProvider(null); diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/INavigatorService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/INavigatorService.java index abc85cd04..eda351ed1 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/INavigatorService.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/services/INavigatorService.java @@ -17,6 +17,7 @@ $Id$ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.services; +import org.eclipse.ui.part.ViewPart; import org.fortiss.tooling.kernel.internal.NavigatorService; /** @@ -35,5 +36,9 @@ public interface INavigatorService { /** Returns view id of the navigator view. */ public static final String NAVIGATOR_VIEW = "org.fortiss.tooling.kernel.model.navigator"; - // TODO (FH): define + /** + * Returns the navigator view part. May return <code>null</code> if + * navigator has not yet been created or has already been disposed. + */ + ViewPart getNavigatorView(); } -- GitLab