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) {
