KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > debug > internal > ui > actions > context > TerminateAndRelaunchAction


1 /*******************************************************************************
2  * Copyright (c) 2004, 2006 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial implementation
10  *******************************************************************************/

11 package org.eclipse.debug.internal.ui.actions.context;
12
13 import org.eclipse.core.runtime.IAdaptable;
14 import org.eclipse.debug.core.ILaunch;
15 import org.eclipse.debug.core.model.ITerminate;
16 import org.eclipse.debug.internal.ui.DebugPluginImages;
17 import org.eclipse.debug.internal.ui.DebugUIPlugin;
18 import org.eclipse.debug.internal.ui.IInternalDebugUIConstants;
19 import org.eclipse.debug.internal.ui.actions.ActionMessages;
20 import org.eclipse.debug.internal.ui.actions.RelaunchActionDelegate;
21 import org.eclipse.debug.internal.ui.actions.provisional.IAsynchronousTerminateAdapter;
22 import org.eclipse.debug.internal.ui.actions.provisional.IBooleanRequestMonitor;
23 import org.eclipse.jface.resource.ImageDescriptor;
24
25 /**
26  * Action which terminates a launch and then re-launches it.
27  */

28 public class TerminateAndRelaunchAction extends AbstractDebugContextAction {
29     
30     class RequestMonitor extends ActionRequestMonitor {
31         
32         private ILaunch fLaunch;
33
34         public RequestMonitor(ILaunch launch) {
35             fLaunch = launch;
36         }
37         
38         public void done() {
39             super.done();
40             DebugUIPlugin.getStandardDisplay().asyncExec(new Runnable JavaDoc() {
41                 public void run() {
42                     // Must be run in the UI thread since the launch can require
43
// prompting to proceed
44
RelaunchActionDelegate.relaunch(fLaunch.getLaunchConfiguration(), fLaunch.getLaunchMode());
45                 }
46             });
47         }
48         
49     }
50
51     protected void doAction(Object JavaDoc element) {
52         ILaunch launch = RelaunchActionDelegate.getLaunch(element);
53         if (launch == null || !(element instanceof ITerminate)) {
54             // Shouldn't happen because of enablement check.
55
return;
56         }
57         
58         if (element instanceof IAdaptable) {
59             IAsynchronousTerminateAdapter adapter = (IAsynchronousTerminateAdapter) ((IAdaptable)element).getAdapter(IAsynchronousTerminateAdapter.class);
60             if (adapter != null)
61                 adapter.terminate(element, new RequestMonitor(launch));
62         }
63     }
64
65
66     protected void isEnabledFor(Object JavaDoc element, IBooleanRequestMonitor monitor) {
67         if (element instanceof IAdaptable) {
68             IAsynchronousTerminateAdapter adapter = (IAsynchronousTerminateAdapter) ((IAdaptable)element).getAdapter(IAsynchronousTerminateAdapter.class);
69             if (adapter != null) {
70                 adapter.canTerminate(element, monitor);
71             } else {
72                 notSupported(monitor);
73             }
74         }
75         
76     }
77
78
79     public String JavaDoc getActionDefinitionId() {
80         return ActionMessages.TerminateAndRelaunchAction_0;
81     }
82
83     public String JavaDoc getHelpContextId() {
84         return "terminate_and_relaunch_action_context"; //$NON-NLS-1$
85
}
86
87     public String JavaDoc getId() {
88         return "org.eclipse.debug.ui.debugview.popupMenu.TerminateAndRelaunch"; //$NON-NLS-1$
89
}
90
91     public String JavaDoc getText() {
92         return ActionMessages.TerminateAndRelaunchAction_3;
93     }
94
95     public String JavaDoc getToolTipText() {
96         return ActionMessages.TerminateAndRelaunchAction_4;
97     }
98
99     public ImageDescriptor getDisabledImageDescriptor() {
100         return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_TERMINATE_AND_RELAUNCH);
101     }
102
103     public ImageDescriptor getHoverImageDescriptor() {
104         return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_RELAUNCH);
105     }
106
107     public ImageDescriptor getImageDescriptor() {
108         return DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_TERMINATE_AND_RELAUNCH);
109     }
110 }
111
Popular Tags