[206635] Key bindings
diff --git a/plugins/org.eclipse.wst.server.ui/plugin.xml b/plugins/org.eclipse.wst.server.ui/plugin.xml
index 60ea462..3e5c984 100644
--- a/plugins/org.eclipse.wst.server.ui/plugin.xml
+++ b/plugins/org.eclipse.wst.server.ui/plugin.xml
@@ -380,6 +380,12 @@
     categoryId="org.eclipse.wst.server.ui"
     defaultHandler="org.eclipse.wst.server.ui.internal.view.servers.ServerActionHandler"/>
   <command
+    id="org.eclipse.wst.server.stop"
+    name="%actionStop"
+    description="%actionStopDescription"
+    categoryId="org.eclipse.wst.server.ui"
+    defaultHandler="org.eclipse.wst.server.ui.internal.view.servers.ServerActionHandler"/>
+  <command
     id="org.eclipse.wst.server.publish"
     name="%actionPublish"
     description="%actionPublishDescription"
@@ -425,6 +431,11 @@
     commandId="org.eclipse.wst.server.debug"
     schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
   <key
+    sequence="M1+M3+S"
+    contextId="org.eclipse.ui.serverViewScope"
+    commandId="org.eclipse.wst.server.stop"
+    schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
+  <key
     sequence="M1+M3+P"
     contextId="org.eclipse.ui.serverViewScope"
     commandId="org.eclipse.wst.server.publish"
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/ServerActionHandler.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/ServerActionHandler.java
index a373a20..656553a 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/ServerActionHandler.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/ServerActionHandler.java
@@ -47,10 +47,15 @@
 			mode = ILaunchManager.DEBUG_MODE;
 		else if (id.endsWith("profile"))
 			mode = ILaunchManager.PROFILE_MODE;
+		else if (id.endsWith("stop"))
+			mode = null;
 		
 		if (obj instanceof IServer) {
 			IServer server = (IServer) obj;
-			StartAction.start(server, mode, HandlerUtil.getActiveShell(event));
+			if (mode == null)
+				StopAction.stop(server, HandlerUtil.getActiveShell(event));
+			else
+				StartAction.start(server, mode, HandlerUtil.getActiveShell(event));
 			return null;
 		}
 		
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/ServersView.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/ServersView.java
index de6e4f8..dfcbaa0 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/ServersView.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/ServersView.java
@@ -284,6 +284,7 @@
 		
 		// create the stop action
 		actions[3] = new StopAction(shell, provider);
+		actionBars.setGlobalActionHandler("org.eclipse.wst.server.stop", actions[3]);
 		
 		// create the publish actions
 		actions[4] = new PublishAction(shell, provider);
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/StopAction.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/StopAction.java
index 0fbf4ec..307e8bf 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/StopAction.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/view/servers/StopAction.java
@@ -28,6 +28,7 @@
 		setImageDescriptor(ImageResource.getImageDescriptor(ImageResource.IMG_ELCL_STOP));
 		setHoverImageDescriptor(ImageResource.getImageDescriptor(ImageResource.IMG_CLCL_STOP));
 		setDisabledImageDescriptor(ImageResource.getImageDescriptor(ImageResource.IMG_DLCL_STOP));
+		setActionDefinitionId("org.eclipse.wst.server.stop");
 		try {
 			selectionChanged((IStructuredSelection) selectionProvider.getSelection());
 		} catch (Exception e) {
@@ -50,7 +51,11 @@
 	 * Perform action on this server.
 	 * @param server a server
 	 */
-	public void perform(final IServer server) {
+	public void perform(IServer server) {
+		stop(server, shell);
+	}
+
+	public static void stop(IServer server, Shell shell) {
 		ServerUIPlugin.addTerminationWatch(shell, server, ServerUIPlugin.STOP);
 		
 		StopServerJob stopJob = new StopServerJob(server);