Author: rob.stryker(a)jboss.com
Date: 2008-01-24 17:22:42 -0500 (Thu, 24 Jan 2008)
New Revision: 5958
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/AbstractServerActionDelegate.java
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/RefreshServerActionDelegate.java
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/RunServerActionDelegate.java
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/SelectServerActionDelegate.java
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/StopServerActionDelegate.java
Log:
JBIDE-1459 - Start / Stop ignored normal WTP conventions. Classes have *all* been modified
to use WTP Server-related Jobs instead of custom jobs, to keep this UI in sync with the
Servers view / JBoss Servers View methodology.
Also, much code in these classes was Tomcat specific. That has all been removed.
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/AbstractServerActionDelegate.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/AbstractServerActionDelegate.java 2008-01-24
22:09:13 UTC (rev 5957)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/AbstractServerActionDelegate.java 2008-01-24
22:22:42 UTC (rev 5958)
@@ -10,15 +10,20 @@
******************************************************************************/
package org.jboss.tools.jst.web.ui.action.server;
-import java.util.*;
+import java.util.HashMap;
+import java.util.Map;
+
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.*;
-
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.jboss.tools.common.model.util.ClassLoaderUtil;
import org.jboss.tools.jst.web.WebModelPlugin;
-import org.jboss.tools.jst.web.server.*;
+import org.jboss.tools.jst.web.server.ServerManager;
+import org.jboss.tools.jst.web.server.ServerManagerListener;
public abstract class AbstractServerActionDelegate implements
IWorkbenchWindowActionDelegate, ServerManagerListener {
static {
@@ -123,4 +128,22 @@
return null;
}
+
+ // a stub that can be used by subclasses
+ protected static ISelectionProvider getSelectionProvider() {
+ return new ISelectionProvider() {
+ public void addSelectionChangedListener(
+ ISelectionChangedListener listener) {
+ }
+ public ISelection getSelection() {
+ return null;
+ }
+ public void removeSelectionChangedListener(
+ ISelectionChangedListener listener) {
+ }
+ public void setSelection(ISelection selection) {
+ }
+ };
+ }
+
}
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/RefreshServerActionDelegate.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/RefreshServerActionDelegate.java 2008-01-24
22:09:13 UTC (rev 5957)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/RefreshServerActionDelegate.java 2008-01-24
22:22:42 UTC (rev 5958)
@@ -10,25 +10,21 @@
******************************************************************************/
package org.jboss.tools.jst.web.ui.action.server;
-import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.wst.server.core.IServer;
-import org.jboss.tools.common.model.ServiceDialog;
-import org.jboss.tools.common.model.options.PreferenceModelUtilities;
+import org.eclipse.wst.server.ui.internal.view.servers.StartAction;
import org.jboss.tools.jst.web.messages.xpl.WebUIMessages;
-import org.jboss.tools.jst.web.server.*;
+import org.jboss.tools.jst.web.server.ServerManager;
public class RefreshServerActionDelegate extends AbstractServerActionDelegate {
+ private StartAction delegate;
protected void doRun() {
IServer server = ServerManager.getInstance().getSelectedServer();
if(server == null) return;
- ServiceDialog d = PreferenceModelUtilities.getPreferenceModel().getService();
- try {
- server.restart(getLaunchMode(server), new NullProgressMonitor());
- } catch (Exception e) {
- d.showDialog(WebUIMessages.ERROR, e.getMessage(), new String[]{WebUIMessages.CLOSE},
null, ServiceDialog.ERROR);
- }
+ delegate = new StartAction(window.getShell(), getSelectionProvider(),
getLaunchMode(server));
+ if( delegate.accept(server))
+ delegate.perform(server);
}
protected String getLaunchMode(IServer server) {
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/RunServerActionDelegate.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/RunServerActionDelegate.java 2008-01-24
22:09:13 UTC (rev 5957)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/RunServerActionDelegate.java 2008-01-24
22:22:42 UTC (rev 5958)
@@ -10,34 +10,16 @@
******************************************************************************/
package org.jboss.tools.jst.web.ui.action.server;
-import java.util.*;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.core.*;
-import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.wst.server.core.IRuntime;
import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.internal.Runtime;
-import org.eclipse.wst.server.core.internal.RuntimeWorkingCopy;
-
-import org.jboss.tools.common.meta.action.SpecialWizard;
-import org.jboss.tools.common.meta.action.SpecialWizardFactory;
-import org.jboss.tools.common.model.ServiceDialog;
-import org.jboss.tools.common.model.options.PreferenceModelUtilities;
-import org.jboss.tools.jst.web.WebModelPlugin;
+import org.eclipse.wst.server.ui.internal.view.servers.StartAction;
import org.jboss.tools.jst.web.messages.xpl.WebUIMessages;
-import org.jboss.tools.jst.web.server.*;
-import org.jboss.tools.jst.web.tomcat.TomcatVMHelper;
-import org.jboss.tools.jst.web.ui.WebUiPlugin;
+import org.jboss.tools.jst.web.server.ServerManager;
public class RunServerActionDelegate extends AbstractServerActionDelegate {
- static Set startingServers = new HashSet();
+ private StartAction delegate;
public void init(IWorkbenchWindow window) {
super.init(window);
update();
@@ -45,28 +27,11 @@
protected void doRun() {
IServer server = ServerManager.getInstance().getSelectedServer();
- if(server == null || startingServers.contains(server.getName())) return;
- ServiceDialog d = PreferenceModelUtilities.getPreferenceModel().getService();
-
- IRuntime runtime = server.getRuntime();
- if(runtime == null) {
- String message = WebUIMessages.RUNTIME_REFERENCED_HAS_BEEN_REMOVED;
- d.showDialog(WebUIMessages.RUN_SERVER, message, new String[]{WebUIMessages.CLOSE},
null, ServiceDialog.WARNING);
+ if(server == null || server.getServerState() != IServer.STATE_STOPPED)
return;
- }
- IStatus status = runtime.validate(new NullProgressMonitor());
-
- if(status.getSeverity() == IStatus.ERROR || status.getSeverity() == IStatus.WARNING) {
- if(!checkToolsJar(runtime)) {
- if(!createJVM(runtime)) return;
- } else {
- int i = d.showDialog(WebUIMessages.RUN_SERVER, status.getMessage(), new
String[]{WebUIMessages.RUN, WebUIMessages.CANCEL}, null, ServiceDialog.WARNING);
- if(i != 0) return;
- }
- }
- startingServers.add(server.getName());
- RunServerJob job = new RunServerJob(this, server, getLaunchMode());
- job.schedule();
+ delegate = new StartAction(window.getShell(), getSelectionProvider(),
getLaunchMode());
+ if( delegate.accept(server))
+ delegate.perform(server);
updateAll();
}
@@ -78,8 +43,7 @@
IServer selected = ServerManager.getInstance().getSelectedServer();
return (selected != null
&& selected.getServerState() != IServer.STATE_STARTED
- && selected.getServerState() != IServer.STATE_STARTING)
- && !startingServers.contains(selected.getName());
+ && selected.getServerState() != IServer.STATE_STARTING);
}
protected String computeToolTip() {
@@ -88,83 +52,105 @@
return WebUIMessages.START + name;
}
- private boolean checkToolsJar(IRuntime runtime) {
- String id = getVMInstallTypeId(runtime);
- if(id == null) return false;
- IVMInstall vmInstall = TomcatVMHelper.getJVMInstallById(id);
- if(vmInstall == null) return false;
- String jvm = (vmInstall == null) ? null : vmInstall.getInstallLocation().getPath();
- String toolsPath = TomcatVMHelper.findToolsJarInVM(jvm);
- return (toolsPath != null);
- }
- String getVMInstallTypeId(IRuntime runtime) {
- try {
- return ((Runtime)runtime).getAttribute("vm-install-id", (String)null);
//$NON-NLS-1$
- } catch (Exception e) {
- WebModelPlugin.getPluginLog().logError(e);
- }
- return null;
- }
- void setVMInstallTypeId(IRuntime runtime, String id, String typeId) {
- try {
- RuntimeWorkingCopy copy = (RuntimeWorkingCopy)runtime.createWorkingCopy();
- copy.setAttribute("vm-install-id", id); //$NON-NLS-1$
- copy.setAttribute("vm-install-type-id", typeId); //$NON-NLS-1$
- copy.save(true, new NullProgressMonitor());
- } catch (Exception e) {
- WebUiPlugin.getPluginLog().logError(e);
- }
- }
+
+
+
+ /*
+ * This code is very Tomcat specific
+ * and arguably unnecessary.
+ * Switching implementation to use WTP API's.
+ *
+ * - rob.stryker
+ */
+
+// private boolean checkToolsJar(IRuntime runtime) {
+// String id = getVMInstallTypeId(runtime);
+// if(id == null) return false;
+// IVMInstall vmInstall = TomcatVMHelper.getJVMInstallById(id);
+// if(vmInstall == null) return false;
+// String jvm = (vmInstall == null) ? null : vmInstall.getInstallLocation().getPath();
+// String toolsPath = TomcatVMHelper.findToolsJarInVM(jvm);
+// return (toolsPath != null);
+// }
+//
+// String getVMInstallTypeId(IRuntime runtime) {
+// try {
+// return ((Runtime)runtime).getAttribute("vm-install-id", (String)null);
//$NON-NLS-1$
+// } catch (Exception e) {
+// WebModelPlugin.getPluginLog().logError(e);
+// }
+// return null;
+// }
+// void setVMInstallTypeId(IRuntime runtime, String id, String typeId) {
+// try {
+// RuntimeWorkingCopy copy = (RuntimeWorkingCopy)runtime.createWorkingCopy();
+// copy.setAttribute("vm-install-id", id); //$NON-NLS-1$
+// copy.setAttribute("vm-install-type-id", typeId); //$NON-NLS-1$
+// copy.save(true, new NullProgressMonitor());
+// } catch (Exception e) {
+// WebUiPlugin.getPluginLog().logError(e);
+// }
+// }
+//
+// boolean createJVM(IRuntime runtime) {
+// runtime = runtime.createWorkingCopy();
+// SpecialWizard wizard =
SpecialWizardFactory.createSpecialWizard("org.jboss.tools.jst.web.ui.wizards.tomcatvm.TomcatVMWizard");
//$NON-NLS-1$
+// Properties p = new Properties();
+// wizard.setObject(p);
+// int ii = wizard.execute();
+// if(ii != 0) return false;
+// String jvm = p.getProperty("vm"); //$NON-NLS-1$
+// if(jvm != null) jvm = jvm.trim();
+// String name = TomcatVMHelper.createVM(jvm);
+// IVMInstall vm = TomcatVMHelper.getJVMInstall(name);
+// String id = vm.getId();
+// String typeId = vm.getVMInstallType().getId();
+// setVMInstallTypeId(runtime, id, typeId);
+// return true;
+// }
+//
- boolean createJVM(IRuntime runtime) {
- runtime = runtime.createWorkingCopy();
- SpecialWizard wizard =
SpecialWizardFactory.createSpecialWizard("org.jboss.tools.jst.web.ui.wizards.tomcatvm.TomcatVMWizard");
//$NON-NLS-1$
- Properties p = new Properties();
- wizard.setObject(p);
- int ii = wizard.execute();
- if(ii != 0) return false;
- String jvm = p.getProperty("vm"); //$NON-NLS-1$
- if(jvm != null) jvm = jvm.trim();
- String name = TomcatVMHelper.createVM(jvm);
- IVMInstall vm = TomcatVMHelper.getJVMInstall(name);
- String id = vm.getId();
- String typeId = vm.getVMInstallType().getId();
- setVMInstallTypeId(runtime, id, typeId);
- return true;
- }
}
-class RunServerJob extends Job {
- IServer server;
- String launchMode;
- RunServerActionDelegate action;
-
- public RunServerJob(RunServerActionDelegate action, IServer server, String launchMode)
{
- super(WebUIMessages.RUN_SERVER+ " " + server.getName());
- this.launchMode = launchMode;
- this.server = server;
- this.action = action;
- }
- protected IStatus run(IProgressMonitor monitor) {
- try {
- boolean publishBefore = RegistrationHelper.canPublish(server);
- if(publishBefore) {
- server.publish(IServer.PUBLISH_INCREMENTAL, new NullProgressMonitor());
- }
- server.start(launchMode, new NullProgressMonitor());
- if(!publishBefore) {
- server.publish(IServer.PUBLISH_INCREMENTAL, new NullProgressMonitor());
- }
- } catch (Exception e) {
- return new Status(IStatus.ERROR, "org.jboss.tools.jst.web", 0,
WebUIMessages.CANNOT_START_SERVER + e.getMessage(), e); //$NON-NLS-1$
- } finally {
- RunServerActionDelegate.startingServers.remove(server.getName());
- RunServerActionDelegate.updateAll();
- }
- return Status.OK_STATUS;
- }
-
-}
+/*
+ * This class is an inefficient (and less functional)
+ * duplicate of StartAction (inside WTP).
+ *
+ * - rob.stryker
+ */
+
+//class RunServerJob extends Job {
+// IServer server;
+// String launchMode;
+// RunServerActionDelegate action;
+//
+// public RunServerJob(RunServerActionDelegate action, IServer server, String launchMode)
{
+// super(WebUIMessages.RUN_SERVER+ " " + server.getName());
+// this.launchMode = launchMode;
+// this.server = server;
+// this.action = action;
+// }
+//
+// protected IStatus run(IProgressMonitor monitor) {
+// try {
+// boolean publishBefore = RegistrationHelper.canPublish(server);
+// if(publishBefore) {
+// server.publish(IServer.PUBLISH_INCREMENTAL, new NullProgressMonitor());
+// }
+// server.start(launchMode, new NullProgressMonitor());
+// if(!publishBefore) {
+// server.publish(IServer.PUBLISH_INCREMENTAL, new NullProgressMonitor());
+// }
+// } catch (Exception e) {
+// return new Status(IStatus.ERROR, "org.jboss.tools.jst.web", 0,
WebUIMessages.CANNOT_START_SERVER + e.getMessage(), e); //$NON-NLS-1$
+// } finally {
+// RunServerActionDelegate.startingServers.remove(server.getName());
+// RunServerActionDelegate.updateAll();
+// }
+// return Status.OK_STATUS;
+// }
+//
+//}
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/SelectServerActionDelegate.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/SelectServerActionDelegate.java 2008-01-24
22:09:13 UTC (rev 5957)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/SelectServerActionDelegate.java 2008-01-24
22:22:42 UTC (rev 5958)
@@ -130,13 +130,13 @@
private void newServer() {
NewServerWizard wizard = new NewServerWizard();
ClosableWizardDialog dialog = new ClosableWizardDialog(window.getShell(), wizard);
- if (dialog.open() == Window.CANCEL) {
- return;
+ if (dialog.open() != Window.CANCEL) {
+ IServer server =
(IServer)wizard.getRootFragment().getTaskModel().getObject(TaskModel.TASK_SERVER);
+ if(server != null) {
+ ServerManager.getInstance().setSelectedServer(server.getId());
+ update();
+ }
}
- IServer server =
(IServer)wizard.getRootFragment().getTaskModel().getObject(TaskModel.TASK_SERVER);
- if(server == null) return;
- ServerManager.getInstance().setSelectedServer(server.getId());
- update();
}
// server images
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/StopServerActionDelegate.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/StopServerActionDelegate.java 2008-01-24
22:09:13 UTC (rev 5957)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/action/server/StopServerActionDelegate.java 2008-01-24
22:22:42 UTC (rev 5958)
@@ -10,24 +10,28 @@
******************************************************************************/
package org.jboss.tools.jst.web.ui.action.server;
+import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.wst.server.core.IServer;
-
+import org.eclipse.wst.server.ui.internal.view.servers.StopAction;
import org.jboss.tools.common.model.ServiceDialog;
import org.jboss.tools.common.model.options.PreferenceModelUtilities;
import org.jboss.tools.jst.web.messages.xpl.WebUIMessages;
-import org.jboss.tools.jst.web.server.*;
+import org.jboss.tools.jst.web.server.ServerManager;
public class StopServerActionDelegate extends AbstractServerActionDelegate {
+ protected StopAction delegate;
+ public void init(IWorkbenchWindow window) {
+ super.init(window);
+ update();
+ delegate = new StopAction(window.getShell(), getSelectionProvider());
+ }
+
protected void doRun() {
IServer server = ServerManager.getInstance().getSelectedServer();
if(server == null) return;
- ServiceDialog d = PreferenceModelUtilities.getPreferenceModel().getService();
- try {
- server.stop(false);
- } catch (Exception e) {
- d.showDialog(WebUIMessages.ERROR, e.getMessage(), new String[]{WebUIMessages.CLOSE},
null, ServiceDialog.ERROR);
- }
+ if( delegate.accept(server))
+ delegate.perform(server);
}
protected boolean isActionEnabled() {