Merge "indicate if morphing is possible"
diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/DocumentOutlinePage.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/DocumentOutlinePage.java
index ea35baf..d6cd02f 100644
--- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/DocumentOutlinePage.java
+++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/DocumentOutlinePage.java
@@ -4,7 +4,7 @@
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     John Krasnay - initial API and implementation
  *     Torsten Stolpmann - bug 257946 - fixed outline view to work with multipage editor.
@@ -19,7 +19,6 @@
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
@@ -32,7 +31,6 @@
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.part.IPageSite;
 import org.eclipse.ui.part.Page;
 import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
@@ -77,7 +75,7 @@
 
 		vexEditor.addVexEditorListener(vexEditorListener);
 		vexEditor.getEditorSite().getSelectionProvider().addSelectionChangedListener(selectionListener);
-		registerToolbarActions(getSite().getActionBars());
+		initToolbarActions();
 		if (vexEditor.isLoaded()) {
 			showTreeViewer();
 		} else {
@@ -176,6 +174,7 @@
 		if (treeViewer != null) {
 			treeViewer.removeSelectionChangedListener(selectionListener);
 			treeViewer.getTree().dispose();
+			getSite().getActionBars().getToolBarManager().removeAll();
 			treeViewer = null;
 		}
 
@@ -209,6 +208,8 @@
 			return;
 		}
 
+		filterActionGroup.fillActionBars(getSite().getActionBars());
+
 		final String ns = doctype.getConfig().getUniqueIdentifer();
 		final Bundle bundle = Platform.getBundle(ns);
 		final String providerClassName = doctype.getOutlineProvider();
@@ -389,7 +390,7 @@
 		}
 	};
 
-	private void registerToolbarActions(final IActionBars actionBars) {
+	private void initToolbarActions() {
 
 		final Style style = vexEditor.getStyle();
 		if (style != null) {
@@ -398,11 +399,5 @@
 			// Style might be null if no document is loaded
 			filterActionGroup = new OutlineFilterActionGroup(StyleSheet.NULL);
 		}
-
-		final IToolBarManager toolBarManager = actionBars.getToolBarManager();
-		if (toolBarManager != null) {
-			filterActionGroup.fillActionBars(actionBars);
-			//toolBarManager.add(new ToolBarToggleAction(this, IOutlineViewState.SHOW_ELEMENT_CONTENT, PluginImages.DESC_SHOW_ELEMENT_CONTENT));
-		}
 	}
 }
diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/OutlineFilterAction.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/OutlineFilterAction.java
index cc9c217..d0987c0 100644
--- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/OutlineFilterAction.java
+++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/OutlineFilterAction.java
@@ -51,6 +51,13 @@
 		}
 	}
 
+	/**
+	 * @return The filter id associated with this filter action.
+	 */
+	public int getFilterId() {
+		return filterId;
+	}
+
 	@Override
 	public void run() {
 		final Preferences preferences = InstanceScope.INSTANCE.getNode(VexPlugin.ID);
diff --git a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/OutlineFilterActionGroup.java b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/OutlineFilterActionGroup.java
index 99a9d2c..38c5b3b 100644
--- a/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/OutlineFilterActionGroup.java
+++ b/org.eclipse.vex.ui/src/org/eclipse/vex/ui/internal/outline/OutlineFilterActionGroup.java
@@ -39,6 +39,11 @@
 
 		filter = new OutlineFilter(styleSheet);
 		filterActions = actions.toArray(new OutlineFilterAction[actions.size()]);
+
+		// Init filters from preferences
+		for (final OutlineFilterAction action : filterActions) {
+			setFilter(action.getFilterId(), action.isChecked());
+		}
 	}
 
 	public void setFilter(final int filterId, final boolean isSet) {