diff options
author | Tobias Schwarz | 2014-10-02 11:07:19 +0000 |
---|---|---|
committer | Tobias Schwarz | 2014-10-02 11:07:19 +0000 |
commit | 8caf3c1794b0ab57f4f14ee8946c411c8592e325 (patch) | |
tree | 18bcf63a93ded4894e15548a3106393c9b1ab10a | |
parent | 320910c7c1d421a28e55c640124a75e0279f2743 (diff) | |
download | org.eclipse.tcf-8caf3c1794b0ab57f4f14ee8946c411c8592e325.tar.gz org.eclipse.tcf-8caf3c1794b0ab57f4f14ee8946c411c8592e325.tar.xz org.eclipse.tcf-8caf3c1794b0ab57f4f14ee8946c411c8592e325.zip |
Target Explorer: enable reattach on connection recovered
2 files changed, 26 insertions, 3 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/delegates/Launch.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/delegates/Launch.java index 93852a26b..d5b1c4613 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/delegates/Launch.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.core/src/org/eclipse/tcf/te/tcf/launch/core/delegates/Launch.java @@ -17,6 +17,7 @@ import java.util.Map; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; +import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.tcf.internal.debug.model.TCFLaunch; @@ -48,6 +49,8 @@ public final class Launch extends TCFLaunch { private ICallback callback = null; + private boolean manualDisconnected = false; + /** * Non-notifying properties container used for data exchange between the steps. */ @@ -88,6 +91,8 @@ public final class Launch extends TCFLaunch { Assert.isNotNull(node); Assert.isNotNull(callback); + manualDisconnected = false; + // Remember the peer node properties.setProperty("node", node); //$NON-NLS-1$ // Determine the peer name to pass on to the TCF launch @@ -132,6 +137,19 @@ public final class Launch extends TCFLaunch { }); } + public boolean isManualDisconnected() { + return manualDisconnected; + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.internal.debug.model.TCFLaunch#disconnect() + */ + @Override + public void disconnect() throws DebugException { + manualDisconnected = true; + super.disconnect(); + } + /* (non-Javadoc) * @see org.eclipse.tcf.internal.debug.model.TCFLaunch#getPeerName(org.eclipse.tcf.protocol.IPeer) */ diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/internal/services/DebugService.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/internal/services/DebugService.java index f50aef0fa..b220bbd75 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/internal/services/DebugService.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/internal/services/DebugService.java @@ -197,12 +197,17 @@ public class DebugService extends AbstractService implements IDebugService { ILaunch[] launches = DebugPlugin.getDefault().getLaunchManager().getLaunches(); for (ILaunch launch : launches) { try { - if (launch.getLaunchConfiguration().getType().getIdentifier().equals(ILaunchTypes.ATTACH) && launch instanceof IDisconnect && !((IDisconnect)launch).isDisconnected()) { + if (launch.getLaunchConfiguration().getType().getIdentifier().equals(ILaunchTypes.ATTACH)) { IModelNode[] contexts = LaunchContextsPersistenceDelegate.getLaunchContexts(launch.getLaunchConfiguration()); if (contexts != null && contexts.length == 1 && contexts[0].equals(context)) { - ((IDisconnect)launch).disconnect(); + if (launch instanceof IDisconnect && !((IDisconnect)launch).isDisconnected()) { + ((IDisconnect)launch).disconnect(); + data.setProperty(PROPERTY_DEBUGGER_DETACHED, true); + } + else if (launch instanceof Launch) { + data.setProperty(PROPERTY_DEBUGGER_DETACHED, !((Launch)launch).isManualDisconnected()); + } } - data.setProperty(PROPERTY_DEBUGGER_DETACHED, true); } } catch (Exception e) { if (e instanceof ExecutionException && "TCF task aborted".equals(e.getMessage()) //$NON-NLS-1$ |