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