[225020] Launchable delegate ordering fix
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java
index 89b2ab5..60e638b 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/internal/ServerPlugin.java
@@ -540,7 +540,7 @@
 			}
 		}
 		
-		// sort by index to put lower numbers first in order
+		// sort by priority to put higher numbers first
 		size = list.size();
 		for (int i = 0; i < size-1; i++) {
 			for (int j = i+1; j < size; j++) {
@@ -577,7 +577,7 @@
 			}
 		}
 		
-		// sort by index to put lower numbers first in order
+		// sort by priority to put higher numbers first
 		size = list.size();
 		for (int i = 0; i < size-1; i++) {
 			for (int j = i+1; j < size; j++) {
diff --git a/plugins/org.eclipse.wst.server.ui/plugin.xml b/plugins/org.eclipse.wst.server.ui/plugin.xml
index d916e02..f181339 100644
--- a/plugins/org.eclipse.wst.server.ui/plugin.xml
+++ b/plugins/org.eclipse.wst.server.ui/plugin.xml
@@ -270,13 +270,6 @@
     class="org.eclipse.wst.server.ui.internal.WebLaunchableClient"/>
 </extension>
 
-<extension point="org.eclipse.ui.perspectiveExtensions">
-  <perspectiveExtension
-    targetID="org.eclipse.wst.server.ui.perspective">
-    <actionSet id="org.eclipse.wst.webbrowser.actionSet"/>
-  </perspectiveExtension>
-</extension>
-
 <extension point="org.eclipse.wst.server.core.internalStartup">
   <startup
     id="org.eclipse.wst.server.ui.startup"
@@ -501,8 +494,9 @@
 
 <extension point="org.eclipse.wst.server.core.launchableAdapters">
   <launchableAdapter
-    class="org.eclipse.wst.server.ui.internal.ServerUIPlugin$DefaultLaunchableAdapter"
-    id="org.eclipse.wst.server.ui.launchable.adapter.default"/>
+        class="org.eclipse.wst.server.ui.internal.ServerUIPlugin$DefaultLaunchableAdapter"
+        id="org.eclipse.wst.server.ui.launchable.adapter.default"
+        priority="-999999"/>
 </extension>
 
 </plugin>
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/LaunchClientJob.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/LaunchClientJob.java
index e7d2ffa..4de77ac 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/LaunchClientJob.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/LaunchClientJob.java
@@ -73,7 +73,7 @@
 		// display client on UI thread
 		Display.getDefault().asyncExec(new Runnable() {
 			public void run() {
-				Trace.trace(Trace.FINEST, "Attempting to load client: " + client);
+				Trace.trace(Trace.FINEST, "Attempting to load client: " + client.getId());
 				try {
 					Object launchable = launchableAdapter.getLaunchable(server, moduleArtifact);
 					IStatus status = client.launch(server, launchable, launchMode, server.getLaunch());
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ServerUIPlugin.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ServerUIPlugin.java
index f5aa057..f254a13 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ServerUIPlugin.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ServerUIPlugin.java
@@ -73,6 +73,13 @@
 	public static final byte STOP = 1;
 	//public static final byte RESTART = 2;
 
+	public static class DefaultLaunchableAdapter extends LaunchableAdapterDelegate {
+		public static final String ID = "org.eclipse.wst.server.ui.launchable.adapter.default";
+		public Object getLaunchable(IServer server, IModuleArtifact moduleArtifact) {
+			return "launchable";
+		}
+	}
+
 	// singleton instance of this class
 	private static ServerUIPlugin singleton;
 
@@ -480,9 +487,13 @@
 				try {
 					IWorkbench workbench = ServerUIPlugin.getInstance().getWorkbench();
 					IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
-	
+					if (workbenchWindow == null) {
+						Trace.trace(Trace.FINER, "No active workbench window");
+						return;
+					}
+					
 					IWorkbenchPage page = workbenchWindow.getActivePage();
-	
+					
 					IViewPart view2 = page.findView(VIEW_ID);
 					
 					if (view2 != null) {
@@ -496,7 +507,7 @@
 					} else
 						page.showView(VIEW_ID);
 				} catch (Exception e) {
-					Trace.trace(Trace.SEVERE, "Error opening TCP/IP view", e);
+					Trace.trace(Trace.SEVERE, "Error opening Servers view", e);
 				}
 			}
 		});
@@ -858,9 +869,6 @@
 	}
 
 	public static Object[] getLaunchableAdapter(IServer server, IModuleArtifact moduleArtifact) throws CoreException {
-		ILaunchableAdapter launchableAdapter = null;
-		Object launchable = null;
-		
 		ILaunchableAdapter[] adapters = ServerPlugin.getLaunchableAdapters();
 		if (adapters != null) {
 			int size2 = adapters.length;
@@ -870,38 +878,24 @@
 				try {
 					Object launchable2 = adapter.getLaunchable(server, moduleArtifact);
 					Trace.trace(Trace.FINEST, "adapter= " + adapter + ", launchable= " + launchable2);
-					if (launchable2 != null) {
-						launchableAdapter = adapter;
-						launchable = launchable2;
-					}
+					if (launchable2 != null)
+						return new Object[] { adapter, launchable2 };
 				} catch (CoreException ce) {
 					lastStatus = ce.getStatus();
 				} catch (Exception e) {
 					Trace.trace(Trace.SEVERE, "Error in launchable adapter", e);
 				}
 			}
-			if (launchable == null && lastStatus != null)
+			if (lastStatus != null)
 				throw new CoreException(lastStatus);
 		}
-		if (launchable == null) {
-			launchableAdapter = ServerPlugin.findLaunchableAdapter(DefaultLaunchableAdapter.ID);
-			
-			try {
-				launchable = launchableAdapter.getLaunchable(server, moduleArtifact);
-			} catch (CoreException ce) {
-				// ignore
-			}
-		}
+		
+		// backup
+		ILaunchableAdapter launchableAdapter = ServerPlugin.findLaunchableAdapter(DefaultLaunchableAdapter.ID);
+		Object launchable = launchableAdapter.getLaunchable(server, moduleArtifact);
 		return new Object[] { launchableAdapter, launchable };
 	}
 
-	public static class DefaultLaunchableAdapter extends LaunchableAdapterDelegate {
-		public static final String ID = "org.eclipse.wst.server.ui.launchable.adapter.default";
-		public Object getLaunchable(IServer server, IModuleArtifact moduleArtifact) {
-			return "launchable";
-		}
-	}
-
 	public static Object[] adaptLabelChangeObjects(Object[] obj) {
 		if (obj == null)
 			return obj;
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerActionDelegate.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerActionDelegate.java
index 0d577b1..35b8265 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerActionDelegate.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerActionDelegate.java
@@ -291,31 +291,31 @@
 			client = wizard.getSelectedClient();
 			launchableAdapter = wizard.getLaunchableAdapter();
 		}
-			
+		
 		// if there is no client, use a dummy
-		if (client == null){		
-				client = new IClient() {
-					public String getDescription() {
-						return Messages.clientDefaultDescription;
-					}
+		if (client == null) {		
+			client = new IClient() {
+				public String getDescription() {
+					return Messages.clientDefaultDescription;
+				}
 
-					public String getId() {
-						return "org.eclipse.wsth.server.ui.client.default";
-					}
+				public String getId() {
+					return "org.eclipse.wst.server.ui.client.default";
+				}
 
-					public String getName() {
-						return Messages.clientDefaultName;
-					}
+				public String getName() {
+					return Messages.clientDefaultName;
+				}
 
-					public IStatus launch(IServer server3, Object launchable2, String launchMode3, ILaunch launch) {
-						return Status.OK_STATUS;
-					}
+				public IStatus launch(IServer server3, Object launchable2, String launchMode3, ILaunch launch) {
+					return Status.OK_STATUS;
+				}
 
-					public boolean supports(IServer server3, Object launchable2, String launchMode3) {
-						return true;
-					}
-				};
-		}		
+				public boolean supports(IServer server3, Object launchable2, String launchMode3) {
+					return true;
+				}
+			};
+		}
 		
 		if (moduleArtifact instanceof ModuleArtifactDelegate) {
 			boolean canLoad = false;