bug 298565: [modeling] Provide a way to define the ViewerComparator to use in the outline
https://bugs.eclipse.org/bugs/show_bug.cgi?id=298565
diff --git a/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfFormEditor.java b/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfFormEditor.java
index e06828d..21f88c0 100644
--- a/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfFormEditor.java
+++ b/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/editor/EmfFormEditor.java
@@ -8,7 +8,7 @@
* Contributors:
* Anyware Technologies - initial API and implementation
*
- * $Id: EmfFormEditor.java,v 1.34 2009/12/08 16:52:43 bcabe Exp $
+ * $Id: EmfFormEditor.java,v 1.35 2009/12/22 14:19:11 bcabe Exp $
*/
package org.eclipse.pde.emfforms.editor;
@@ -653,6 +653,7 @@
if (contentOutlinePage == null) {
contentOutlinePage = new EmfContentOutlinePage(this);
contentOutlinePage.setViewerInput(getEditorConfig().getOutlineInput(getCurrentEObject()));
+ contentOutlinePage.setViewerComparator(getOutlineComparator());
// Listen to selection so that we can handle it is a special way.
contentOutlinePage.addSelectionChangedListener(new ISelectionChangedListener() {
@@ -674,6 +675,14 @@
}
/**
+ * Subclasses may override this method to provide their own {@link ViewerComparator} to be used in the outline's {@link TreeViewer}. It could be useful in case you want to rearrange elements
+ * @return the {@link ViewerComparator} to use to render the outline's {@link TreeViewer}. Default implementation return <code>null</code>
+ */
+ protected ViewerComparator getOutlineComparator() {
+ return null;
+ }
+
+ /**
* This deals with how we want selection in the outline to affect the other views.<br><br>
* <strong>Clients can override this method</strong> to have some special behaviour on selection changed events in the outline, such
* as giving focus to a particular page of the editor.
diff --git a/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/internal/editor/EmfContentOutlinePage.java b/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/internal/editor/EmfContentOutlinePage.java
index ac63b09..e253e68 100644
--- a/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/internal/editor/EmfContentOutlinePage.java
+++ b/modeling/plugins/org.eclipse.pde.emfforms/src/org/eclipse/pde/emfforms/internal/editor/EmfContentOutlinePage.java
@@ -8,7 +8,7 @@
* Contributors:
* Anyware Technologies - initial API and implementation
*
- * $Id: EmfFormEditor.java,v 1.23 2009/09/11 21:18:00 bcabe Exp $
+ * $Id: EmfContentOutlinePage.java,v 1.1 2009/09/12 12:57:54 bcabe Exp $
*/
package org.eclipse.pde.emfforms.internal.editor;
@@ -40,6 +40,8 @@
private Object viewerInput;
+ private ViewerComparator viewerComparator;
+
public EmfContentOutlinePage(EmfFormEditor<? extends EObject> editor) {
this.editor = editor;
}
@@ -54,6 +56,7 @@
contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(editor.getAdapterFactory()));
contentOutlineViewer.setLabelProvider(new DecoratingLabelProvider(new AdapterFactoryLabelProvider(editor.getAdapterFactory()), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()));
contentOutlineViewer.setInput(viewerInput);
+ contentOutlineViewer.setComparator(viewerComparator);
contentOutlineViewer.addFilter(new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
@@ -108,6 +111,10 @@
this.viewerInput = viewerInput;
}
+ public void setViewerComparator(ViewerComparator comparator) {
+ this.viewerComparator = comparator;
+ }
+
public TreeViewer getViewer() {
return contentOutlineViewer;
}