From 3e7f2de829d7dd6ff608a92900919b111be26281 Mon Sep 17 00:00:00 2001
From: Florian Hoelzl <hoelzl@fortiss.org>
Date: Tue, 3 Jul 2012 12:38:37 +0000
Subject: [PATCH] added nvaigator sorter refs 93

---
 .../base/ModelElementHandlerBase.java         |  4 +-
 .../views/NavigatorTreeContentSorter.java     | 55 +++++++++++++++
 .../ui/internal/views/NavigatorViewPart.java  | 70 ++++++++-----------
 3 files changed, 88 insertions(+), 41 deletions(-)
 create mode 100644 org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorTreeContentSorter.java

diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
index 22b98e3c9..fe85ad2c5 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
@@ -37,7 +37,7 @@ import org.fortiss.tooling.kernel.ui.internal.views.NavigatorTreeContentProvider
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 8CDC7FB6E124536AB4375BFA03B3CE6B
+ * @ConQAT.Rating YELLOW Hash: F758FB8C87BE0A3BC40D97CA25790D7E
  */
 public abstract class ModelElementHandlerBase<T extends EObject> implements IModelElementHandler<T> {
 
@@ -107,7 +107,7 @@ public abstract class ModelElementHandlerBase<T extends EObject> implements IMod
 	 */
 	@Override
 	public int getNavigatorViewWeight() {
-		return 0;
+		return 1000000;
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorTreeContentSorter.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorTreeContentSorter.java
new file mode 100644
index 000000000..eb5da5600
--- /dev/null
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorTreeContentSorter.java
@@ -0,0 +1,55 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2012 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.tooling.kernel.ui.internal.views;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
+import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
+
+/**
+ * {@link ViewerSorter} for the {@link NavigatorViewPart}.
+ * 
+ * @author hoelzl
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating YELLOW Hash: 7FECA1156B65D9F43B9F4E155BD680E5
+ */
+public class NavigatorTreeContentSorter extends ViewerSorter {
+	/** {@inheritDoc} */
+	@Override
+	public int compare(Viewer viewer, Object e1, Object e2) {
+		if(e1 instanceof EObject && e2 instanceof EObject) {
+			IModelElementHandler<EObject> handler1 =
+					IModelElementHandlerService.INSTANCE.getModelElementHandler((EObject)e1);
+			IModelElementHandler<EObject> handler2 =
+					IModelElementHandlerService.INSTANCE.getModelElementHandler((EObject)e2);
+			int w1 = 100000000;
+			if(handler1 != null) {
+				w1 = handler1.getNavigatorViewWeight();
+			}
+			int w2 = 100000000;
+			if(handler2 != null) {
+				w2 = handler2.getNavigatorViewWeight();
+			}
+			return w1 - w2;
+		}
+		return super.compare(viewer, e1, e2);
+	}
+}
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java
index b349ee773..7b9b5330a 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java
@@ -68,11 +68,10 @@ import org.fortiss.tooling.kernel.ui.util.PropertiesConstantUtils;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating GREEN Hash: 067021EF2CC0F1C0433F3F8AAB2CDD59
+ * @ConQAT.Rating YELLOW Hash: 27BA5F858C01E06C26797C7092D881EE
  */
-public final class NavigatorViewPart extends ViewPart implements
-		ISelectionListener, ISelectionChangedListener,
-		ITabbedPropertySheetPageContributor, ContextMenuContextProvider,
+public final class NavigatorViewPart extends ViewPart implements ISelectionListener,
+		ISelectionChangedListener, ITabbedPropertySheetPageContributor, ContextMenuContextProvider,
 		ISaveablesSource, ISaveablePart {
 
 	/** Stores the TreeViewer. */
@@ -100,7 +99,7 @@ public final class NavigatorViewPart extends ViewPart implements
 	private final UIJob updateUI = new UIJob("Update Model Navigator") {
 		@Override
 		public IStatus runInUIThread(IProgressMonitor monitor) {
-			if (viewer.getControl().isDisposed()) {
+			if(viewer.getControl().isDisposed()) {
 				return Status.OK_STATUS;
 			}
 			IActionService.INSTANCE.refresh();
@@ -113,8 +112,7 @@ public final class NavigatorViewPart extends ViewPart implements
 
 	/** Constructor. */
 	public NavigatorViewPart() {
-		((NavigatorService) INavigatorService.INSTANCE)
-				.setNavigatorViewPart(this);
+		((NavigatorService)INavigatorService.INSTANCE).setNavigatorViewPart(this);
 	}
 
 	/** {@inheritDoc} */
@@ -124,12 +122,11 @@ public final class NavigatorViewPart extends ViewPart implements
 
 		// NOTE that the order of this is important. See also JDT package
 		// explorer.
-		IDecoratorManager decoratorManager = PlatformUI.getWorkbench()
-				.getDecoratorManager();
-		viewer.setLabelProvider(new DecoratingLabelProvider(
-				new ModelElementLabelProvider(), decoratorManager
-						.getLabelDecorator()));
+		IDecoratorManager decoratorManager = PlatformUI.getWorkbench().getDecoratorManager();
+		viewer.setLabelProvider(new DecoratingLabelProvider(new ModelElementLabelProvider(),
+				decoratorManager.getLabelDecorator()));
 		viewer.setContentProvider(new NavigatorTreeContentProvider());
+		viewer.setSorter(new NavigatorTreeContentSorter());
 
 		getSite().setSelectionProvider(viewer);
 		createContextMenu();
@@ -139,8 +136,7 @@ public final class NavigatorViewPart extends ViewPart implements
 
 		viewer.addDoubleClickListener(new DoubleClick());
 
-		IActionService.INSTANCE.registerGlobalActions(getViewSite()
-				.getActionBars());
+		IActionService.INSTANCE.registerGlobalActions(getViewSite().getActionBars());
 		createLinkWithEditorAction();
 
 		EObjectSelectionUtils.getSelectionService().addSelectionListener(this);
@@ -152,9 +148,10 @@ public final class NavigatorViewPart extends ViewPart implements
 	private void createLinkWithEditorAction() {
 		partListener = new LinkWithEditorPartListener();
 
-		isLinkedWithEditor = ToolingKernelUIActivator.getDefault()
-				.getDialogSettings().getBoolean(LINK_WITH_EDITOR_FLAG);
-		if (isLinkedWithEditor) {
+		isLinkedWithEditor =
+				ToolingKernelUIActivator.getDefault().getDialogSettings()
+						.getBoolean(LINK_WITH_EDITOR_FLAG);
+		if(isLinkedWithEditor) {
 			getSite().getPage().addPartListener(partListener);
 		}
 
@@ -162,17 +159,17 @@ public final class NavigatorViewPart extends ViewPart implements
 
 			@Override
 			public void run() {
-				if (isLinkedWithEditor) {
+				if(isLinkedWithEditor) {
 					isLinkedWithEditor = false;
 					getSite().getPage().removePartListener(partListener);
 				} else {
 					isLinkedWithEditor = true;
 					getSite().getPage().addPartListener(partListener);
 					IEditorPart editor = getSite().getPage().getActiveEditor();
-					if (editor instanceof ExtendableMultiPageEditor
-							&& editor.getEditorInput() instanceof ModelElementEditorInput) {
-						revealModelElement(((ModelElementEditorInput) editor
-								.getEditorInput()).getModelElement());
+					if(editor instanceof ExtendableMultiPageEditor &&
+							editor.getEditorInput() instanceof ModelElementEditorInput) {
+						revealModelElement(((ModelElementEditorInput)editor.getEditorInput())
+								.getModelElement());
 					}
 				}
 
@@ -184,15 +181,14 @@ public final class NavigatorViewPart extends ViewPart implements
 		linkWithEditorAction.setImageDescriptor(ToolingKernelUIActivator
 				.getImageDescriptor("icons/link_with_editor.gif"));
 		linkWithEditorAction.setToolTipText("Link with editor");
-		linkWithEditorAction.setChecked(ToolingKernelUIActivator.getDefault()
-				.getDialogSettings().getBoolean(LINK_WITH_EDITOR_FLAG));
+		linkWithEditorAction.setChecked(ToolingKernelUIActivator.getDefault().getDialogSettings()
+				.getBoolean(LINK_WITH_EDITOR_FLAG));
 
 		toggleExpertViewAction = new Action("Toggle expert view", SWT.TOGGLE) {
 
 			@Override
 			public void run() {
-				((NavigatorTreeContentProvider) viewer.getContentProvider())
-						.toggleExpertView();
+				((NavigatorTreeContentProvider)viewer.getContentProvider()).toggleExpertView();
 				viewer.refresh();
 			}
 		};
@@ -201,8 +197,7 @@ public final class NavigatorViewPart extends ViewPart implements
 				.getImageDescriptor("icons/expert_view.png"));
 		toggleExpertViewAction.setToolTipText("Toggle expert view");
 
-		IToolBarManager toolBarManager = getViewSite().getActionBars()
-				.getToolBarManager();
+		IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
 		Separator additionsSeperator = new Separator("additions");
 		additionsSeperator.setVisible(true);
 		toolBarManager.add(additionsSeperator);
@@ -212,8 +207,7 @@ public final class NavigatorViewPart extends ViewPart implements
 
 	/** Creates the context menu. */
 	private void createContextMenu() {
-		menuManager = IContextMenuService.INSTANCE
-				.createDefaultContextMenu(this);
+		menuManager = IContextMenuService.INSTANCE.createDefaultContextMenu(this);
 
 		Menu contextMenu = menuManager.createContextMenu(viewer.getControl());
 		viewer.getControl().setMenu(contextMenu);
@@ -229,10 +223,10 @@ public final class NavigatorViewPart extends ViewPart implements
 
 	/** Reveals the given model element in the navigator view. */
 	public void revealModelElement(EObject modelElement) {
-		if (modelElement == null) {
+		if(modelElement == null) {
 			return;
 		}
-		if (!viewer.getExpandedState(modelElement)) {
+		if(!viewer.getExpandedState(modelElement)) {
 			viewer.expandToLevel(modelElement, 2);
 		}
 		viewer.setSelection(new StructuredSelection(modelElement), true);
@@ -257,11 +251,9 @@ public final class NavigatorViewPart extends ViewPart implements
 	/** {@inheritDoc} */
 	@Override
 	public void dispose() {
-		((NavigatorService) INavigatorService.INSTANCE)
-				.setNavigatorViewPart(null);
+		((NavigatorService)INavigatorService.INSTANCE).setNavigatorViewPart(null);
 
-		EObjectSelectionUtils.getSelectionService().removeSelectionListener(
-				this);
+		EObjectSelectionUtils.getSelectionService().removeSelectionListener(this);
 		getSite().setSelectionProvider(null);
 
 		getSite().getPage().removePartListener(partListener);
@@ -281,7 +273,7 @@ public final class NavigatorViewPart extends ViewPart implements
 	@SuppressWarnings("rawtypes")
 	@Override
 	public Object getAdapter(Class adapter) {
-		if (adapter == IPropertySheetPage.class) {
+		if(adapter == IPropertySheetPage.class) {
 			return new TabbedPropertySheetPage(this);
 		}
 		return super.getAdapter(adapter);
@@ -337,7 +329,7 @@ public final class NavigatorViewPart extends ViewPart implements
 	/** {@inheritDoc} */
 	@Override
 	public EObject getSelectedModelElement() {
-		return EObjectSelectionUtils.getFirstElement(getSite()
-				.getSelectionProvider().getSelection());
+		return EObjectSelectionUtils.getFirstElement(getSite().getSelectionProvider()
+				.getSelection());
 	}
 }
-- 
GitLab