[224040] continuation of bug 212330, migrate sse menus
diff --git a/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF
index 633f6b8..c09e0ee 100644
--- a/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF
@@ -18,6 +18,7 @@
  org.eclipse.jst.jsp.ui.internal.derived;x-internal:=true,
  org.eclipse.jst.jsp.ui.internal.editor;x-internal:=true,
  org.eclipse.jst.jsp.ui.internal.format;x-internal:=true,
+ org.eclipse.jst.jsp.ui.internal.handlers;x-internal:=true,
  org.eclipse.jst.jsp.ui.internal.hyperlink;x-internal:=true,
  org.eclipse.jst.jsp.ui.internal.java.refactoring;x-internal:=true,
  org.eclipse.jst.jsp.ui.internal.java.search;x-internal:=true,
diff --git a/bundles/org.eclipse.jst.jsp.ui/plugin.properties b/bundles/org.eclipse.jst.jsp.ui/plugin.properties
index 3a85dce..0e63e44 100644
--- a/bundles/org.eclipse.jst.jsp.ui/plugin.properties
+++ b/bundles/org.eclipse.jst.jsp.ui/plugin.properties
@@ -47,6 +47,8 @@
 command.jsp.refactor.move.description=Move a Java Element to another package
 scope.structured.text.editor.jsp.name=Editing JSP Source
 scope.structured.text.editor.jsp.description=Editing JSP Source
+scope.jsp.core.jspsource.name=JSP Source
+scope.jsp.core.jspsource.description=JSP Source
 JSP_Type_Rename_Participant_Extension_Element.name=JSP Type Rename Participant
 JSP_Method_Rename_Participant_Extension_Element.name=JSP Method Rename Participant
 JSP_Package_Rename_Participant_Extension_Element.name=JSP Package Rename Participant
diff --git a/bundles/org.eclipse.jst.jsp.ui/plugin.xml b/bundles/org.eclipse.jst.jsp.ui/plugin.xml
index e1cf860..df4a017 100644
--- a/bundles/org.eclipse.jst.jsp.ui/plugin.xml
+++ b/bundles/org.eclipse.jst.jsp.ui/plugin.xml
@@ -70,6 +70,10 @@
 			type="spellingregions"
 			value="XML_COMMENT_TEXT, JSP_COMMENT_TEXT, XML_CONTENT, HTML_CONTENT"
 			target="org.eclipse.jst.jsp.core.jspsource" />
+		<provisionalDefinition
+			type="activecontexts"
+			value="org.eclipse.jst.jsp.core.jspsource, org.eclipse.jst.jsp.ui.structured.text.editor.jsp.scope, org.eclipse.wst.html.core.htmlsource, org.eclipse.core.runtime.xml, org.eclipse.wst.xml.navigation, org.eclipse.wst.xml.comments, org.eclipse.wst.xml.selection"
+        	target="org.eclipse.jst.jsp.core.jspsource" />
 	</extension>
 
 	<!--======================================================================================-->
@@ -461,10 +465,16 @@
 	<extension point="org.eclipse.ui.contexts">
 		<context
 			name="%scope.structured.text.editor.jsp.name"
-			parentId="org.eclipse.ui.textEditorScope"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
 			description="%scope.structured.text.editor.jsp.description"
 			id="org.eclipse.jst.jsp.ui.structured.text.editor.jsp.scope">
 		</context>
+		<context
+			name="%scope.jsp.core.jspsource.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.jsp.core.jspsource.description"
+			id="org.eclipse.jst.jsp.core.jspsource">
+		</context>
 	</extension>
 	
 	<!-- Keybindings for jsp source editor -->
@@ -682,10 +692,10 @@
 	</extension>
 
 	<extension point="org.eclipse.ui.editorActions">
-		<editorContribution
+	<editorContribution
 			id="org.eclipse.jst.jsp.core.jspsource.source.editorActions"
 			targetID="org.eclipse.jst.jsp.core.jspsource.source">
-			<action
+	<!--		<action
 				id="CleanupDocument"
 				label="%CleanupDocument_label"
 				definitionId="org.eclipse.wst.sse.ui.cleanup.document"
@@ -716,8 +726,8 @@
 				tooltip="%RemoveBlockComment_tooltip"
 				class="org.eclipse.wst.xml.ui.internal.actions.RemoveBlockCommentActionXMLDelegate"
 				actionID="RemoveBlockComment">
-			</action>
-			<action
+			</action>-->
+			<!--<action
 				id="RenameElement"
 				label="%RenameElement_label"
 				definitionId="org.eclipse.jst.jsp.ui.refactor.rename"
@@ -737,8 +747,8 @@
 				definitionId="org.eclipse.wst.sse.ui.search.find.occurrences"
 				class="org.eclipse.jst.jsp.ui.internal.java.search.JSPFindOccurrencesActionDelegate"
 				actionID="FindOccurrences">
-			</action>
-			<action
+			</action>-->
+			<!--<action
 				id="StructureSelectEnclosing"
 				label="%StructureSelectEnclosing_label"
 				definitionId="org.eclipse.wst.sse.ui.structure.select.enclosing"
@@ -769,7 +779,7 @@
 				tooltip="%StructureSelectHistory_tooltip"
 				class="org.eclipse.wst.sse.ui.internal.selection.StructuredSelectHistoryActionDelegate"
 				actionID="StructureSelectHistory">
-			</action>
+			</action>-->
 		</editorContribution>
         <editorContribution
             targetID="org.eclipse.jst.jsp.core.jspsource.source"
@@ -787,6 +797,54 @@
                id="org.eclipse.ui.texteditor.SelectRulerAction"/>
         </editorContribution>
 	</extension>
+	
+	<extension
+       point="org.eclipse.ui.handlers">
+       <handler
+             class="org.eclipse.jst.jsp.ui.internal.java.refactoring.RenameElementHandler"
+             commandId="org.eclipse.jst.jsp.ui.refactor.rename">
+             <activeWhen>
+             	<reference
+                    definitionId="org.eclipse.wst.jsp.ui.jspSourceContributions.definition">
+             	</reference>
+             </activeWhen>
+             <enabledWhen>
+             	<reference
+                    definitionId="org.eclipse.wst.jsp.ui.jspSourceContributions.definition">
+             	</reference>
+             </enabledWhen>
+       </handler>
+       <handler
+             class="org.eclipse.jst.jsp.ui.internal.java.refactoring.MoveElementHandler"
+             commandId="org.eclipse.jst.jsp.ui.refactor.move">
+             <activeWhen>
+             	<reference
+                    definitionId="org.eclipse.wst.jsp.ui.jspSourceContributions.definition">
+             	</reference>
+             </activeWhen>
+             <enabledWhen>
+             	<reference
+                    definitionId="org.eclipse.wst.jsp.ui.jspSourceContributions.definition">
+             	</reference>
+             </enabledWhen>
+       </handler>
+       <handler
+             class="org.eclipse.jst.jsp.ui.internal.handlers.JSPFindOccurrencesHandler"
+             commandId="org.eclipse.wst.sse.ui.search.find.occurrences">
+             <activeWhen>
+             	<reference
+                    definitionId="org.eclipse.wst.jsp.ui.jspSourceContributions.definition">
+             	</reference>
+             </activeWhen>
+             <enabledWhen>
+             	<reference
+                    definitionId="org.eclipse.wst.jsp.ui.jspSourceContributions.definition">
+             	</reference>
+             </enabledWhen>
+       </handler>
+	</extension>
+	
+	
 	<!-- JSP Fragment Property Page -->
 	<extension point="org.eclipse.ui.propertyPages">
 		<!-- for j2ee web project -->
@@ -896,4 +954,31 @@
 			targetId="org.eclipse.jst.jsp.core.jspsource">
 		</hyperlinkDetector>
    </extension>
+   
+   <extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.jsp.ui.jspSourceContributions.definition">
+            <with variable="activeContexts">
+	           <iterate operator="or">
+	              <equals value="org.eclipse.jst.jsp.core.jspsource"/>
+	           </iterate>
+            </with>
+		</definition>
+	</extension>
+	
+	<extension point="org.eclipse.ui.menus">
+	    <menuContribution locationURI="menu:refactorMenuId">
+	       <separator name="jspRefactorBegin" visible="false"></separator>
+	       <command commandId="org.eclipse.jst.jsp.ui.refactor.rename" id="RenameElement" label="%command.jsp.refactor.rename.name" style="push">
+			   <visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.jsp.ui.jspSourceContributions.definition"></reference>
+				</visibleWhen>
+	       </command>
+	       <command commandId="org.eclipse.jst.jsp.ui.refactor.move" id="MoveElement" label="%command.jsp.refactor.move.name" style="push">
+			   <visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.jsp.ui.jspSourceContributions.definition"></reference>
+				</visibleWhen>
+	       </command>
+	       <separator name="jspRefactorBegin" visible="false"></separator>
+		</menuContribution>
+	</extension>
 </plugin>
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/handlers/JSPFindOccurrencesHandler.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/handlers/JSPFindOccurrencesHandler.java
new file mode 100644
index 0000000..c3467da
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/handlers/JSPFindOccurrencesHandler.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.jsp.ui.internal.handlers;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.wst.html.ui.internal.search.HTMLFindOccurrencesProcessor;
+import org.eclipse.wst.sse.ui.internal.handlers.FindOccurrencesHandler;
+
+public class JSPFindOccurrencesHandler extends FindOccurrencesHandler {
+	private List fProcessors;
+	
+	protected List getProcessors() {
+		if (fProcessors == null) {
+			fProcessors = new ArrayList();
+			HTMLFindOccurrencesProcessor htmlProcessor = new HTMLFindOccurrencesProcessor();
+			fProcessors.add(htmlProcessor);
+//			 temporary, workaround to disable function, since using the function 
+//			 can easily cause deadlock to occur.
+//					 See https://bugs.eclipse.org/bugs/show_bug.cgi?id=103662
+//			JSPFindOccurrencesProcessor jspProcessor = new JSPFindOccurrencesProcessor();
+//			fProcessors.add(jspProcessor);
+		}
+		return fProcessors;
+	}
+
+	
+
+}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/MoveElementHandler.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/MoveElementHandler.java
new file mode 100644
index 0000000..21abbf0
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/MoveElementHandler.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.jsp.ui.internal.java.refactoring;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+
+/**
+ * A handler that launches JDT move element wizard
+ * 
+ * Still relies heavily on internal API
+ * will change post 3.0 with public move support
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=61817 
+ */
+public class MoveElementHandler extends AbstractHandler {
+//	private IEditorPart fEditor;
+
+	public Object execute(ExecutionEvent arg0) throws ExecutionException {
+		// no-op until we know how we're supposed to use this 
+		// eclipse 3.2M5
+		// public move support: https://bugs.eclipse.org/bugs/show_bug.cgi?id=61817
+		
+//		IJavaElement[] elements = getSelectedElements();
+//		if (elements.length > 0) {
+//
+//			// need to check if it's movable
+//			try {
+//				JavaMoveProcessor processor = JavaMoveProcessor.create(getResources(elements), elements);
+//				
+//				Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+//				MoveRefactoring refactoring = new MoveRefactoring(processor);
+//
+//				RefactoringWizard wizard = createWizard(refactoring);
+//
+//				/*
+//				 * We want to get the shell from the refactoring dialog but
+//				 * it's not known at this point, so we pass the wizard and
+//				 * then, once the dialog is open, we will have access to its
+//				 * shell.
+//				 */
+//
+//				processor.setCreateTargetQueries(new CreateTargetQueries(wizard));
+//				processor.setReorgQueries(new ReorgQueries(wizard));
+//				// String openRefactoringWizMsg =
+//				// RefactoringMessages.getString("OpenRefactoringWizardAction.refactoring");
+//				// //$NON-NLS-1$
+//				String openRefactoringWizMsg = JSPUIMessages.MoveElementWizard; // "Move
+//																				// the
+//																				// selected
+//																				// elements";
+//																				// //$NON-NLS-1$
+//				new RefactoringStarter().activate(refactoring, wizard, parent, openRefactoringWizMsg, true);
+//
+//				PlatformStatusLineUtil.clearStatusLine();
+//
+//			}
+//			catch (JavaModelException e) {
+//				Logger.logException(e);
+//			}
+//		}
+//		else {
+//			PlatformStatusLineUtil.displayErrorMessage(JSPUIMessages.JSPMoveElementAction_0); //$NON-NLS-1$
+//		}
+		return null;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/RenameElementHandler.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/RenameElementHandler.java
new file mode 100644
index 0000000..7d054c2
--- /dev/null
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/RenameElementHandler.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.jsp.ui.internal.java.refactoring;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.ui.refactoring.RenameSupport;
+import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
+import org.eclipse.jst.jsp.ui.internal.Logger;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.wst.sse.ui.internal.util.PlatformStatusLineUtil;
+
+public class RenameElementHandler extends AbstractHandler {
+	private IEditorPart fEditor;
+	
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		fEditor = HandlerUtil.getActiveEditor(event);
+		
+		IJavaElement element = getSelectedElement();
+		if(element != null) {
+			RenameSupport renameSupport = null;
+			try {
+				switch(element.getElementType()) {
+					case IJavaElement.TYPE:
+						renameSupport= RenameSupport.create((IType)element, element.getElementName(), RenameSupport.UPDATE_REFERENCES);
+						break;
+					case IJavaElement.METHOD:
+						renameSupport= RenameSupport.create((IMethod)element, element.getElementName(), RenameSupport.UPDATE_REFERENCES);
+						break;
+					case IJavaElement.PACKAGE_FRAGMENT:
+						renameSupport= RenameSupport.create((IPackageFragment)element, element.getElementName(), RenameSupport.UPDATE_REFERENCES);
+						break;
+				}
+				if(renameSupport != null) {
+					renameSupport.openDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
+					PlatformStatusLineUtil.clearStatusLine();
+				}
+			}
+			catch (CoreException e) {
+				Logger.logException(e);
+			}
+		}
+		else  {
+			PlatformStatusLineUtil.displayErrorMessage(JSPUIMessages.JSPRenameElementAction_0); //$NON-NLS-1$
+			PlatformStatusLineUtil.addOneTimeClearListener();
+		}
+		
+		return null;
+	}
+	
+	private IJavaElement getSelectedElement() {
+		IJavaElement element = null;
+		if (fEditor instanceof ITextEditor) {
+			IJavaElement[] elements = JSPJavaSelectionProvider.getSelection((ITextEditor)fEditor);
+			if (elements.length == 1)
+				element = elements[0];
+		}
+		return element;
+	}
+
+}
diff --git a/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF
index 8596d9e..19f30e5 100644
--- a/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF
@@ -15,6 +15,7 @@
  org.eclipse.wst.css.ui.internal.contentproperties.ui;x-internal:=true,
  org.eclipse.wst.css.ui.internal.edit.ui;x-internal:=true,
  org.eclipse.wst.css.ui.internal.editor;x-internal:=true,
+ org.eclipse.wst.css.ui.internal.handlers;x-internal:=true,
  org.eclipse.wst.css.ui.internal.image;x-internal:=true,
  org.eclipse.wst.css.ui.internal.preferences;x-internal:=true,
  org.eclipse.wst.css.ui.internal.preferences.ui;x-internal:=true,
diff --git a/bundles/org.eclipse.wst.css.ui/plugin.properties b/bundles/org.eclipse.wst.css.ui/plugin.properties
index 0e97910..32dfaf0 100644
--- a/bundles/org.eclipse.wst.css.ui/plugin.properties
+++ b/bundles/org.eclipse.wst.css.ui/plugin.properties
@@ -51,3 +51,6 @@
 preferenceKeywords.templates=editor css templates snippet macros
 preferenceKeywords.styles=editor css style customize syntax highlighting type text content foreground background bold color
 preferenceKeywords.webcontent=editor css web content settings profile style
+
+scope.structured.text.editor.css.name=Editing CSS Source
+scope.structured.text.editor.css.description=Editing CSS Source
diff --git a/bundles/org.eclipse.wst.css.ui/plugin.xml b/bundles/org.eclipse.wst.css.ui/plugin.xml
index 1719310..e622535 100644
--- a/bundles/org.eclipse.wst.css.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.css.ui/plugin.xml
@@ -41,6 +41,19 @@
 			type="preferencepages"
 			value="org.eclipse.wst.css.ui.preferences.css org.eclipse.wst.sse.ui.preferences.css.source, org.eclipse.wst.css.ui.preferences.templates, org.eclipse.wst.sse.ui.preferences.css.styles"
 			target="org.eclipse.wst.css.core.csssource" />
+		<provisionalDefinition
+			type="activecontexts"
+			value="org.eclipse.wst.css.core.csssource"
+			target="org.eclipse.wst.css.core.csssource" />
+	</extension>
+	
+	<extension point="org.eclipse.ui.contexts">
+		<context
+			name="%scope.structured.text.editor.css.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.css.description"
+			id="org.eclipse.wst.css.core.csssource">
+		</context>
 	</extension>
 	
 	<extension
@@ -202,9 +215,63 @@
 		</include>
 	</extension>
 
+	<extension
+ 		point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.wst.css.ui.internal.handlers.CleanupDocumentHandler"
+			commandId="org.eclipse.wst.sse.ui.cleanup.document">
+			<activeWhen>
+				<reference definitionId="org.eclipse.wst.css.ui.cssSourceContributions.definition"/>
+			</activeWhen>
+			<enabledWhen>
+				<reference definitionId="org.eclipse.wst.css.ui.cssSourceContributions.definition"/>
+			</enabledWhen>
+		</handler>
+		<handler
+			class="org.eclipse.wst.css.ui.internal.handlers.StructuredSelectEnclosingHandler"
+			commandId="org.eclipse.wst.sse.ui.structure.select.enclosing">
+			<activeWhen>
+				<reference definitionId="org.eclipse.wst.css.ui.cssSourceContributions.definition"/>
+			</activeWhen>
+			<enabledWhen>
+				<reference definitionId="org.eclipse.wst.css.ui.cssSourceContributions.definition"/>
+			</enabledWhen>
+		</handler>
+		<handler
+			class="org.eclipse.wst.css.ui.internal.handlers.StructuredSelectNextHandler"
+			commandId="org.eclipse.wst.sse.ui.structure.select.next">
+			<activeWhen>
+				<reference definitionId="org.eclipse.wst.css.ui.cssSourceContributions.definition"/>
+			</activeWhen>
+			<enabledWhen>
+				<reference definitionId="org.eclipse.wst.css.ui.cssSourceContributions.definition"/>
+			</enabledWhen>
+		</handler>
+		<handler
+			class="org.eclipse.wst.css.ui.internal.handlers.StructuredSelectPreviousHandler"
+			commandId="org.eclipse.wst.sse.ui.structure.select.previous">
+			<activeWhen>
+				<reference definitionId="org.eclipse.wst.css.ui.cssSourceContributions.definition"/>
+			</activeWhen>
+			<enabledWhen>
+				<reference definitionId="org.eclipse.wst.css.ui.cssSourceContributions.definition"/>
+			</enabledWhen>
+		</handler>
+		<!-- TODO Use the handler from SSE or XML's declaration -->
+		<handler
+			class="org.eclipse.wst.sse.ui.internal.handlers.StructuredSelectHistoryHandler"
+			commandId="org.eclipse.wst.sse.ui.structure.select.last">
+			<activeWhen>
+				<reference definitionId="org.eclipse.wst.css.ui.cssSourceContributions.definition"/>
+			</activeWhen>
+			<enabledWhen>
+				<reference definitionId="org.eclipse.wst.css.ui.cssSourceContributions.definition"/>
+			</enabledWhen>
+		</handler>
+	</extension>
 	<!-- CSS editor actions -->
 	<extension point="org.eclipse.ui.editorActions">
-		<editorContribution
+		<!--<editorContribution
 			id="org.eclipse.wst.css.core.csssource.source.editorActions"
 			targetID="org.eclipse.wst.css.core.csssource.source">
 			<action
@@ -247,7 +314,7 @@
 				class="org.eclipse.wst.sse.ui.internal.selection.StructuredSelectHistoryActionDelegate"
 				actionID="StructureSelectHistory">
 			</action>
-		</editorContribution>
+		</editorContribution>-->
         <editorContribution
             targetID="org.eclipse.wst.css.core.csssource.source"
             id="org.eclipse.wst.css.core.csssource.ruler.actions">
@@ -264,4 +331,14 @@
                id="org.eclipse.ui.texteditor.SelectRulerAction"/>
         </editorContribution>
 	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.css.ui.cssSourceContributions.definition">
+            <with variable="activeContexts">
+	           <iterate operator="or">
+	              <equals value="org.eclipse.wst.css.core.csssource"/>
+	           </iterate>
+            </with>
+		</definition>
+	</extension>
 </plugin>
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/CleanupDocumentHandler.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/CleanupDocumentHandler.java
new file mode 100644
index 0000000..a623b3e
--- /dev/null
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/CleanupDocumentHandler.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.css.ui.internal.handlers;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.wst.css.core.internal.cleanup.CleanupProcessorCSS;
+import org.eclipse.wst.css.ui.internal.edit.ui.CleanupDialogCSS;
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.cleanup.IStructuredCleanupProcessor;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.ui.internal.SSEUIMessages;
+
+public class CleanupDocumentHandler extends AbstractHandler implements IHandler {
+	private IStructuredCleanupProcessor fCleanupProcessor;
+
+	public void dispose() {
+		// nulling out just in case
+		fCleanupProcessor = null;
+	}
+	
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		IEditorPart editorPart = HandlerUtil.getActiveEditor(event);
+		ITextEditor textEditor = null;
+		if (editorPart instanceof ITextEditor)
+			textEditor = (ITextEditor) editorPart;
+		else {
+			Object o = editorPart.getAdapter(ITextEditor.class);
+			if (o != null)
+				textEditor = (ITextEditor) o;
+		}
+		
+		if (textEditor != null) {
+			final ITextEditor editor = textEditor;
+			Dialog cleanupDialog = new CleanupDialogCSS(editor.getSite().getShell());
+			if (cleanupDialog.open() == Window.OK) {
+				// setup runnable
+				Runnable runnable = new Runnable() {
+					public void run() {
+						IStructuredCleanupProcessor cleanupProcessor = getCleanupProcessor();
+						if (cleanupProcessor != null) {
+							IStructuredModel model = null;
+							try {
+								model = StructuredModelManager.getModelManager().getExistingModelForEdit(editor.getDocumentProvider().getDocument(editor.getEditorInput()));
+								if (model != null)
+									cleanupProcessor.cleanupModel(model);
+							}
+							finally {
+								if (model != null)
+									model.releaseFromEdit();
+							}
+						}
+					}
+				};
+
+				// TODO: make independent of 'model'.
+				IStructuredModel model = null;
+				try {
+					model = StructuredModelManager.getModelManager().getExistingModelForEdit(editor.getDocumentProvider().getDocument(editor.getEditorInput()));
+					if (model != null) {
+						// begin recording
+						ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
+						model.beginRecording(this, SSEUIMessages.Cleanup_Document_UI_, SSEUIMessages.Cleanup_Document_UI_, selection.getOffset(), selection.getLength()); //$NON-NLS-1$ //$NON-NLS-2$
+
+						// tell the model that we are about to make a big
+						// model change
+						model.aboutToChangeModel();
+
+						// run
+						BusyIndicator.showWhile(editor.getEditorSite().getWorkbenchWindow().getShell().getDisplay(), runnable);
+					}
+				}
+				finally {
+					if (model != null) {
+						// tell the model that we are done with the big
+						// model
+						// change
+						model.changedModel();
+
+						// end recording
+						ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
+						model.endRecording(this, selection.getOffset(), selection.getLength());
+						model.releaseFromEdit();
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	public void selectionChanged(IAction action, ISelection selection) {
+		// do nothing
+	}
+
+	IStructuredCleanupProcessor getCleanupProcessor() {
+		if (fCleanupProcessor == null)
+			fCleanupProcessor = new CleanupProcessorCSS();
+
+		return fCleanupProcessor;
+	}
+}
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/StructuredSelectEnclosingHandler.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/StructuredSelectEnclosingHandler.java
new file mode 100644
index 0000000..ac19982
--- /dev/null
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/StructuredSelectEnclosingHandler.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.css.ui.internal.handlers;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.text.Region;
+import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
+import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.ui.internal.handlers.AbstractStructuredSelectHandler;
+
+public class StructuredSelectEnclosingHandler extends AbstractStructuredSelectHandler {
+	
+	protected IndexedRegion getCursorIndexedRegion(IDocument document, ITextSelection textSelection) {
+		IndexedRegion indexedRegion = null;
+
+		indexedRegion = getIndexedRegion(document, textSelection.getOffset());
+
+		return indexedRegion;
+	}
+
+	protected Region getNewSelectionRegion(IndexedRegion indexedRegion, ITextSelection textSelection) {
+		Region newRegion = null;
+		if (indexedRegion instanceof ICSSNode) {
+			ICSSNode cursorNode = (ICSSNode) indexedRegion;
+			Region cursorNodeRegion = new Region(indexedRegion.getStartOffset(), indexedRegion.getEndOffset() - indexedRegion.getStartOffset());
+			int currentOffset = textSelection.getOffset();
+			int currentEndOffset = currentOffset + textSelection.getLength();
+			if (cursorNodeRegion.getOffset() >= currentOffset && cursorNodeRegion.getOffset() <= currentEndOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() >= currentOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() <= currentEndOffset) {
+				ICSSNode newNode = cursorNode.getParentNode();
+
+				if (newNode instanceof IndexedRegion) {
+					IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
+					newRegion = new Region(newIndexedRegion.getStartOffset(), newIndexedRegion.getEndOffset() - newIndexedRegion.getStartOffset());
+				}
+			}
+			else
+				newRegion = cursorNodeRegion;
+		}
+		return newRegion;
+	}
+}
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/StructuredSelectNextHandler.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/StructuredSelectNextHandler.java
new file mode 100644
index 0000000..bfccb26
--- /dev/null
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/StructuredSelectNextHandler.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.css.ui.internal.handlers;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.text.Region;
+import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
+import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.ui.internal.handlers.AbstractStructuredSelectHandler;
+
+public class StructuredSelectNextHandler extends AbstractStructuredSelectHandler {
+
+	protected IndexedRegion getCursorIndexedRegion(IDocument document, ITextSelection textSelection) {
+		int offset = textSelection.getOffset() + textSelection.getLength() - 1;
+		if (offset < 0)
+			offset = 0;
+
+		IndexedRegion indexedRegion = null;
+
+		indexedRegion = getIndexedRegion(document, offset);
+
+		return indexedRegion;
+	}
+
+	protected Region getNewSelectionRegion(IndexedRegion indexedRegion, ITextSelection textSelection) {
+		Region newRegion = null;
+
+		if (indexedRegion instanceof ICSSNode) {
+			ICSSNode cursorNode = (ICSSNode) indexedRegion;
+
+			Region cursorNodeRegion = new Region(indexedRegion.getStartOffset(), indexedRegion.getEndOffset() - indexedRegion.getStartOffset());
+			int currentOffset = textSelection.getOffset();
+			int currentEndOffset = currentOffset + textSelection.getLength();
+			if (cursorNodeRegion.getOffset() >= currentOffset && cursorNodeRegion.getOffset() <= currentEndOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() >= currentOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() <= currentEndOffset) {
+				ICSSNode newNode = cursorNode.getNextSibling();
+				if (newNode == null) {
+					newNode = cursorNode.getParentNode();
+
+					if (newNode instanceof IndexedRegion) {
+						IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
+						newRegion = new Region(newIndexedRegion.getStartOffset(), newIndexedRegion.getEndOffset() - newIndexedRegion.getStartOffset());
+					}
+				}
+				else {
+					if (newNode instanceof IndexedRegion) {
+						IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
+						newRegion = new Region(currentOffset, newIndexedRegion.getEndOffset() - currentOffset);
+					}
+				}
+			}
+			else
+				newRegion = cursorNodeRegion;
+		}
+		return newRegion;
+	}
+}
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/StructuredSelectPreviousHandler.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/StructuredSelectPreviousHandler.java
new file mode 100644
index 0000000..5827a4f
--- /dev/null
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/handlers/StructuredSelectPreviousHandler.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.css.ui.internal.handlers;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.text.Region;
+import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
+import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.ui.internal.handlers.AbstractStructuredSelectHandler;
+
+public class StructuredSelectPreviousHandler extends AbstractStructuredSelectHandler {
+
+	protected IndexedRegion getCursorIndexedRegion(IDocument document, ITextSelection textSelection) {
+		IndexedRegion indexedRegion = null;
+
+		indexedRegion = getIndexedRegion(document, textSelection.getOffset());
+
+		return indexedRegion;
+	}
+
+	protected Region getNewSelectionRegion(IndexedRegion indexedRegion, ITextSelection textSelection) {
+		Region newRegion = null;
+		if (indexedRegion instanceof ICSSNode) {
+			ICSSNode cursorNode = (ICSSNode) indexedRegion;
+
+			Region cursorNodeRegion = new Region(indexedRegion.getStartOffset(), indexedRegion.getEndOffset() - indexedRegion.getStartOffset());
+			int currentOffset = textSelection.getOffset();
+			int currentEndOffset = currentOffset + textSelection.getLength();
+			if (cursorNodeRegion.getOffset() >= currentOffset && cursorNodeRegion.getOffset() <= currentEndOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() >= currentOffset && cursorNodeRegion.getOffset() + cursorNodeRegion.getLength() <= currentEndOffset) {
+				ICSSNode newNode = cursorNode.getPreviousSibling();
+				if (newNode == null) {
+					newNode = cursorNode.getParentNode();
+
+					if (newNode instanceof IndexedRegion) {
+						IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
+						newRegion = new Region(newIndexedRegion.getStartOffset(), newIndexedRegion.getEndOffset() - newIndexedRegion.getStartOffset());
+					}
+				}
+				else {
+					if (newNode instanceof IndexedRegion) {
+						IndexedRegion newIndexedRegion = (IndexedRegion) newNode;
+						newRegion = new Region(newIndexedRegion.getStartOffset(), currentEndOffset - newIndexedRegion.getStartOffset());
+					}
+				}
+			}
+			else
+				newRegion = cursorNodeRegion;
+		}
+		return newRegion;
+	}
+}
diff --git a/bundles/org.eclipse.wst.html.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.html.ui/META-INF/MANIFEST.MF
index a5a9bfe..fee978e 100644
--- a/bundles/org.eclipse.wst.html.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.html.ui/META-INF/MANIFEST.MF
@@ -17,6 +17,7 @@
  org.eclipse.wst.html.ui.internal.derived;x-internal:=true,
  org.eclipse.wst.html.ui.internal.edit.ui;x-internal:=true,
  org.eclipse.wst.html.ui.internal.editor;x-internal:=true,
+ org.eclipse.wst.html.ui.internal.handlers;x-internal:=true,
  org.eclipse.wst.html.ui.internal.preferences;x-internal:=true,
  org.eclipse.wst.html.ui.internal.preferences.ui;x-internal:=true,
  org.eclipse.wst.html.ui.internal.projection;x-internal:=true,
diff --git a/bundles/org.eclipse.wst.html.ui/plugin.properties b/bundles/org.eclipse.wst.html.ui/plugin.properties
index fd0a68a..c48a6b2 100644
--- a/bundles/org.eclipse.wst.html.ui/plugin.properties
+++ b/bundles/org.eclipse.wst.html.ui/plugin.properties
@@ -65,3 +65,8 @@
 preferenceKeywords.severities=html errors warnings ignore options severity severities suppress project specific projectspecific
 ##
 HTML_Source_target_name=HTML Source
+
+scope.structured.text.editor.html.name=Editing HTML Source
+scope.structured.text.editor.html.description=Editing HTML Source
+scope.structured.text.editor.html.occurrences.name=HTML Source Occurrences
+scope.structured.text.editor.html.occurrences.description=HTML Source Occurrences
diff --git a/bundles/org.eclipse.wst.html.ui/plugin.xml b/bundles/org.eclipse.wst.html.ui/plugin.xml
index 943ea6b..f10d6d2 100644
--- a/bundles/org.eclipse.wst.html.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.html.ui/plugin.xml
@@ -58,6 +58,10 @@
 			type="spellingregions"
 			value="XML_COMMENT_TEXT, XML_CONTENT"
 			target="org.eclipse.wst.html.core.htmlsource" />
+		<provisionalDefinition
+			type="activecontexts"
+			value="org.eclipse.wst.html.core.htmlsource, org.eclipse.wst.html.occurrences, org.eclipse.core.runtime.xml, org.eclipse.wst.xml.navigation, org.eclipse.wst.xml.comments, org.eclipse.wst.xml.selection"
+        	target="org.eclipse.wst.html.core.htmlsource" />
 	</extension>
 	<extension
 		point="org.eclipse.core.filebuffers.annotationModelCreation">
@@ -256,6 +260,23 @@
 			translations="$nl$/templates/htmldefault-templates.properties">
 		</include>
 	</extension>
+	
+	<!-- Define the HTML Contexts -->
+	<extension point="org.eclipse.ui.contexts">
+		<context
+			name="%scope.structured.text.editor.html.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.html.description"
+			id="org.eclipse.wst.html.core.htmlsource">
+		</context>
+		<context
+			name="%scope.structured.text.editor.html.occurrences.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.html.occurrences.description"
+			id="org.eclipse.wst.html.occurrences">
+		</context>
+	</extension>
+	
 	<!-- initialize html ui preferences -->
 	<extension point="org.eclipse.core.runtime.preferences">
 		<initializer
@@ -406,7 +427,7 @@
 	</extension>
 	
 	<extension point="org.eclipse.ui.editorActions">
-		<editorContribution
+	<!--	<editorContribution
 			id="org.eclipse.wst.html.core.htmlsource.source.editorActions"
 			targetID="org.eclipse.wst.html.core.htmlsource.source">
 			<action
@@ -480,7 +501,7 @@
 				class="org.eclipse.wst.sse.ui.internal.selection.StructuredSelectHistoryActionDelegate"
 				actionID="StructureSelectHistory">
 			</action>
-		</editorContribution>
+		</editorContribution>-->
         <editorContribution
             targetID="org.eclipse.wst.html.core.htmlsource.source"
             id="org.eclipse.wst.html.core.htmlsource.ruler.actions">
@@ -497,6 +518,40 @@
                id="org.eclipse.ui.texteditor.SelectRulerAction"/>
         </editorContribution>
 	</extension>
+	
+	<extension
+       point="org.eclipse.ui.handlers">
+       <handler
+             class="org.eclipse.wst.html.ui.internal.edit.ui.CleanupDocumentHandler"
+             commandId="org.eclipse.wst.sse.ui.cleanup.document">
+             <activeWhen>
+             	<reference
+                    definitionId="org.eclipse.wst.html.ui.htmlSourceContributions.definition">
+             	</reference>
+             </activeWhen>
+             <enabledWhen>
+             	<reference
+                    definitionId="org.eclipse.wst.html.ui.htmlSourceContributions.definition">
+             	</reference>
+             </enabledWhen>
+       </handler>
+       <handler
+             class="org.eclipse.wst.html.ui.internal.handlers.HTMLFindOccurrencesHandler"
+             commandId="org.eclipse.wst.sse.ui.search.find.occurrences">
+             <activeWhen>
+             	<reference
+                    definitionId="org.eclipse.wst.html.ui.occurrences">
+             	</reference>
+             </activeWhen>
+             <enabledWhen>
+             	<reference
+                    definitionId="org.eclipse.wst.html.ui.occurrences">
+             	</reference>
+             </enabledWhen>
+       </handler>
+       
+	</extension>
+	
 	<extension
 		point="org.eclipse.ui.workbench.texteditor.hyperlinkDetectorTargets">
 		<target
@@ -504,4 +559,24 @@
 			name="%HTML_Source_target_name">
 		</target>
 	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.html.ui.htmlSourceContributions.definition">
+            <with variable="activeContexts">
+	           <iterate operator="or">
+	              <equals value="org.eclipse.wst.html.core.htmlsource"/>
+	           </iterate>
+            </with>
+		</definition>
+	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.html.ui.occurrences">
+            <with variable="activeContexts">
+	           <iterate operator="or">
+	              <equals value="org.eclipse.wst.html.occurrences"/>
+	           </iterate>
+            </with>
+		</definition>
+	</extension>
 </plugin>
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/edit/ui/CleanupDocumentHandler.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/edit/ui/CleanupDocumentHandler.java
new file mode 100644
index 0000000..75c5267
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/edit/ui/CleanupDocumentHandler.java
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.ui.internal.edit.ui;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.wst.html.core.internal.cleanup.HTMLCleanupProcessorImpl;
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.cleanup.IStructuredCleanupProcessor;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.ui.internal.SSEUIMessages;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+
+public class CleanupDocumentHandler extends AbstractHandler implements IHandler {
+	private IStructuredCleanupProcessor fCleanupProcessor;
+
+	public void dispose() {
+		// nulling out just in case
+		fCleanupProcessor = null;
+	}
+
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		IEditorPart editorPart = HandlerUtil.getActiveEditor(event);
+		ITextEditor textEditor = null;
+		if (editorPart instanceof ITextEditor)
+			textEditor = (ITextEditor) editorPart;
+		else {
+			Object o = editorPart.getAdapter(ITextEditor.class);
+			if (o != null)
+				textEditor = (ITextEditor) o;
+		}
+		if (textEditor != null) {
+			final ITextEditor editor = textEditor;
+			CleanupDialogHTML cleanupDialog = new CleanupDialogHTML(editor.getSite().getShell());
+			cleanupDialog.setisXHTMLType(isXHTML(editor));
+			if (cleanupDialog.open() == Window.OK) {
+				// setup runnable
+				Runnable runnable = new Runnable() {
+					public void run() {
+						IStructuredCleanupProcessor cleanupProcessor = getCleanupProcessor();
+						if (cleanupProcessor != null) {
+							IStructuredModel model = null;
+							try {
+								model = StructuredModelManager.getModelManager().getExistingModelForEdit(editor.getDocumentProvider().getDocument(editor.getEditorInput()));
+								if (model != null)
+									cleanupProcessor.cleanupModel(model);
+							}
+							finally {
+								if (model != null)
+									model.releaseFromEdit();
+							}
+						}
+					}
+				};
+
+				// TODO: make independent of 'model'.
+				IStructuredModel model = null;
+				try {
+					model = StructuredModelManager.getModelManager().getExistingModelForEdit(editor.getDocumentProvider().getDocument(editor.getEditorInput()));
+					if (model != null) {
+						// begin recording
+						ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
+						model.beginRecording(this, SSEUIMessages.Cleanup_Document_UI_, SSEUIMessages.Cleanup_Document_UI_, selection.getOffset(), selection.getLength()); //$NON-NLS-1$ //$NON-NLS-2$
+
+						// tell the model that we are about to make a big
+						// model change
+						model.aboutToChangeModel();
+
+						// run
+						BusyIndicator.showWhile(editor.getEditorSite().getWorkbenchWindow().getShell().getDisplay(), runnable);
+					}
+				}
+				finally {
+					if (model != null) {
+						// tell the model that we are done with the big
+						// model
+						// change
+						model.changedModel();
+
+						// end recording
+						ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection();
+						model.endRecording(this, selection.getOffset(), selection.getLength());
+						model.releaseFromEdit();
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	IStructuredCleanupProcessor getCleanupProcessor() {
+		if (fCleanupProcessor == null)
+			fCleanupProcessor = new HTMLCleanupProcessorImpl();
+
+		return fCleanupProcessor;
+	}
+	
+	private boolean isXHTML(ITextEditor editor) {
+		boolean isxhtml = false;
+		if (editor != null) {
+			IDocument document = editor.getDocumentProvider().getDocument(editor.getEditorInput());
+			IStructuredModel model = null;
+			try {
+				model = StructuredModelManager.getModelManager().getExistingModelForRead(document);
+				if (model instanceof IDOMModel) {
+					IDOMDocument domDocument = ((IDOMModel) model).getDocument();
+					if (domDocument != null)
+						isxhtml = domDocument.isXMLType();
+				}
+			}
+			finally {
+				if (model != null) {
+					model.releaseFromRead();
+				}
+			}
+		}
+		return isxhtml;
+	}
+}
diff --git a/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/handlers/HTMLFindOccurrencesHandler.java b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/handlers/HTMLFindOccurrencesHandler.java
new file mode 100644
index 0000000..6446ad4
--- /dev/null
+++ b/bundles/org.eclipse.wst.html.ui/src/org/eclipse/wst/html/ui/internal/handlers/HTMLFindOccurrencesHandler.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.html.ui.internal.handlers;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.text.ITypedRegion;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.wst.html.ui.internal.search.HTMLFindOccurrencesProcessor;
+import org.eclipse.wst.sse.ui.internal.SSEUIMessages;
+import org.eclipse.wst.sse.ui.internal.search.FindOccurrencesProcessor;
+import org.eclipse.wst.sse.ui.internal.util.PlatformStatusLineUtil;
+
+public class HTMLFindOccurrencesHandler extends AbstractHandler implements IHandler {
+	private List fProcessors;
+
+	
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		IEditorPart editor = HandlerUtil.getActiveEditor(event);
+		ITextEditor textEditor = null;
+		boolean okay = false;
+		
+		if (editor instanceof ITextEditor)
+			textEditor = (ITextEditor) editor;
+		else {
+			Object o = editor.getAdapter(ITextEditor.class);
+			if (o != null)
+				textEditor = (ITextEditor) o;
+		}
+		
+		if (textEditor != null) {
+			IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
+			if (document != null) {
+				ITextSelection textSelection = getTextSelection(textEditor);
+				FindOccurrencesProcessor findOccurrenceProcessor = getProcessorForCurrentSelection(document, textSelection);
+				if (findOccurrenceProcessor != null) {
+					if (textEditor.getEditorInput() instanceof IFileEditorInput) {
+						IFile file = ((IFileEditorInput) textEditor.getEditorInput()).getFile();
+						okay = findOccurrenceProcessor.findOccurrences(document, textSelection, file);
+					}
+				}
+			}
+		}
+		if (okay) {
+			// clear status message
+			PlatformStatusLineUtil.clearStatusLine();
+		}
+		else {
+			String errorMessage = SSEUIMessages.FindOccurrencesActionProvider_0; //$NON-NLS-1$
+			PlatformStatusLineUtil.displayErrorMessage(errorMessage);
+			PlatformStatusLineUtil.addOneTimeClearListener();
+		}
+		return null;
+	}
+	
+	/**
+	 * Get the appropriate find occurrences processor
+	 * 
+	 * @param document -
+	 *            assumes not null
+	 * @param textSelection
+	 * @return
+	 */
+	private FindOccurrencesProcessor getProcessorForCurrentSelection(IDocument document, ITextSelection textSelection) {
+		// check if we have an action that's enabled on the current partition
+		ITypedRegion tr = getPartition(document, textSelection);
+		String partition = tr != null ? tr.getType() : ""; //$NON-NLS-1$
+
+		Iterator it = getProcessors().iterator();
+		FindOccurrencesProcessor action = null;
+		while (it.hasNext()) {
+			action = (FindOccurrencesProcessor) it.next();
+			// we just choose the first action that can handle the partition
+			if (action.enabledForParitition(partition))
+				return action;
+		}
+		return null;
+	}
+	
+	private ITypedRegion getPartition(IDocument document, ITextSelection textSelection) {
+		ITypedRegion region = null;
+		if (textSelection != null) {
+			try {
+				region = document.getPartition(textSelection.getOffset());
+			}
+			catch (BadLocationException e) {
+				region = null;
+			}
+		}
+		return region;
+	}
+	
+	private ITextSelection getTextSelection(ITextEditor textEditor) {
+		ITextSelection textSelection = null;
+		ISelection selection = textEditor.getSelectionProvider().getSelection();
+		if (selection instanceof ITextSelection && !selection.isEmpty()) {
+			textSelection = (ITextSelection) selection;
+		}
+		return textSelection;
+	}
+	
+	protected List getProcessors() {
+		if (fProcessors == null) {
+			fProcessors = new ArrayList();
+			HTMLFindOccurrencesProcessor htmlProcessor = new HTMLFindOccurrencesProcessor();
+			fProcessors.add(htmlProcessor);
+		}
+		return fProcessors;
+	}
+
+}
diff --git a/bundles/org.eclipse.wst.sse.ui/plugin.properties b/bundles/org.eclipse.wst.sse.ui/plugin.properties
index 017e4b1..20dbc0d 100644
--- a/bundles/org.eclipse.wst.sse.ui/plugin.properties
+++ b/bundles/org.eclipse.wst.sse.ui/plugin.properties
@@ -31,22 +31,30 @@
 ##########################################################################
 scope.structuredTextEditor.name=Editing in Structured Text Editors
 scope.structuredTextEditor.description=Editing in Structured Text Editors
-command.toggle.comment.name=&Toggle Comment
+command.toggle.comment.name=Toggle Comment
 command.toggle.comment.description=Toggle Comment
-command.add.block.comment.name=&Add Block Comment
+command.toggle.comment.mnemonic=T
+command.add.block.comment.name=Add Block Comment
 command.add.block.comment.description=Add Block Comment
-command.remove.block.comment.name=&Remove Block Comment
+command.add.block.comment.mnemonic=A
+command.remove.block.comment.name=Remove Block Comment
 command.remove.block.comment.description=Remove Block Comment
-command.cleanup.document.name=&Cleanup Document...
+command.remove.block.comment.mnemonic=R
+command.cleanup.document.name=Cleanup Document...
 command.cleanup.document.description=Cleanup document
+command.cleanup.document.mnemonic=C
 command.format.document.name=Format
 command.format.document.description=Format selection
+command.format.document.mnemonic=F
 command.format.active.elements.name=Format Active Elements
 command.format.active.elements.description=Format active elements
+command.format.active.elements.mnemonic=i
 command.open.file.from.source.name=Open Selection
 command.open.file.from.source.description=Open an editor on the selected link
-command.search.find.occurrences.name=&Occurrences in File
+command.open.file.from.source.mnemonic=O
+command.search.find.occurrences.name=Occurrences in File
 command.search.find.occurrences.description=Find occurrences of the selection in the file
+command.search.find.occurrences.mnemonic=O
 ActionDefinition.selectEnclosing.name=Select Enclosing Element
 ActionDefinition.selectEnclosing.description=Expand selection to include enclosing element
 ActionDefinition.selectNext.name=Select Next Element
@@ -57,7 +65,7 @@
 ActionDefinition.selectLast.description=Restore last selection
 ActionDefinition.quickFix.name=Quick Fix
 ActionDefinition.quickFix.description=Quick Fix
-ActionDefinition.gotoMatchingBracket.name= Go to Matching Bracket
+ActionDefinition.gotoMatchingBracket.name=Matching Bracket
 ActionDefinition.gotoMatchingBracket.description=Go to Matching Bracket
 
 
@@ -83,4 +91,13 @@
 #Spell_Check_tooltip=Spell Check
 preferenceKeywords.todo=case sensitive task tag todo xxx fix fixme project specific projectspecific comments
 preferenceKeywords.sseeditor=structured text editor source xml html jsp appearance highlight matching brackets report problems type validation inform unsupported content folding color hovers modifier
-ExpandSelectionTo=Expand Selection To
\ No newline at end of file
+ExpandSelectionTo=Expand Selection To
+SmartInsert_label=Sma&rt Insert Mode
+StructureSelectEnclosing_label=Enclosing Element
+StructureSelectEnclosing_tooltip=Expand selection to include enclosing element
+StructureSelectNext_label=Next Element
+StructureSelectNext_tooltip=Expand selection to include next sibling
+StructureSelectPrevious_label=Previous Element
+StructureSelectPrevious_tooltip=Expand selection to include previous sibling
+StructureSelectHistory_label=Restore Last Selection
+StructureSelectHistory_tooltip=Restore last selection
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.sse.ui/plugin.xml b/bundles/org.eclipse.wst.sse.ui/plugin.xml
index 221c028..a98dccf 100644
--- a/bundles/org.eclipse.wst.sse.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.sse.ui/plugin.xml
@@ -530,6 +530,162 @@
 	        </command>
         </menu>
      </menuContribution>
+		<menuContribution locationURI="menu:sourceMenuId?after=additions">
+			<command commandId="org.eclipse.wst.sse.ui.search.find.occurrences" id="OccurencesFile" style="push">
+			   <visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	    <menuContribution locationURI="menu:edit?after=additions">
+	       <command commandId="org.eclipse.ui.edit.text.toggleInsertMode" id="ToggleInsertMode" label="%SmartInsert_label" style="toggle">
+			   <visibleWhen checkEnabled="false">
+				   <reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+			   </visibleWhen>
+	       </command>	       
+		</menuContribution>
+	    <menuContribution locationURI="menu:expandSelectionToMenuId">
+	       <command commandId="org.eclipse.wst.sse.ui.structure.select.enclosing" id="org.eclipse.wst.sse.ui.structure.select.enclosing" label="%StructureSelectEnclosing_label" style="push">
+			   <visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+				</visibleWhen>
+	       </command>	       
+	       <command commandId="org.eclipse.wst.sse.ui.structure.select.next" id="org.eclipse.wst.sse.ui.structure.select.next" label="%StructureSelectNext_label" style="push">
+			   <visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+				</visibleWhen>
+	       </command>
+	       <command commandId="org.eclipse.wst.sse.ui.structure.select.previous" id="org.eclipse.wst.sse.ui.structure.select.previous" label="%StructureSelectPrevious_label" style="push">
+			   <visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+				</visibleWhen>
+	       </command>
+	       <command commandId="org.eclipse.wst.sse.ui.structure.select.last" id="org.eclipse.wst.sse.ui.structure.select.last" label="%StructureSelectHistory_label" style="push">
+			   <visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+				</visibleWhen>
+	       </command>
+		</menuContribution>
+		<menuContribution locationURI="menu:sourceMenuId?after=sourceBegin">
+			<command commandId="org.eclipse.wst.sse.ui.toggle.comment"
+			         id="ToggleComment"
+			         mnemonic="%command.toggle.comment.mnemonic"
+			         style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
+				</visibleWhen>
+			</command>
+			<command commandId="org.eclipse.wst.sse.ui.add.block.comment"
+			         id="AddBlockComment"
+			         mnemonic="%command.add.block.comment.mnemonic"
+			         style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
+				</visibleWhen>
+			</command>
+			<command commandId="org.eclipse.wst.sse.ui.remove.block.comment"
+			         id="RemoveBlockComment"
+			         mnemonic="%command.remove.block.comment.mnemonic"
+			         style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+
+		<menuContribution locationURI="menu:sourceMenuId?after=shiftBegin">
+			<command commandId="org.eclipse.ui.edit.text.shiftLeft"
+			         id="ShiftLeft"
+			         style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
+				</visibleWhen>
+			</command>
+			<command commandId="org.eclipse.ui.edit.text.shiftRight"
+                     id="ShiftRight"
+                     style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+
+		<menuContribution locationURI="menu:sourceMenuId?after=shiftEnd">
+	        <command
+		           commandId="org.eclipse.wst.sse.ui.cleanup.document"
+		           id="CleanupDocument"
+			       mnemonic="%command.cleanup.document.mnemonic"
+		           style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
+				</visibleWhen>
+		    </command>
+			<command 
+				commandId="org.eclipse.wst.sse.ui.format.document" 
+				id="FormatDocument" 
+			    mnemonic="%command.format.document.mnemonic"
+				style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
+				</visibleWhen>
+			</command>
+			<command 
+				commandId="org.eclipse.wst.sse.ui.format.active.elements" 
+				id="FormatElements" 
+				mnemonic="%command.format.active.elements.mnemonic"
+				style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+
+	     <menuContribution
+	           locationURI="popup:sourcePopupMenuId?after=sourceBegin">
+				<command commandId="org.eclipse.wst.sse.ui.toggle.comment" id="ToggleComment" style="push">
+					<visibleWhen checkEnabled="false">
+						<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+					</visibleWhen>
+				</command>
+				<command commandId="org.eclipse.wst.sse.ui.add.block.comment" id="AddBlockComment" style="push">
+					<visibleWhen checkEnabled="false">
+						<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+					</visibleWhen>
+				</command>
+				<command commandId="org.eclipse.wst.sse.ui.remove.block.comment" id="RemoveBlockComment" style="push">
+					<visibleWhen checkEnabled="false">
+						<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+					</visibleWhen>
+				</command>
+				<separator name="format" visible="true"></separator>
+				<command
+			           commandId="org.eclipse.wst.sse.ui.cleanup.document"
+			           id="CleanupDocument"
+			           style="push">
+					<visibleWhen checkEnabled="false">
+						<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+					</visibleWhen>
+			    </command>
+				<command 
+					commandId="org.eclipse.wst.sse.ui.format.document" 
+					id="FormatDocument" 
+					mnemonic="%command.format.document.mnemonic" 
+					style="push">
+						<visibleWhen checkEnabled="false">
+							<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+						</visibleWhen>
+				</command>
+				<command 
+					commandId="org.eclipse.wst.sse.ui.format.active.elements" 
+					id="FormatElements" 
+					mnemonic="%command.format.active.elements.mnemonic" 
+					style="push">
+						<visibleWhen checkEnabled="false">
+							<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+						</visibleWhen>
+				</command>
+				
+	     </menuContribution>		
 	</extension>
 	<extension
        point="org.eclipse.ui.commands">
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
index d8b50ae..ca6fc96 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
@@ -1250,6 +1250,38 @@
 			}
 		}
 	}
+	
+	private void activateContexts(IContextService service) {
+		if(service == null)
+			return;
+		
+		String[] definitions = getDefinitions(getConfigurationPoints());
+		
+		if(definitions != null) {
+			String[] contexts = null;
+			for(int i = 0; i < definitions.length; i++) {
+				contexts = StringUtils.unpack(definitions[i]);
+				for(int j = 0; j < contexts.length; j++)
+					service.activateContext(contexts[j].trim());
+			}
+		}
+		
+	}
+	
+	private String[] getDefinitions(String[] ids) {
+		ExtendedConfigurationBuilder builder = ExtendedConfigurationBuilder.getInstance();
+		String[] definitions = null;
+		
+		/* Iterate through the configuration ids until one is found that has
+		 * an activecontexts definition
+		 */
+		for(int i = 0; i < ids.length; i++) {
+			definitions = builder.getDefinitions("activecontexts", ids[i]); //$NON-NLS-1$
+			if(definitions != null && definitions.length > 0)
+				return definitions;
+		}
+		return null;
+	}
 
 	/*
 	 * (non-Javadoc)
@@ -3012,9 +3044,12 @@
 			updateEditorContextMenuId(contentType + EDITOR_CONTEXT_MENU_SUFFIX);
 			updateRulerContextMenuId(contentType + RULER_CONTEXT_MENU_SUFFIX);
 			updateHelpContextId(contentType + "_source_HelpId"); //$NON-NLS-1$
+			
+			/* Activate the contexts defined for this editor */
+			activateContexts((IContextService) getSite().getService(IContextService.class));
 		}
 	}
-
+	
 	private void updateEncodingMemento() {
 		boolean failed = false;
 		IStructuredModel internalModel = getInternalModel();
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/actions/ActionContributor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/actions/ActionContributor.java
index 59d7d01..6c34979 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/actions/ActionContributor.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/actions/ActionContributor.java
@@ -19,6 +19,7 @@
 
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.IStatusLineManager;
 import org.eclipse.jface.action.IToolBarManager;
@@ -29,6 +30,8 @@
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.editors.text.TextEditorActionContributor;
 import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.texteditor.ITextEditorActionConstants;
+import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
 import org.eclipse.ui.texteditor.ITextEditorExtension;
 import org.eclipse.ui.texteditor.RetargetTextEditorAction;
 import org.eclipse.wst.sse.ui.internal.ExtendedEditorActionBuilder;
@@ -85,7 +88,7 @@
 		super();
 
 		ResourceBundle resourceBundle = SSEUIMessages.getResourceBundle();
-/*
+
 		fCommandsSeparator = new Separator();
 
 		// edit commands
@@ -130,21 +133,21 @@
 
 		fNextAnnotation = new GotoAnnotationAction("Next_annotation", true); //$NON-NLS-1$
 		fNextAnnotation.setActionDefinitionId("org.eclipse.ui.navigate.next"); //$NON-NLS-1$
-*/
+
 		fGotoMatchingBracketAction = new RetargetTextEditorAction(resourceBundle, StructuredTextEditorActionConstants.ACTION_NAME_GOTO_MATCHING_BRACKET + StructuredTextEditorActionConstants.UNDERSCORE);
 		fGotoMatchingBracketAction.setActionDefinitionId(ActionDefinitionIds.GOTO_MATCHING_BRACKET);
 
 		// Read action extensions.
 		ExtendedEditorActionBuilder builder = new ExtendedEditorActionBuilder();
 		extendedContributor = builder.readActionExtensions(getExtensionIDs());
-/*
+
 		fMenuAdditionsGroupMarker = new GroupMarker(StructuredTextEditorActionConstants.GROUP_NAME_MENU_ADDITIONS);
 		fToolbarSeparator = new Separator();
 		fToolbarAdditionsGroupMarker = new GroupMarker(StructuredTextEditorActionConstants.GROUP_NAME_TOOLBAR_ADDITIONS);
 
 		fToggleInsertModeAction = new RetargetTextEditorAction(resourceBundle, "Editor.ToggleInsertMode.", IAction.AS_CHECK_BOX); //$NON-NLS-1$
 		fToggleInsertModeAction.setActionDefinitionId(ITextEditorActionDefinitionIds.TOGGLE_INSERT_MODE);
-*/
+
 		if (_showDebugStatus) {
 			fDebugStatusOffset = new OffsetStatusLineContributionItem(StructuredTextEditorActionConstants.STATUS_CATEGORY_OFFSET, true, 20);
 		}
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/handlers/FindOccurrencesHandler.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/handlers/FindOccurrencesHandler.java
new file mode 100644
index 0000000..1d09715
--- /dev/null
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/handlers/FindOccurrencesHandler.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.sse.ui.internal.handlers;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.jface.text.ITypedRegion;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.wst.sse.ui.internal.SSEUIMessages;
+import org.eclipse.wst.sse.ui.internal.search.FindOccurrencesProcessor;
+import org.eclipse.wst.sse.ui.internal.util.PlatformStatusLineUtil;
+
+public abstract class FindOccurrencesHandler extends AbstractHandler {
+	
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		IEditorPart editorPart = HandlerUtil.getActiveEditor(event);
+		ITextEditor textEditor = null;
+		if (editorPart instanceof ITextEditor)
+			textEditor = (ITextEditor) editorPart;
+		else {
+			Object o = editorPart.getAdapter(ITextEditor.class);
+			if (o != null)
+				textEditor = (ITextEditor) o;
+		}
+		boolean okay = false;
+		if (textEditor != null) {
+			IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
+			if (document != null) {
+				ITextSelection textSelection = getTextSelection(textEditor);
+				FindOccurrencesProcessor findOccurrenceProcessor = getProcessorForCurrentSelection(document, textSelection);
+				if (findOccurrenceProcessor != null) {
+					if (textEditor.getEditorInput() instanceof IFileEditorInput) {
+						IFile file = ((IFileEditorInput) textEditor.getEditorInput()).getFile();
+						okay = findOccurrenceProcessor.findOccurrences(document, textSelection, file);
+					}
+				}
+			}
+		}
+		if (okay) {
+			// clear status message
+			PlatformStatusLineUtil.clearStatusLine();
+		}
+		else {
+			String errorMessage = SSEUIMessages.FindOccurrencesActionProvider_0; //$NON-NLS-1$
+			PlatformStatusLineUtil.displayErrorMessage(errorMessage);
+			PlatformStatusLineUtil.addOneTimeClearListener();
+		}
+		return null;
+	}
+	
+	/**
+	 * Get the appropriate find occurrences processor
+	 * 
+	 * @param document -
+	 *            assumes not null
+	 * @param textSelection
+	 * @return
+	 */
+	private FindOccurrencesProcessor getProcessorForCurrentSelection(IDocument document, ITextSelection textSelection) {
+		// check if we have an action that's enabled on the current partition
+		ITypedRegion tr = getPartition(document, textSelection);
+		String partition = tr != null ? tr.getType() : ""; //$NON-NLS-1$
+
+		Iterator it = getProcessors().iterator();
+		FindOccurrencesProcessor action = null;
+		while (it.hasNext()) {
+			action = (FindOccurrencesProcessor) it.next();
+			// we just choose the first action that can handle the partition
+			if (action.enabledForParitition(partition))
+				return action;
+		}
+		return null;
+	}
+
+	private ITypedRegion getPartition(IDocument document, ITextSelection textSelection) {
+		ITypedRegion region = null;
+		if (textSelection != null) {
+			try {
+				region = document.getPartition(textSelection.getOffset());
+			}
+			catch (BadLocationException e) {
+				region = null;
+			}
+		}
+		return region;
+	}
+
+	private ITextSelection getTextSelection(ITextEditor textEditor) {
+		ITextSelection textSelection = null;
+		ISelection selection = textEditor.getSelectionProvider().getSelection();
+		if (selection instanceof ITextSelection && !selection.isEmpty()) {
+			textSelection = (ITextSelection) selection;
+		}
+		return textSelection;
+	}
+	
+	abstract protected List getProcessors();
+}
diff --git a/bundles/org.eclipse.wst.xml.ui/plugin.properties b/bundles/org.eclipse.wst.xml.ui/plugin.properties
index 11ce109..d521c58 100644
--- a/bundles/org.eclipse.wst.xml.ui/plugin.properties
+++ b/bundles/org.eclipse.wst.xml.ui/plugin.properties
@@ -68,15 +68,6 @@
 RemoveBlockComment_label=Remove Block Comment
 RemoveBlockComment_tooltip=Remove Block Comment
 FindOccurrences_label=Occurrences in File
-StructureSelectEnclosing_label=Enclosing Element
-StructureSelectEnclosing_tooltip=Expand selection to include enclosing element
-StructureSelectNext_label=Next Element
-StructureSelectNext_tooltip=Expand selection to include next sibling
-StructureSelectPrevious_label=Previous Element
-StructureSelectPrevious_tooltip=Expand selection to include previous sibling
-StructureSelectHistory_label=Restore Last Selection
-StructureSelectHistory_tooltip=Restore last selection
-SmartInsert_label=Sma&rt Insert Mode
 ##
 preferenceKeywords.files=editor xml creating saving files suffix specified encoding iana
 preferenceKeywords.source=editor xml source formatting line width split multiple attributes new clear blank indent tabs spaces size content assist automatically suggestions prompt characters inserted strategy lax strict grammar constraints inferred absence dtd schema
@@ -90,18 +81,37 @@
 XML_hyperlink=Tags And Attributes
 ##
 DesignMenu_name=&Design
-Format_mnemonic=F
-FormatElements_mnemonic=i
-ReloadDependencies_name=&Reload Dependencies
+ReloadDependencies_name=Reload Dependencies
 ReloadDependencies_description=Reload Dependencies
-Constraints_name=&Turn off Grammar Constraints
+ReloadDependencies_mnemonic=R
+Constraints_name=Turn off Grammar Constraints
 Constraints_description=Turn off grammar Constraints
+Constraints_mnemonic=T
 ExpandAll_name=Expand All
 CollapseAll_name=Collapse All
-ActionDefinition.nextSibling.name=Go to Next Sibling
+ActionDefinition.nextSibling.name=Next Sibling
 ActionDefinition.nextSibling.description=Go to Next Sibling
-ActionDefinition.previousSibling.name=Go to Previous Sibling
+ActionDefinition.previousSibling.name=Previous Sibling
 ActionDefinition.previousSibling.description=Go to Previous Sibling
-ActionDefinition.gotoMatchingTag.name=Go to Matching Tag
+ActionDefinition.gotoMatchingTag.name=Matching Tag
 ActionDefinition.gotoMatchingTag.description=Go to Matching Tag
-MatchingTagPreference.label=Matching Tags
\ No newline at end of file
+MatchingTagPreference.label=Matching Tags
+
+scope.structured.text.editor.xml.name=Editing XML Source
+scope.structured.text.editor.xml.description=Editing XML Source
+scope.structured.text.editor.xml.navigation.name=XML Source Navigation
+scope.structured.text.editor.xml.navigation.description=XML Source Navigation
+scope.structured.text.editor.xml.cleanup.name=XML Source Cleanup
+scope.structured.text.editor.xml.cleanup.description=XML Source Cleanup
+scope.structured.text.editor.xml.comments.name=XML Source Comments
+scope.structured.text.editor.xml.comments.description=XML Source Comments
+scope.structured.text.editor.xml.selection.name=XML Source Selection
+scope.structured.text.editor.xml.selection.description=XML Source Selection
+scope.structured.text.editor.xml.dependencies.name=XML Source Dependencies
+scope.structured.text.editor.xml.dependencies.description=XML Source Dependencies
+scope.structured.text.editor.xml.grammar.name=XML Source Grammar
+scope.structured.text.editor.xml.grammar.description=XML Source Grammar
+scope.structured.text.editor.xml.expand.name=XML Source Expand/Collapse
+scope.structured.text.editor.xml.expand.description=XML Source Expand/Collapse
+scope.structured.text.editor.xml.occurrences.name=XML Source Occurrences
+scope.structured.text.editor.xml.occurrences.description=XML Source Occurrences
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xml.ui/plugin.xml b/bundles/org.eclipse.wst.xml.ui/plugin.xml
index daee33d..7298380 100644
--- a/bundles/org.eclipse.wst.xml.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.xml.ui/plugin.xml
@@ -73,8 +73,69 @@
 			type="spellingregions"
 			value="XML_COMMENT_TEXT, XML_CONTENT, XML_DEFAULT"
 			target="org.eclipse.core.runtime.xml, org.eclipse.wst.xml.core.xmlsource" />
+		<provisionalDefinition
+			type="activecontexts"
+			value="org.eclipse.core.runtime.xml, org.eclipse.wst.xml.navigation, org.eclipse.wst.xml.cleanup, org.eclipse.wst.xml.comments, org.eclipse.wst.xml.selection, org.eclipse.wst.xml.dependencies, org.eclipse.wst.xml.grammar, org.eclipse.wst.xml.expand, org.eclipse.wst.xml.occurrences"
+        	target="org.eclipse.core.runtime.xml" />
 	</extension>
-
+	
+	<extension point="org.eclipse.ui.contexts">
+		<context
+			name="%scope.structured.text.editor.xml.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.xml.description"
+			id="org.eclipse.core.runtime.xml">
+		</context>
+		<context
+			name="%scope.structured.text.editor.xml.navigation.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.xml.navigation.description"
+			id="org.eclipse.wst.xml.navigation">
+		</context>
+		<context
+			name="%scope.structured.text.editor.xml.cleanup.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.xml.cleanup.description"
+			id="org.eclipse.wst.xml.cleanup">
+		</context>
+		<context
+			name="%scope.structured.text.editor.xml.comments.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.xml.comments.description"
+			id="org.eclipse.wst.xml.comments">
+		</context>
+		<context
+			name="%scope.structured.text.editor.xml.selection.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.xml.selection.description"
+			id="org.eclipse.wst.xml.selection">
+		</context>
+		<context
+			name="%scope.structured.text.editor.xml.dependencies.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.xml.dependencies.description"
+			id="org.eclipse.wst.xml.dependencies">
+		</context>
+		<context
+			name="%scope.structured.text.editor.xml.grammar.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.xml.grammar.description"
+			id="org.eclipse.wst.xml.grammar">
+		</context>
+		<context
+			name="%scope.structured.text.editor.xml.expand.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.xml.expand.description"
+			id="org.eclipse.wst.xml.expand">
+		</context>
+		<context
+			name="%scope.structured.text.editor.xml.occurrences.name"
+			parentId="org.eclipse.wst.sse.ui.structuredTextEditorScope"
+			description="%scope.structured.text.editor.xml.occurrences.description"
+			id="org.eclipse.wst.xml.occurrences">
+		</context>
+	</extension>
+	
 	<extension
 		point="org.eclipse.core.filebuffers.annotationModelCreation">
 		<factory
@@ -700,107 +761,10 @@
  -->
  
 	<extension point="org.eclipse.ui.menus">
-		<menuContribution locationURI="menu:sourceMenuId?after=sourceBegin">
-			<command commandId="org.eclipse.wst.sse.ui.toggle.comment"
-			         id="ToggleComment"
-			         style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
-				</visibleWhen>
-			</command>
-			<command commandId="org.eclipse.wst.sse.ui.add.block.comment"
-			         id="AddBlockComment"
-			         style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
-				</visibleWhen>
-			</command>
-			<command commandId="org.eclipse.wst.sse.ui.remove.block.comment"
-			         id="RemoveBlockComment"
-			         style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
-				</visibleWhen>
-			</command>
-		</menuContribution>
-
-		<menuContribution locationURI="menu:sourceMenuId?after=shiftBegin">
-			<command commandId="org.eclipse.ui.edit.text.shiftLeft"
-			         id="ShiftLeft"
-			         style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
-				</visibleWhen>
-			</command>
-			<command commandId="org.eclipse.ui.edit.text.shiftRight"
-                     id="ShiftRight"
-                     style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
-				</visibleWhen>
-			</command>
-		</menuContribution>
-
-		<menuContribution locationURI="menu:sourceMenuId?after=shiftEnd">
-	        <command
-		           commandId="org.eclipse.wst.sse.ui.cleanup.document"
-		           id="CleanupDocument"
-		           style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
-				</visibleWhen>
-		    </command>
-			<command commandId="org.eclipse.wst.sse.ui.format.document" id="FormatDocument" style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
-				</visibleWhen>
-			</command>
-			<command commandId="org.eclipse.wst.sse.ui.format.active.elements" id="FormatElements" style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
-				</visibleWhen>
-			</command>
-		</menuContribution>
 		<!-- Unable to contribute to Search menu at the moment due to bug 213385 -->
 <!--
 		<menuContribution locationURI="menu:org.eclipse.search.menu">
 -->
-		<menuContribution locationURI="menu:sourceMenuId?after=additions">
-			<command commandId="org.eclipse.wst.sse.ui.search.find.occurrences" id="OccurencesFile" style="push">
-			   <visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
-				</visibleWhen>
-			</command>
-		</menuContribution>
-	    <menuContribution locationURI="menu:edit?after=additions">
-	       <command commandId="org.eclipse.ui.edit.text.toggleInsertMode" id="ToggleInsertMode" label="%SmartInsert_label" style="toggle">
-			   <visibleWhen checkEnabled="false">
-				   <reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
-			   </visibleWhen>
-	       </command>	       
-		</menuContribution>
-	    <menuContribution locationURI="menu:expandSelectionToMenuId">
-	       <command commandId="org.eclipse.wst.sse.ui.structure.select.enclosing" id="org.eclipse.wst.sse.ui.structure.select.enclosing" label="%StructureSelectEnclosing_label" style="push">
-			   <visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
-				</visibleWhen>
-	       </command>	       
-	       <command commandId="org.eclipse.wst.sse.ui.structure.select.next" id="org.eclipse.wst.sse.ui.structure.select.next" label="%StructureSelectNext_label" style="push">
-			   <visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
-				</visibleWhen>
-	       </command>
-	       <command commandId="org.eclipse.wst.sse.ui.structure.select.previous" id="org.eclipse.wst.sse.ui.structure.select.previous" label="%StructureSelectPrevious_label" style="push">
-			   <visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
-				</visibleWhen>
-	       </command>
-	       <command commandId="org.eclipse.wst.sse.ui.structure.select.last" id="org.eclipse.wst.sse.ui.structure.select.last" label="%StructureSelectHistory_label" style="push">
-			   <visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
-				</visibleWhen>
-	       </command>
-		</menuContribution>
 	    <menuContribution locationURI="menu:goTo?after=matchingEnd">
 <!--		
 	       <command commandId="org.eclipse.wst.xml.ui.gotoMatchingTag" id="GoToMatchingTag" label="%GoToMatchingTag_label" style="push">
@@ -812,12 +776,12 @@
 	       <separator name="goToSiblingsBegin" visible="true"></separator>
 	       <command commandId="org.eclipse.wst.xml.ui.nextSibling" id="GoToNextSibling" label="%ActionDefinition.nextSibling.name" style="push">
 			   <visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+					<reference definitionId="org.eclipse.wst.xml.ui.navigation"></reference>
 				</visibleWhen>
 	       </command>
 	       <command commandId="org.eclipse.wst.xml.ui.previousSibling" id="GoToPreviousSibling" label="%ActionDefinition.previousSibling.name" style="push">
 			   <visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
+					<reference definitionId="org.eclipse.wst.xml.ui.navigation"></reference>
 				</visibleWhen>
 	       </command>
 	       <separator name="goToSiblingsEnd" visible="false"></separator>
@@ -834,10 +798,11 @@
                  commandId="org.eclipse.wst.xml.ui.disable.grammar.constraints"
                  icon="icons/full/etool16/constrainon.gif"
                  id="ToggleGrammarConstraints"
+                 mnemonic="%Constraints_mnemonic"
                  style="push">
                  <visibleWhen checkEnabled="false">
-                    <and>
-                       <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+                	 <and>
+                       <reference definitionId="org.eclipse.wst.xml.ui.grammar"/>
                        <not>
                          <reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
                        </not>
@@ -848,10 +813,11 @@
                  commandId="org.eclipse.wst.xml.ui.reload.dependecies"
                  icon="icons/full/etool16/rldgrmr.gif"
                  id="ReloadDependencies"
+                 mnemonic="%ReloadDependencies_mnemonic"
                  style="push">
                  <visibleWhen checkEnabled="false">
-                    <and>
-                       <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+                	<and>
+                       <reference definitionId="org.eclipse.wst.xml.ui.dependencies"/>
                        <not>
                          <reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
                        </not>
@@ -870,7 +836,7 @@
                  style="push">
                  <visibleWhen checkEnabled="false">
                     <and>
-                       <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+                       <reference definitionId="org.eclipse.wst.xml.ui.expand"/>
                        <not>
                          <reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
                        </not>
@@ -884,7 +850,7 @@
                  style="push">
                  <visibleWhen checkEnabled="false">
                     <and>
-                       <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+                       <reference definitionId="org.eclipse.wst.xml.ui.expand"/>
                        <not>
                          <reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"/>
                        </not>
@@ -902,43 +868,6 @@
            </separator>
         </menu>
      </menuContribution>
-     <menuContribution
-           locationURI="popup:sourcePopupMenuId?after=sourceBegin">
-			<command commandId="org.eclipse.wst.sse.ui.toggle.comment" id="ToggleComment" style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
-				</visibleWhen>
-			</command>
-			<command commandId="org.eclipse.wst.sse.ui.add.block.comment" id="AddBlockComment" style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
-				</visibleWhen>
-			</command>
-			<command commandId="org.eclipse.wst.sse.ui.remove.block.comment" id="RemoveBlockComment" style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
-				</visibleWhen>
-			</command>
-			<separator name="format" visible="true"></separator>
-			<command
-		           commandId="org.eclipse.wst.sse.ui.cleanup.document"
-		           id="CleanupDocument"
-		           style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"></reference>
-				</visibleWhen>
-		    </command>
-			<command commandId="org.eclipse.wst.sse.ui.format.document" id="FormatDocument" mnemonic="%Format_mnemonic" style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"></reference>
-				</visibleWhen>
-			</command>
-			<command commandId="org.eclipse.wst.sse.ui.format.active.elements" id="FormatElements" mnemonic="%FormatElements_mnemonic" style="push">
-				<visibleWhen checkEnabled="false">
-					<reference definitionId="org.eclipse.wst.sse.ui.sseActiveContext.definition"></reference>
-				</visibleWhen>
-			</command>
-     </menuContribution>
      		
      <menuContribution
            locationURI="popup:org.eclipse.ui.popup.any?after=additions">
@@ -992,7 +921,7 @@
 	           <visibleWhen
 	                 checkEnabled="false">
 	              <reference
-	                    definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition">
+	                    definitionId="org.eclipse.wst.xml.ui.grammar">
 	              </reference>
 	           </visibleWhen>
            </command>
@@ -1004,7 +933,7 @@
 	           <visibleWhen
 	                 checkEnabled="false">
 	              <reference
-	                    definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition">
+	                    definitionId="org.eclipse.wst.xml.ui.dependencies">
 	              </reference>
 	           </visibleWhen>
            </command>
@@ -1020,7 +949,7 @@
 	           <visibleWhen
 	                 checkEnabled="false">
 	              <reference
-	                    definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition">
+	                    definitionId="org.eclipse.wst.xml.ui.expand">
 	              </reference>
 	           </visibleWhen>
            </command>
@@ -1029,10 +958,10 @@
                  icon="icons/full/etool16/collapse_all.gif"
                  id="CollapseAll"
                  style="push">
-	           <visibleWhen
+	             <visibleWhen
 	                 checkEnabled="false">
 	              <reference
-	                    definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition">
+	                    definitionId="org.eclipse.wst.xml.ui.expand">
 	              </reference>
 	           </visibleWhen>
            </command>
@@ -1042,108 +971,209 @@
 	
 	<extension point="org.eclipse.core.expressions.definitions">
 		<definition id="org.eclipse.wst.xml.ui.xmlSourceContributions.definition">
+            <with variable="activeContexts">
+	           <iterate operator="or">
+	              <equals value="org.eclipse.core.runtime.xml"/>
+	           </iterate>
+            </with>
+		</definition>
+	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.xml.ui.core">
+			<with variable="activeContexts">
+				<iterate operator="or">
+					<equals value="org.eclipse.core.runtime.xml"/>
+				</iterate>
+			</with>
+		</definition>
+	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.xml.ui.occurrences">
+            <with variable="activeContexts">
+	           <iterate operator="or">
+	              <equals value="org.eclipse.wst.xml.occurrences"/>
+	           </iterate>
+            </with>
+		</definition>
+	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.xml.ui.comments">
+			<with variable="activeContexts">
+				<iterate operator="or">
+					<equals value="org.eclipse.wst.xml.comments"/>
+				</iterate>
+			</with>
+		</definition>
+	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.xml.ui.cleanup">
+			<with variable="activeContexts">
+				<iterate operator="or">
+					<equals value="org.eclipse.wst.xml.cleanup"/>
+				</iterate>
+			</with>
+		</definition>
+	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.xml.ui.navigation">
+			<with variable="activeContexts">
+				<iterate operator="or">
+					<equals value="org.eclipse.wst.xml.navigation"/>
+				</iterate>
+			</with>
+		</definition>
+	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.xml.ui.selection">
+			<with variable="activeContexts">
+				<iterate operator="or">
+					<equals value="org.eclipse.wst.xml.selection"/>
+				</iterate>
+			</with>
+		</definition>
+	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.xml.ui.dependencies">
 			<or>
 				<with variable="activeEditorId">
 					<equals value="org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart"></equals>
 				</with>
-	            <with variable="activeContexts">
-		           <iterate operator="or">
-		              <equals value="org.eclipse.core.runtime.xml"/>
-		           </iterate>
-	            </with>
+				<with variable="activeContexts">
+					<iterate operator="or">
+						<equals value="org.eclipse.wst.xml.dependencies"/>
+					</iterate>
+				</with>
 			</or>
 		</definition>
 	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.xml.ui.grammar">
+			<or>
+				<with variable="activeEditorId">
+					<equals value="org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart"></equals>
+				</with>
+				<with variable="activeContexts">
+					<iterate operator="or">
+						<equals value="org.eclipse.wst.xml.grammar"/>
+					</iterate>
+				</with>
+			</or>
+		</definition>
+	</extension>
+	
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.wst.xml.ui.expand">
+			<or>
+				<with variable="activeEditorId">
+					<equals value="org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart"></equals>
+				</with>
+				<with variable="activeContexts">
+					<iterate operator="or">
+						<equals value="org.eclipse.wst.xml.expand"/>
+					</iterate>
+				</with>
+			</or>
+		</definition>
+	</extension>
+	
     <extension
        point="org.eclipse.ui.handlers">
        <handler
              class="org.eclipse.wst.xml.ui.internal.handlers.CleanupdocumentHandler"
              commandId="org.eclipse.wst.sse.ui.cleanup.document">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+			 <reference definitionId="org.eclipse.wst.xml.ui.cleanup"/>
           </activeWhen>
           <enabledWhen>
-             <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+             <reference definitionId="org.eclipse.wst.xml.ui.cleanup"/>
           </enabledWhen>
        </handler>
        <handler
              class="org.eclipse.wst.xml.ui.internal.handlers.ToggleCommentHandler"
              commandId="org.eclipse.wst.sse.ui.toggle.comment">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.comments"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.comments"/>
           </enabledWhen>
        </handler>
        <handler
              class="org.eclipse.wst.xml.ui.internal.handlers.AddBlockCommentHandler"
              commandId="org.eclipse.wst.sse.ui.add.block.comment">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.comments"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.comments"/>
           </enabledWhen>
        </handler>
        <handler
              class="org.eclipse.wst.xml.ui.internal.handlers.RemoveBlockCommentHandler"
              commandId="org.eclipse.wst.sse.ui.remove.block.comment">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.comments"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.comments"/>
           </enabledWhen>
        </handler>
        <handler
              class="org.eclipse.wst.xml.ui.internal.handlers.StructuredSelectEnclosingXMLHandler"
              commandId="org.eclipse.wst.sse.ui.structure.select.enclosing">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.selection"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.selection"/>
           </enabledWhen>
        </handler>
        <handler
              class="org.eclipse.wst.xml.ui.internal.handlers.StructuredSelectNextXMLHandler"
              commandId="org.eclipse.wst.sse.ui.structure.select.next">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.selection"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.selection"/>
           </enabledWhen>
        </handler>
        <handler
              class="org.eclipse.wst.xml.ui.internal.handlers.StructuredSelectPreviousXMLHandler"
              commandId="org.eclipse.wst.sse.ui.structure.select.previous">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.selection"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.selection"/>
           </enabledWhen>
        </handler>
        <handler
              class="org.eclipse.wst.sse.ui.internal.handlers.StructuredSelectHistoryHandler"
              commandId="org.eclipse.wst.sse.ui.structure.select.last">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.selection"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.selection"/>
           </enabledWhen>
        </handler>
        <handler
              class="org.eclipse.wst.xml.ui.internal.handlers.XMLFindOccurencesHandler"
              commandId="org.eclipse.wst.sse.ui.search.find.occurrences">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.occurrences"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.occurrences"/>
           </enabledWhen>
        </handler>
 <!--
@@ -1151,10 +1181,10 @@
              class="org.eclipse.wst.xml.ui.internal.handlers.GoToMatchingTagHandler"
              commandId="org.eclipse.wst.xml.ui.gotoMatchingTag">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.navigation"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.navigation"/>
           </enabledWhen>
        </handler>
 -->
@@ -1162,40 +1192,40 @@
              class="org.eclipse.wst.xml.ui.internal.handlers.NextSiblingNavigationHandler"
              commandId="org.eclipse.wst.xml.ui.nextSibling">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.navigation"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.navigation"/>
           </enabledWhen>
        </handler>
        <handler
              class="org.eclipse.wst.xml.ui.internal.handlers.PreviousSiblingNavigationHandler"
              commandId="org.eclipse.wst.xml.ui.previousSibling">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.navigation"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.navigation"/>
           </enabledWhen>
        </handler>
        <handler
              class="org.eclipse.wst.xml.ui.internal.handlers.ReloadDependenciesHandler"
              commandId="org.eclipse.wst.xml.ui.reload.dependecies">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.dependencies"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.dependencies"/>
           </enabledWhen>
        </handler>
        <handler
              class="org.eclipse.wst.xml.ui.internal.handlers.ToggleEditModeHandler"
              commandId="org.eclipse.wst.xml.ui.disable.grammar.constraints">
           <activeWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.grammar"/>
           </activeWhen>
           <enabledWhen>
-              <reference definitionId="org.eclipse.wst.xml.ui.xmlSourceContributions.definition"/>
+              <reference definitionId="org.eclipse.wst.xml.ui.grammar"/>
           </enabledWhen>
        </handler>
        <handler
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/actions/ActionContributorXML.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/actions/ActionContributorXML.java
index 3f3d822..c4f8285 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/actions/ActionContributorXML.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/actions/ActionContributorXML.java
@@ -16,8 +16,6 @@
 
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
 import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchActionConstants;
@@ -44,6 +42,8 @@
  */
 public class ActionContributorXML extends ActionContributor {
 	private static final String[] EDITOR_IDS = {"org.eclipse.core.runtime.xml.source", "org.eclipse.core.runtime.xml.source2", "org.eclipse.wst.sse.ui.StructuredTextEditor"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+	private static final String GO_TO_MATCHING_TAG_ID = "org.eclipse.wst.xml.ui.gotoMatchingTag"; //$NON-NLS-1$
+	
 	protected RetargetTextEditorAction fCleanupDocument = null;
 	protected RetargetTextEditorAction fComment = null;
 	protected RetargetTextEditorAction fContentAssist = null;
@@ -80,10 +80,31 @@
 		fFindOccurrences = new RetargetTextEditorAction(resourceBundle, ""); //$NON-NLS-1$
 		fFindOccurrences.setActionDefinitionId(ActionDefinitionIds.FIND_OCCURRENCES);
 
-		fGoToMatchingTagAction = new GoToMatchingTagAction(resourceBundle, "gotoMatchingTag_", null);
+		fGoToMatchingTagAction = new GoToMatchingTagAction(resourceBundle, "gotoMatchingTag_", null); //$NON-NLS-1$
+		fGoToMatchingTagAction.setActionDefinitionId(GO_TO_MATCHING_TAG_ID);
+		fGoToMatchingTagAction.setId(GO_TO_MATCHING_TAG_ID);
+	}
+	
+	/**
+	 * @see org.eclipse.ui.part.EditorActionBarContributor#contributeToMenu(IMenuManager)
+	 */
+	public void contributeToMenu(IMenuManager menu) {
+		// navigate commands
+		IMenuManager navigateMenu = menu.findMenuUsingPath(IWorkbenchActionConstants.M_NAVIGATE);
+		if (navigateMenu != null) {
+			navigateMenu.appendToGroup(IWorkbenchActionConstants.OPEN_EXT, fCommandsSeparator);
+			navigateMenu.appendToGroup(IWorkbenchActionConstants.OPEN_EXT, fOpenFileAction);
+
+			IMenuManager gotoGroup = navigateMenu.findMenuUsingPath(IWorkbenchActionConstants.GO_TO);
+			if (gotoGroup != null) {
+				gotoGroup.appendToGroup("matchingBegin", fGoToMatchingTagAction); //$NON-NLS-1$
+			}
+		}
+		super.contributeToMenu(menu);
 	}
 
 	protected void addToMenu(IMenuManager menu) {
+/*
 		// edit commands
 		IMenuManager editMenu = menu.findMenuUsingPath(IWorkbenchActionConstants.M_EDIT);
 		if (editMenu != null) {
@@ -128,6 +149,7 @@
 				gotoGroup.add(new Separator());
 			}
 		}
+*/
 	}
 
 	/*
@@ -173,11 +195,8 @@
 		fFindOccurrences.setAction(getAction(textEditor, StructuredTextEditorActionConstants.ACTION_NAME_FIND_OCCURRENCES));
 
 		fGoToMatchingTagAction.setEditor(textEditor);
-
-		if (actionBars != null) {
-			fGoToMatchingTagAction.setActionDefinitionId("org.eclipse.wst.xml.ui.gotoMatchingTag");
-			actionBars.setGlobalActionHandler("org.eclipse.wst.xml.ui.gotoMatchingTag", fGoToMatchingTagAction);
-			actionBars.updateActionBars();
+		if (textEditor != null) {
+			textEditor.setAction(GO_TO_MATCHING_TAG_ID, fGoToMatchingTagAction);
 		}
 	}
 
diff --git a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/handlers/ToggleEditModeHandler.java b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/handlers/ToggleEditModeHandler.java
index 249854e..85e4f59 100644
--- a/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/handlers/ToggleEditModeHandler.java
+++ b/bundles/org.eclipse.wst.xml.ui/src/org/eclipse/wst/xml/ui/internal/handlers/ToggleEditModeHandler.java
@@ -125,12 +125,12 @@
 	public void setAppearanceForEditMode(int editMode, UIElement element) {
 		if (editMode == ModelQuery.EDIT_MODE_CONSTRAINED_STRICT) {
 			element.setTooltip(XMLEditorMessages.XMLTableTreeActionBarContributor_3);
-			element.setText(XMLEditorMessages.XMLTableTreeActionBarContributor_4);
+			element.setText(XMLEditorMessages.XMLTableTreeActionBarContributor_3);
 			element.setIcon(onImage);
 		}
 		else {
 			element.setTooltip(XMLEditorMessages.XMLTableTreeActionBarContributor_5);
-			element.setText(XMLEditorMessages.XMLTableTreeActionBarContributor_6);
+			element.setText(XMLEditorMessages.XMLTableTreeActionBarContributor_5);
 			element.setIcon(offImage);
 		}
 	}