Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPawel Piech2009-10-22 18:05:17 +0000
committerPawel Piech2009-10-22 18:05:17 +0000
commit7111ed8b9fb652c7f49cfb204f4681393b52ea37 (patch)
tree9206786dff9fa2acbd7edf70a07e95554af659e8 /org.eclipse.debug.ui
parent6418c272d352c8b4672f00b2ec433bd8b87b5e0b (diff)
downloadeclipse.platform.debug-7111ed8b9fb652c7f49cfb204f4681393b52ea37.tar.gz
eclipse.platform.debug-7111ed8b9fb652c7f49cfb204f4681393b52ea37.tar.xz
eclipse.platform.debug-7111ed8b9fb652c7f49cfb204f4681393b52ea37.zip
Bug 292480 - Terminate and Relaunch does not properly support custom models
Diffstat (limited to 'org.eclipse.debug.ui')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java27
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RelaunchActionDelegate.java15
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRelaunchAction.java4
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java13
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java13
5 files changed, 35 insertions, 37 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java
index b2316bcf4..9af543be8 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPlugin.java
@@ -48,6 +48,8 @@ import org.eclipse.debug.core.ILaunchListener;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.core.IStatusHandler;
import org.eclipse.debug.core.Launch;
+import org.eclipse.debug.core.model.IDebugElement;
+import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.internal.core.IInternalDebugCoreConstants;
import org.eclipse.debug.internal.ui.contextlaunching.LaunchingResourceManager;
import org.eclipse.debug.internal.ui.launchConfigurations.ClosedProjectFilter;
@@ -832,6 +834,31 @@ public class DebugUIPlugin extends AbstractUIPlugin implements ILaunchListener {
public void launchRemoved(ILaunch launch) {}
/**
+ * Return the ILaunch associated with a model element, or null if there is
+ * no such association.
+ *
+ * @param element the model element
+ * @return the ILaunch associated with the element, or null.
+ * @since 3.6
+ */
+ public static ILaunch getLaunch(Object element) {
+ // support for custom models
+ ILaunch launch= (ILaunch)DebugPlugin.getAdapter(element, ILaunch.class);
+ if (launch == null) {
+ // support for standard debug model
+ if (element instanceof IDebugElement) {
+ launch= ((IDebugElement)element).getLaunch();
+ } else if (element instanceof ILaunch) {
+ launch= ((ILaunch)element);
+ } else if (element instanceof IProcess) {
+ launch= ((IProcess)element).getLaunch();
+ }
+ }
+ return launch;
+ }
+
+
+ /**
* Save dirty editors before launching, according to preferences.
*
* @return whether to proceed with launch
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RelaunchActionDelegate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RelaunchActionDelegate.java
index d461458a6..bae103538 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RelaunchActionDelegate.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RelaunchActionDelegate.java
@@ -15,6 +15,7 @@ import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.model.IDebugElement;
import org.eclipse.debug.core.model.IProcess;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationManager;
import org.eclipse.debug.ui.DebugUITools;
@@ -24,23 +25,11 @@ public class RelaunchActionDelegate extends AbstractDebugActionDelegate {
* @see AbstractDebugActionDelegate#doAction(Object)
*/
protected void doAction(Object object) {
- ILaunch launch= getLaunch(object);
+ ILaunch launch= DebugUIPlugin.getLaunch(object);
if (launch != null) {
relaunch(launch.getLaunchConfiguration(), launch.getLaunchMode());
}
}
-
- public static ILaunch getLaunch(Object element) {
- ILaunch launch= null;
- if (element instanceof IDebugElement) {
- launch= ((IDebugElement)element).getLaunch();
- } else if (element instanceof ILaunch) {
- launch= ((ILaunch)element);
- } else if (element instanceof IProcess) {
- launch= ((IProcess)element).getLaunch();
- }
- return launch;
- }
/**
* Re-launches the given configuration in the specified mode.
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRelaunchAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRelaunchAction.java
index 07c5974f7..ff576bd89 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRelaunchAction.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRelaunchAction.java
@@ -38,7 +38,7 @@ public class TerminateAndRelaunchAction extends DebugCommandAction {
// Must be run in the UI thread since the launch can require
// prompting to proceed
for (int i = 0; i < targets.length; i++) {
- ILaunch launch = RelaunchActionDelegate.getLaunch(targets[i]);
+ ILaunch launch = DebugUIPlugin.getLaunch(targets[i]);
RelaunchActionDelegate.relaunch(launch.getLaunchConfiguration(), launch.getLaunchMode());
}
}
@@ -66,7 +66,7 @@ public class TerminateAndRelaunchAction extends DebugCommandAction {
}
protected boolean canRelaunch(Object element) {
- ILaunch launch = RelaunchActionDelegate.getLaunch(element);
+ ILaunch launch = DebugUIPlugin.getLaunch(element);
if (launch != null) {
ILaunchConfiguration configuration = launch.getLaunchConfiguration();
if (configuration != null) {
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java
index af0ed98bb..afcfebc40 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/commands/actions/TerminateAndRemoveAction.java
@@ -15,9 +15,8 @@ import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.IRequest;
import org.eclipse.debug.core.commands.ITerminateHandler;
-import org.eclipse.debug.core.model.IDebugElement;
-import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.internal.ui.DebugPluginImages;
+import org.eclipse.debug.internal.ui.DebugUIPlugin;
import org.eclipse.debug.internal.ui.IInternalDebugUIConstants;
import org.eclipse.debug.internal.ui.actions.ActionMessages;
import org.eclipse.debug.ui.actions.DebugCommandAction;
@@ -66,15 +65,7 @@ public class TerminateAndRemoveAction extends DebugCommandAction {
IStatus status = request.getStatus();
if(status == null || status.isOK()) {
for (int i = 0; i < targets.length; i++) {
- Object element = targets[i];
- ILaunch launch= null;
- if (element instanceof ILaunch) {
- launch= (ILaunch) element;
- } else if (element instanceof IDebugElement) {
- launch= ((IDebugElement) element).getLaunch();
- } else if (element instanceof IProcess) {
- launch= ((IProcess) element).getLaunch();
- }
+ ILaunch launch = DebugUIPlugin.getLaunch(targets[i]);
if (launch != null)
DebugPlugin.getDefault().getLaunchManager().removeLaunch(launch);
}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java
index fff336567..327dfc817 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java
@@ -32,7 +32,6 @@ import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.core.commands.IRestartHandler;
-import org.eclipse.debug.core.model.IDebugElement;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.core.model.IStackFrame;
@@ -838,16 +837,8 @@ public class LaunchView extends AbstractDebugView implements ISelectionChangedLi
* Terminates and removes the given element from the launch manager
*/
public static void terminateAndRemove(Object element) throws DebugException {
- ILaunch launch= null;
- ITerminate terminable = null;
- if (element instanceof ILaunch) {
- launch= (ILaunch) element;
- } else if (element instanceof IDebugElement) {
- launch= ((IDebugElement) element).getLaunch();
- } else if (element instanceof IProcess) {
- launch= ((IProcess) element).getLaunch();
- }
- terminable = launch;
+ ILaunch launch = DebugUIPlugin.getLaunch(element);
+ ITerminate terminable = launch;
if (terminable == null) {
if (element instanceof ITerminate) {
terminable = (ITerminate) element;

Back to the top