Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerActionDelegate.java')
-rw-r--r--plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerActionDelegate.java766
1 files changed, 0 insertions, 766 deletions
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
deleted file mode 100644
index 04038631a..000000000
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/actions/RunOnServerActionDelegate.java
+++ /dev/null
@@ -1,766 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2003, 2007 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.server.ui.internal.actions;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.core.*;
-import org.eclipse.debug.ui.IDebugUIConstants;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.wst.server.core.*;
-import org.eclipse.wst.server.core.internal.IClient;
-import org.eclipse.wst.server.core.internal.ILaunchableAdapter;
-import org.eclipse.wst.server.core.internal.PublishServerJob;
-import org.eclipse.wst.server.core.internal.RestartServerJob;
-import org.eclipse.wst.server.core.internal.ServerPlugin;
-import org.eclipse.wst.server.core.internal.ServerType;
-import org.eclipse.wst.server.core.internal.StartServerJob;
-import org.eclipse.wst.server.core.internal.Trace;
-import org.eclipse.wst.server.core.model.ModuleArtifactDelegate;
-import org.eclipse.wst.server.ui.internal.*;
-import org.eclipse.wst.server.ui.internal.wizard.*;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-/**
- * Support for starting/stopping server and clients for resources running on a server.
- */
-public class RunOnServerActionDelegate implements IWorkbenchWindowActionDelegate {
- protected static final String[] launchModes = {
- ILaunchManager.RUN_MODE, ILaunchManager.DEBUG_MODE, ILaunchManager.PROFILE_MODE };
-
- protected Object selection;
-
- protected IWorkbenchWindow window;
-
- protected static Object globalSelection;
-
- protected static Map globalLaunchMode;
- protected String launchMode = ILaunchManager.RUN_MODE;
-
- protected boolean tasksAndClientShown;
-
- protected ILaunchableAdapter launchableAdapter;
- protected IClient client;
-
- /**
- * RunOnServerActionDelegate constructor comment.
- */
- public RunOnServerActionDelegate() {
- super();
- }
-
- /**
- * Disposes this action delegate. The implementor should unhook any references
- * to itself so that garbage collection can occur.
- */
- public void dispose() {
- window = null;
- }
-
- /**
- * Initializes this action delegate with the workbench window it will work in.
- *
- * @param newWindow the window that provides the context for this delegate
- */
- public void init(IWorkbenchWindow newWindow) {
- window = newWindow;
- }
-
- public IServer getServer(IModule module, IModuleArtifact moduleArtifact, IProgressMonitor monitor) throws CoreException {
- IServer server = ServerCore.getDefaultServer(module);
-
- // ignore preference if the server doesn't support this mode.
- if (server != null && !ServerUIPlugin.isCompatibleWithLaunchMode(server, launchMode))
- server = null;
-
- if (server != null && !ServerUtil.containsModule(server, module, monitor)) {
- IServerWorkingCopy wc = server.createWorkingCopy();
- try {
- ServerUtil.modifyModules(wc, new IModule[] { module }, new IModule[0], monitor);
- wc.save(false, monitor);
- } catch (CoreException ce) {
- Trace.trace(Trace.SEVERE, "Could not add module to server", ce);
- server = null;
- }
- }
-
- Shell shell;
- if (window != null)
- shell = window.getShell();
- else
- shell = ServerUIPlugin.getInstance().getWorkbench().getActiveWorkbenchWindow().getShell();
-
- if (server == null) {
- // try the full wizard
- Trace.trace(Trace.FINEST, "Launching wizard");
- RunOnServerWizard wizard = new RunOnServerWizard(module, launchMode, moduleArtifact);
- ClosableWizardDialog dialog = new ClosableWizardDialog(shell, wizard);
- if (dialog.open() == Window.CANCEL) {
- if (monitor != null)
- monitor.setCanceled(true);
- return null;
- }
-
- try {
- Job.getJobManager().join("org.eclipse.wst.server.ui.family", null);
- } catch (Exception e) {
- Trace.trace(Trace.WARNING, "Error waiting for job", e);
- }
- server = wizard.getServer();
- boolean preferred = wizard.isPreferredServer();
- tasksAndClientShown = true;
- client = wizard.getSelectedClient();
- launchableAdapter = wizard.getLaunchableAdapter();
-
- // set preferred server if requested
- if (server != null && preferred) {
- try {
- ServerCore.setDefaultServer(module, server, monitor);
- } catch (CoreException ce) {
- String message = Messages.errorCouldNotSavePreference;
- ErrorDialog.openError(shell, Messages.errorDialogTitle, message, ce.getStatus());
- }
- }
- }
-
- try {
- Job.getJobManager().join("org.eclipse.wst.server.ui.family", new NullProgressMonitor());
- } catch (Exception e) {
- Trace.trace(Trace.WARNING, "Error waiting for job", e);
- }
-
- return server;
- }
-
- /**
- * Run the resource on a server.
- */
- protected void run() {
-// final String launchMode2 = getLaunchMode();
- IModuleArtifact[] moduleArtifacts = ServerPlugin.getModuleArtifacts(selection);
- // TODO - multiple module artifacts
- final IModuleArtifact moduleArtifact = moduleArtifacts[0];
-
- Shell shell2 = null;
- if (window != null)
- shell2 = window.getShell();
- else {
- try {
- shell2 = ServerUIPlugin.getInstance().getWorkbench().getActiveWorkbenchWindow().getShell();
- } catch (Exception e) {
- // ignore
- }
- if (shell2 == null)
- shell2 = Display.getDefault().getActiveShell();
- }
- final Shell shell = shell2;
-
- if (moduleArtifact == null) {
- EclipseUtil.openError(Messages.errorNoArtifact);
- Trace.trace(Trace.FINEST, "No module artifact found");
- return;
- }
- if (moduleArtifact.getModule() == null) { // 149425
- EclipseUtil.openError(Messages.errorNoModules);
- Trace.trace(Trace.FINEST, "Module artifact not contained in a module");
- return;
- }
- final IModule module = moduleArtifact.getModule();
-
- // check for servers with the given start mode
- IServer[] servers = ServerCore.getServers();
- boolean found = false;
- if (servers != null) {
- int size = servers.length;
- for (int i = 0; i < size && !found; i++) {
- if (ServerUIPlugin.isCompatibleWithLaunchMode(servers[i], launchMode)) {
- try {
- IModule[] parents = servers[i].getRootModules(module, null);
- if (parents != null && parents.length > 0)
- found = true;
- } catch (Exception e) {
- // ignore
- }
- }
- }
- }
-
- if (!found) {
- // no existing server supports the project and start mode!
- // check if there might be another one that can be created
- IServerType[] serverTypes = ServerCore.getServerTypes();
- if (serverTypes != null) {
- int size = serverTypes.length;
- for (int i = 0; i < size && !found; i++) {
- IServerType type = serverTypes[i];
- IModuleType[] moduleTypes = type.getRuntimeType().getModuleTypes();
- if (type.supportsLaunchMode(launchMode) && ServerUtil.isSupportedModule(moduleTypes, module.getModuleType())) {
- found = true;
- }
- }
- }
- if (!found) {
- EclipseUtil.openError(Messages.errorNoServer);
- Trace.trace(Trace.FINEST, "No server for start mode");
- return;
- }
- }
-
- if (!ServerUIPlugin.saveEditors())
- return;
-
- tasksAndClientShown = false;
- IServer server2 = null;
- client = null;
- launchableAdapter = null;
- try {
- IProgressMonitor monitor = new NullProgressMonitor();
- server2 = getServer(module, moduleArtifact, monitor);
- if (monitor.isCanceled())
- return;
-
- if (server2 != null) {
- IFolder folder = server2.getServerConfiguration();
- if (folder != null && folder.getProject() != null && !folder.getProject().isOpen())
- folder.getProject().open(monitor);
- }
- } catch (CoreException ce) {
- EclipseUtil.openError(shell, ce.getLocalizedMessage());
- return;
- }
- final IServer server = server2;
- //if (monitor.isCanceled())
- // return;
-
- Trace.trace(Trace.FINEST, "Server: " + server);
-
- if (server == null) {
- EclipseUtil.openError(Messages.errorNoServer);
- Trace.trace(Trace.SEVERE, "No server found");
- return;
- }
-
- if (!ServerUIPlugin.promptIfDirty(shell, server))
- return;
-
- if (!tasksAndClientShown) {
- RunOnServerWizard wizard = new RunOnServerWizard(server, launchMode, moduleArtifact);
- if (wizard.shouldAppear()) {
- WizardDialog dialog = new WizardDialog(shell, wizard);
- if (dialog.open() == Window.CANCEL)
- return;
- } else
- wizard.performFinish();
- client = wizard.getSelectedClient();
- launchableAdapter = wizard.getLaunchableAdapter();
- }
-
- if (moduleArtifact instanceof ModuleArtifactDelegate) {
- boolean canLoad = false;
- try {
- Class c = Class.forName(moduleArtifact.getClass().getName());
- if (c.newInstance() != null)
- canLoad = true;
- } catch (Throwable t) {
- Trace.trace(Trace.WARNING, "Could not load module artifact delegate class, switching to backup");
- }
- if (canLoad) {
- try {
- IProgressMonitor monitor = new NullProgressMonitor();
- ILaunchConfiguration config = getLaunchConfiguration(server, (ModuleArtifactDelegate) moduleArtifact, launchableAdapter, client, monitor);
- config.launch(launchMode, monitor);
- } catch (CoreException ce) {
- Trace.trace(Trace.SEVERE, "Could not launch Run on Server", ce);
- }
- return;
- }
- }
-
- Thread thread = new Thread("Run on Server") {
- public void run() {
- if (client == null) {
- // if there is no client, use a dummy
- client = new IClient() {
- public String getDescription() {
- return Messages.clientDefaultDescription;
- }
-
- public String getId() {
- return "org.eclipse.wst.server.ui.client.default";
- }
-
- public String getName() {
- return Messages.clientDefaultName;
- }
-
- 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;
- }
- };
- }
-
- Trace.trace(Trace.FINEST, "Ready to launch");
-
- // start server if it's not already started
- // and cue the client to start
- IModule[] modules = new IModule[] { module }; // TODO: get parent heirarchy correct
- int state = server.getServerState();
- if (state == IServer.STATE_STARTING) {
- LaunchClientJob clientJob = new LaunchClientJob(server, modules, launchMode, moduleArtifact, launchableAdapter, client);
- clientJob.schedule();
- } else if (state == IServer.STATE_STARTED) {
- boolean restart = false;
- String mode = server.getMode();
- IBreakpointManager breakpointManager = DebugPlugin.getDefault().getBreakpointManager();
- boolean disabledBreakpoints = false;
-
- if (server.getServerRestartState()) {
- int result = openRestartDialog(shell);
- if (result == 0) {
- launchMode = mode;
- restart = true;
- } else if (result == 9) // cancel
- return;
- }
- if (!restart) {
- if (!ILaunchManager.RUN_MODE.equals(mode) && ILaunchManager.RUN_MODE.equals(launchMode)) {
- boolean breakpointsOption = false;
- if (breakpointManager.isEnabled() && ILaunchManager.DEBUG_MODE.equals(mode))
- breakpointsOption = true;
- int result = openOptionsDialog(shell, Messages.wizRunOnServerTitle, Messages.dialogModeWarningRun, breakpointsOption);
- if (result == 0)
- restart = true;
- else if (result == 1) {
- breakpointManager.setEnabled(false);
- disabledBreakpoints = true;
- launchMode = mode;
- } else if (result == 2)
- launchMode = mode;
- else // result == 9 // cancel
- return;
- } else if (!ILaunchManager.DEBUG_MODE.equals(mode) && ILaunchManager.DEBUG_MODE.equals(launchMode)) {
- int result = openOptionsDialog(shell, Messages.wizDebugOnServerTitle, Messages.dialogModeWarningDebug, false);
- if (result == 0)
- restart = true;
- else if (result == 1)
- launchMode = mode;
- else // result == 9 // cancel
- return;
- } else if (!ILaunchManager.PROFILE_MODE.equals(mode) && ILaunchManager.PROFILE_MODE.equals(launchMode)) {
- boolean breakpointsOption = false;
- if (breakpointManager.isEnabled() && ILaunchManager.DEBUG_MODE.equals(mode))
- breakpointsOption = true;
- int result = openOptionsDialog(shell, Messages.wizProfileOnServerTitle, Messages.dialogModeWarningProfile, breakpointsOption);
- if (result == 0)
- restart = true;
- else if (result == 1) {
- breakpointManager.setEnabled(false);
- disabledBreakpoints = true;
- launchMode = mode;
- } else if (result == 2)
- launchMode = mode;
- else // result == 9 // cancel
- return;
- }
-
- if (ILaunchManager.DEBUG_MODE.equals(launchMode)) {
- if (!breakpointManager.isEnabled() && !disabledBreakpoints) {
- int result = openBreakpointDialog(shell);
- if (result == 0)
- breakpointManager.setEnabled(true);
- else if (result == 1) {
- // ignore
- } else // result == 2
- return;
- }
- }
- }
-
- PublishServerJob publishJob = new PublishServerJob(server, IServer.PUBLISH_INCREMENTAL, false);
- LaunchClientJob clientJob = new LaunchClientJob(server, modules, launchMode, moduleArtifact, launchableAdapter, client);
- publishJob.setNextJob(clientJob);
-
- if (restart) {
- RestartServerJob restartJob = new RestartServerJob(server, launchMode);
- restartJob.setNextJob(publishJob);
- restartJob.schedule();
- } else
- publishJob.schedule();
- } else if (state != IServer.STATE_STOPPING) {
- PublishServerJob publishJob = new PublishServerJob(server);
- StartServerJob startServerJob = new StartServerJob(server, launchMode);
- LaunchClientJob clientJob = new LaunchClientJob(server, modules, launchMode, moduleArtifact, launchableAdapter, client);
-
- if (((ServerType)server.getServerType()).startBeforePublish()) {
- startServerJob.setNextJob(publishJob);
- publishJob.setNextJob(clientJob);
- startServerJob.schedule();
- } else {
- publishJob.setNextJob(startServerJob);
- startServerJob.setNextJob(clientJob);
- publishJob.schedule();
- }
- }
- }
- };
- thread.setDaemon(true);
- thread.start();
- }
-
- protected void setupLaunchConfiguration(ILaunchConfigurationWorkingCopy config, IServer server, ModuleArtifactDelegate moduleArtifact, ILaunchableAdapter launchableAdapter, IClient client) {
- config.setAttribute(RunOnServerLaunchConfigurationDelegate.ATTR_SERVER_ID, server.getId());
- config.setAttribute(RunOnServerLaunchConfigurationDelegate.ATTR_MODULE_ARTIFACT, moduleArtifact.serialize());
- config.setAttribute(RunOnServerLaunchConfigurationDelegate.ATTR_MODULE_ARTIFACT_CLASS, moduleArtifact.getClass().getName());
- config.setAttribute(RunOnServerLaunchConfigurationDelegate.ATTR_LAUNCHABLE_ADAPTER_ID, launchableAdapter.getId());
- config.setAttribute(RunOnServerLaunchConfigurationDelegate.ATTR_CLIENT_ID, client.getId());
- }
-
- protected ILaunchConfiguration getLaunchConfiguration(IServer server, ModuleArtifactDelegate moduleArtifact, ILaunchableAdapter launchableAdapter2, IClient client2, IProgressMonitor monitor) throws CoreException {
- String serverId = server.getId();
- ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
- ILaunchConfigurationType launchConfigType = launchManager.getLaunchConfigurationType("org.eclipse.wst.server.ui.launchConfigurationType");
- ILaunchConfiguration[] launchConfigs = null;
- try {
- launchConfigs = launchManager.getLaunchConfigurations(launchConfigType);
- } catch (CoreException e) {
- // ignore
- }
-
- if (launchConfigs != null) {
- int size = launchConfigs.length;
- for (int i = 0; i < size; i++) {
- List list = launchConfigs[i].getAttribute(IDebugUIConstants.ATTR_FAVORITE_GROUPS, (List)null);
- if (list == null || list.isEmpty()) {
- try {
- String serverId2 = launchConfigs[i].getAttribute(RunOnServerLaunchConfigurationDelegate.ATTR_SERVER_ID, (String) null);
- if (serverId.equals(serverId2)) {
- final ILaunchConfigurationWorkingCopy wc = launchConfigs[i].getWorkingCopy();
- setupLaunchConfiguration(wc, server, moduleArtifact, launchableAdapter2, client2);
- if (wc.isDirty()) {
- try {
- return wc.doSave();
- } catch (CoreException ce) {
- Trace.trace(Trace.SEVERE, "Error configuring launch", ce);
- }
- }
- return launchConfigs[i];
- }
- } catch (CoreException e) {
- Trace.trace(Trace.SEVERE, "Error configuring launch", e);
- }
- }
- }
- }
-
- // create a new launch configuration
- String launchName = NLS.bind(Messages.runOnServerLaunchConfigName, moduleArtifact.getName());
- launchName = getValidLaunchConfigurationName(launchName);
- launchName = launchManager.generateUniqueLaunchConfigurationNameFrom(launchName);
- ILaunchConfigurationWorkingCopy wc = launchConfigType.newInstance(null, launchName);
- wc.setAttribute(RunOnServerLaunchConfigurationDelegate.ATTR_SERVER_ID, serverId);
- setupLaunchConfiguration(wc, server, moduleArtifact, launchableAdapter2, client2);
- return wc.doSave();
- }
-
- //protected static final char[] INVALID_CHARS = new char[] {'\\', '/', ':', '*', '?', '"', '<', '>', '|', '\0', '@', '&'};
- protected static final char[] INVALID_CHARS = new char[] {'\\', ':', '*', '?', '"', '<', '>', '|', '\0', '@', '&'};
- protected String getValidLaunchConfigurationName(String s) {
- if (s == null || s.length() == 0)
- return "1";
- int size = INVALID_CHARS.length;
- for (int i = 0; i < size; i++) {
- s = s.replace(INVALID_CHARS[i], '_');
- }
- return s;
- }
-
- /**
- * Open an options dialog.
- *
- * @param shell
- * @param title
- * @param message
- * @param breakpointsOption
- * @return a dialog return constant
- */
- protected static int openOptionsDialog(final Shell shell, final String title, final String message, final boolean breakpointsOption) {
- if (breakpointsOption) {
- int current = ServerUIPlugin.getPreferences().getLaunchMode2();
- if (current == ServerUIPreferences.LAUNCH_MODE2_RESTART)
- return 0;
- else if (current == ServerUIPreferences.LAUNCH_MODE2_DISABLE_BREAKPOINTS)
- return 1;
- else if (current == ServerUIPreferences.LAUNCH_MODE2_CONTINUE)
- return 2;
- } else {
- int current = ServerUIPlugin.getPreferences().getLaunchMode();
- if (current == ServerUIPreferences.LAUNCH_MODE_RESTART)
- return 0;
- else if (current == ServerUIPreferences.LAUNCH_MODE_CONTINUE)
- return 1;
- }
- final int[] i = new int[1];
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- OptionsMessageDialog dialog = null;
- String[] items = null;
- if (breakpointsOption) {
- items = new String[] {
- Messages.dialogModeWarningRestart,
- Messages.dialogModeWarningBreakpoints,
- Messages.dialogModeWarningContinue
- };
- } else {
- items = new String[] {
- Messages.dialogModeWarningRestart,
- Messages.dialogModeWarningContinue
- };
- }
-
- dialog = new OptionsMessageDialog(shell, title, message, items);
- i[0] = dialog.open();
-
- if (dialog.isRemember()) {
- if (breakpointsOption) {
- if (i[0] == 0)
- ServerUIPlugin.getPreferences().setLaunchMode2(ServerUIPreferences.LAUNCH_MODE2_RESTART);
- else if (i[0] == 1)
- ServerUIPlugin.getPreferences().setLaunchMode2(ServerUIPreferences.LAUNCH_MODE2_DISABLE_BREAKPOINTS);
- else if (i[0] == 2)
- ServerUIPlugin.getPreferences().setLaunchMode2(ServerUIPreferences.LAUNCH_MODE2_CONTINUE);
- } else {
- if (i[0] == 0)
- ServerUIPlugin.getPreferences().setLaunchMode(ServerUIPreferences.LAUNCH_MODE_RESTART);
- else if (i[0] == 1)
- ServerUIPlugin.getPreferences().setLaunchMode(ServerUIPreferences.LAUNCH_MODE_CONTINUE);
- }
- }
- }
- });
- return i[0];
- }
-
- /**
- * Open an options dialog.
- *
- * @param shell
- * @return a dialog return constant
- */
- protected static int openBreakpointDialog(final Shell shell) {
- int current = ServerUIPlugin.getPreferences().getEnableBreakpoints();
- if (current == ServerUIPreferences.ENABLE_BREAKPOINTS_ALWAYS)
- return 0;
- else if (current == ServerUIPreferences.ENABLE_BREAKPOINTS_NEVER)
- return 1;
-
- final int[] i = new int[1];
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- OptionsMessageDialog dialog = new OptionsMessageDialog(shell,
- Messages.wizDebugOnServerTitle, Messages.dialogBreakpoints, new String[] {
- Messages.dialogBreakpointsReenable, Messages.dialogModeWarningContinue});
- i[0] = dialog.open();
- if (dialog.isRemember()) {
- if (i[0] == 0)
- ServerUIPlugin.getPreferences().setEnableBreakpoints(ServerUIPreferences.ENABLE_BREAKPOINTS_ALWAYS);
- else if (i[0] == 1)
- ServerUIPlugin.getPreferences().setEnableBreakpoints(ServerUIPreferences.ENABLE_BREAKPOINTS_NEVER);
- }
- }
- });
- return i[0];
- }
-
- /**
- * Open a restart options dialog.
- *
- * @param shell
- * @return a dialog return constant
- */
- protected static int openRestartDialog(final Shell shell) {
- int current = ServerUIPlugin.getPreferences().getRestart();
- if (current == ServerUIPreferences.RESTART_ALWAYS)
- return 0;
- else if (current == ServerUIPreferences.RESTART_NEVER)
- return 1;
-
- final int[] i = new int[1];
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- OptionsMessageDialog dialog = new OptionsMessageDialog(shell,
- Messages.defaultDialogTitle, Messages.dialogRestart, new String[] {
- Messages.dialogRestartRestart, Messages.dialogRestartContinue});
- i[0] = dialog.open();
- if (dialog.isRemember()) {
- if (i[0] == 0)
- ServerUIPlugin.getPreferences().setRestart(ServerUIPreferences.RESTART_ALWAYS);
- else if (i[0] == 1)
- ServerUIPlugin.getPreferences().setRestart(ServerUIPreferences.RESTART_NEVER);
- }
- }
- });
- return i[0];
- }
-
- /**
- * The delegating action has been performed. Implement
- * this method to do the actual work.
- *
- * @param action action proxy that handles the presentation
- * portion of the plugin action
- */
- public void run(IAction action) {
- Trace.trace(Trace.FINEST, "Running on Server...");
- try {
- run();
- } catch (Exception e) {
- Trace.trace(Trace.SEVERE, "Run on Server Error", e);
- }
- }
-
- protected boolean isEnabled() {
- try {
- Boolean b = (Boolean) globalLaunchMode.get(getLaunchMode());
- return b.booleanValue();
- } catch (Exception e) {
- // ignore
- }
- return false;
- }
-
- /**
- * Returns the start mode that the server should use.
- */
- protected String getLaunchMode() {
- return launchMode;
- }
-
- /**
- * Set the launch mode.
- *
- * @param launchMode a {@link ILaunchManager} launch mode
- */
- public void setLaunchMode(String launchMode) {
- this.launchMode = launchMode;
- }
-
- /**
- * Determine which clients can act on the current selection.
- *
- * @param action action proxy that handles presentation
- * portion of the plugin action
- * @param sel current selection in the desktop
- */
- public void selectionChanged(IAction action, ISelection sel) {
- Trace.trace(Trace.FINEST, "> selectionChanged");
- selection = null;
- long time = System.currentTimeMillis();
- if (sel == null || sel.isEmpty() || !(sel instanceof IStructuredSelection)) {
- action.setEnabled(false);
- globalSelection = null;
- return;
- }
-
- IStructuredSelection select = (IStructuredSelection) sel;
- Iterator iterator = select.iterator();
- if (iterator.hasNext())
- selection = iterator.next();
- if (iterator.hasNext()) { // more than one selection (should never happen)
- action.setEnabled(false);
- selection = null;
- globalSelection = null;
- return;
- }
-
- if (selection != globalSelection) {
- Trace.trace(Trace.FINEST, "Selection: " + selection);
- if (selection != null)
- Trace.trace(Trace.FINEST, "Selection type: " + selection.getClass().getName());
- globalSelection = selection;
- globalLaunchMode = new HashMap();
- if (!ServerPlugin.hasModuleArtifact(globalSelection)) {
- action.setEnabled(false);
- return;
- }
-
- Trace.trace(Trace.FINEST, "checking for module artifact");
- IModuleArtifact[] moduleArtifacts = ServerPlugin.getModuleArtifacts(globalSelection);
- IModule module = null;
- // TODO - multiple module artifacts
- IModuleArtifact moduleArtifact = moduleArtifacts[0];
- if (moduleArtifact != null)
- module = moduleArtifact.getModule();
- Trace.trace(Trace.FINEST, "moduleArtifact= " + moduleArtifact + ", module= " + module);
- if (module != null)
- findGlobalLaunchModes(module);
- else {
- globalLaunchMode.put(ILaunchManager.RUN_MODE, new Boolean(true));
- globalLaunchMode.put(ILaunchManager.DEBUG_MODE, new Boolean(true));
- globalLaunchMode.put(ILaunchManager.PROFILE_MODE, new Boolean(true));
- }
- }
-
- action.setEnabled(isEnabled());
- Trace.trace(Trace.FINEST, "< selectionChanged " + (System.currentTimeMillis() - time));
- }
-
- /**
- * Determines whether there is a server factory available for the given module
- * and the various start modes.
- */
- protected void findGlobalLaunchModes(IModule module) {
- IServerType[] serverTypes = ServerCore.getServerTypes();
- if (serverTypes != null) {
- int size = serverTypes.length;
- for (int i = 0; i < size; i++) {
- IServerType type = serverTypes[i];
- if (isValidServerType(type, module)) {
- for (byte b = 0; b < launchModes.length; b++) {
- if (type.supportsLaunchMode(launchModes[b])) {
- globalLaunchMode.put(launchModes[b], new Boolean(true));
- }
- }
- }
- }
- }
- }
-
- /**
- * Returns true if the given server type can launch the module.
- */
- protected boolean isValidServerType(IServerType type, IModule module) {
- try {
- IRuntimeType runtimeType = type.getRuntimeType();
- ServerUtil.isSupportedModule(runtimeType.getModuleTypes(), module.getModuleType());
- } catch (Exception e) {
- return false;
- }
- return true;
- }
-} \ No newline at end of file

Back to the top