1 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 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 () { 41 public void run() { 42 RelaunchActionDelegate.relaunch(fLaunch.getLaunchConfiguration(), fLaunch.getLaunchMode()); 45 } 46 }); 47 } 48 49 } 50 51 protected void doAction(Object element) { 52 ILaunch launch = RelaunchActionDelegate.getLaunch(element); 53 if (launch == null || !(element instanceof ITerminate)) { 54 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 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 getActionDefinitionId() { 80 return ActionMessages.TerminateAndRelaunchAction_0; 81 } 82 83 public String getHelpContextId() { 84 return "terminate_and_relaunch_action_context"; } 86 87 public String getId() { 88 return "org.eclipse.debug.ui.debugview.popupMenu.TerminateAndRelaunch"; } 90 91 public String getText() { 92 return ActionMessages.TerminateAndRelaunchAction_3; 93 } 94 95 public String 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 |