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 44e58a43313db0f59d8c79da3dbe4ab021b29a91..df0d6f12adada01471ed2c24ff1217829b24b5fc 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,10 +17,13 @@ $Id$ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.internal; +import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.part.ViewPart; +import org.fortiss.tooling.kernel.interfaces.ITopLevelElementChangeListener; import org.fortiss.tooling.kernel.internal.navigator.NavigatorViewPart; import org.fortiss.tooling.kernel.services.INavigatorService; +import org.fortiss.tooling.kernel.services.IPersistencyService; /** * This class implements the {@link INavigatorService} interface. @@ -30,11 +33,17 @@ import org.fortiss.tooling.kernel.services.INavigatorService; * @version $Rev$ * @levd.rating RED Rev: */ -public class NavigatorService implements INavigatorService { +public class NavigatorService implements INavigatorService, + ITopLevelElementChangeListener { /** Stores the navigator view. */ private NavigatorViewPart navigatorViewPart; + /** Constructor. */ + public NavigatorService() { + IPersistencyService.INSTANCE.addTopLevelElementListener(this); + } + /** Sets the navigator view. */ public void setNavigatorViewPart(NavigatorViewPart part) { this.navigatorViewPart = part; @@ -52,4 +61,16 @@ public class NavigatorService implements INavigatorService { return navigatorViewPart.getSite().getSelectionProvider() .getSelection(); } + + /** {@inheritDoc} */ + @Override + public void topLevelElementAdded(EObject topLevelElement) { + navigatorViewPart.refresh(); + } + + /** {@inheritDoc} */ + @Override + public void topLevelElementRemoved(EObject topLevelElement) { + navigatorViewPart.refresh(); + } } 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 77998a6ee28ccb1077bc3621087c386eecdc94c4..9c9a1f01bd93f49e4113e76d4a46d4758abcc400 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 @@ -47,7 +47,6 @@ import org.eclipse.ui.views.properties.IPropertySheetPage; import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor; import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; import org.fortiss.tooling.kernel.interfaces.ICustomMenuContributor; -import org.fortiss.tooling.kernel.interfaces.ITopLevelElementChangeListener; import org.fortiss.tooling.kernel.internal.NavigatorService; import org.fortiss.tooling.kernel.services.IActionService; import org.fortiss.tooling.kernel.services.IContextMenuService; @@ -67,8 +66,7 @@ import org.fortiss.tooling.kernel.util.EObjectSelectionUtils; */ public final class NavigatorViewPart extends ViewPart implements ISelectionListener, ISelectionChangedListener, IDoubleClickListener, - ITabbedPropertySheetPageContributor, ICustomMenuContributor, - ITopLevelElementChangeListener { + ITabbedPropertySheetPageContributor, ICustomMenuContributor { /** Stores the TreeViewer. */ private TreeViewer viewer; @@ -212,15 +210,8 @@ public final class NavigatorViewPart extends ViewPart implements return result; } - /** {@inheritDoc} */ - @Override - public void topLevelElementAdded(EObject topLevelElement) { - updateUI.schedule(); - } - - /** {@inheritDoc} */ - @Override - public void topLevelElementRemoved(EObject topLevelElement) { + /** Refreshes the navigator view. */ + public void refresh() { updateUI.schedule(); } }