Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreutarass2008-08-15 20:19:22 +0000
committereutarass2008-08-15 20:19:22 +0000
commitcd65d0372df40215f8ae726b3e7876a36faf2c38 (patch)
treea472ba9311d113b52a0e7307f0354be3cfab532a /plugins
parent8a41a283efa06cac3935f04eed28d1d74ce077d4 (diff)
downloadorg.eclipse.tcf-cd65d0372df40215f8ae726b3e7876a36faf2c38.tar.gz
org.eclipse.tcf-cd65d0372df40215f8ae726b3e7876a36faf2c38.tar.xz
org.eclipse.tcf-cd65d0372df40215f8ae726b3e7876a36faf2c38.zip
Bug 244287 Debug new configuration reports "connecting" forever in case of incorrect path
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/adapters/TCFLaunchLabelProvider.java1
-rw-r--r--plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFModel.java22
-rw-r--r--plugins/org.eclipse.tm.tcf.debug/src/org/eclipse/tm/internal/tcf/debug/model/TCFLaunch.java14
3 files changed, 29 insertions, 8 deletions
diff --git a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/adapters/TCFLaunchLabelProvider.java b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/adapters/TCFLaunchLabelProvider.java
index 4415dbbf0..2379579e1 100644
--- a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/adapters/TCFLaunchLabelProvider.java
+++ b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/adapters/TCFLaunchLabelProvider.java
@@ -32,6 +32,7 @@ class TCFLaunchLabelProvider implements IElementLabelProvider {
if (error != null) {
String msg = error.getLocalizedMessage();
if (msg == null || msg.length() == 0) msg = error.getClass().getName();
+ else msg = msg.replace('\n', '|');
status += " - " + msg;
result.setForeground(new RGB(255, 0, 0), 0);
}
diff --git a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFModel.java b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFModel.java
index 5a2e23a89..d18aac74d 100644
--- a/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFModel.java
+++ b/plugins/org.eclipse.tm.tcf.debug.ui/src/org/eclipse/tm/internal/tcf/debug/ui/model/TCFModel.java
@@ -47,8 +47,11 @@ import org.eclipse.debug.ui.sourcelookup.ISourceDisplay;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.tm.internal.tcf.debug.model.TCFLaunch;
import org.eclipse.tm.internal.tcf.debug.model.TCFSourceRef;
import org.eclipse.tm.internal.tcf.debug.ui.Activator;
@@ -289,10 +292,27 @@ public class TCFModel implements IElementContentProvider, IElementLabelProvider,
void onDisconnected() {
assert Protocol.isDispatchThread();
if (launch_node != null) {
- launchChanged();
launch_node.dispose();
launch_node = null;
}
+ final Throwable error = launch.getError();
+ if (error != null) launch.setError(null);
+ display.asyncExec(new Runnable() {
+ public void run() {
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (window == null) return;
+ IDebugView view = (IDebugView)window.getActivePage().findView(IDebugUIConstants.ID_DEBUG_VIEW);
+ if (view != null) ((StructuredViewer)view.getViewer()).refresh(launch);
+ if (error != null) {
+ String msg = error.getLocalizedMessage();
+ if (msg == null || msg.length() == 0) msg = error.getClass().getName();
+ MessageBox mb = new MessageBox(window.getShell(), SWT.ICON_ERROR | SWT.OK);
+ mb.setText("TCF Connection Error");
+ mb.setMessage("Communication channel is closed.\n" + msg);
+ mb.open();
+ }
+ }
+ });
assert id2node.size() == 0;
}
diff --git a/plugins/org.eclipse.tm.tcf.debug/src/org/eclipse/tm/internal/tcf/debug/model/TCFLaunch.java b/plugins/org.eclipse.tm.tcf.debug/src/org/eclipse/tm/internal/tcf/debug/model/TCFLaunch.java
index 2a355d386..b7c30a78d 100644
--- a/plugins/org.eclipse.tm.tcf.debug/src/org/eclipse/tm/internal/tcf/debug/model/TCFLaunch.java
+++ b/plugins/org.eclipse.tm.tcf.debug/src/org/eclipse/tm/internal/tcf/debug/model/TCFLaunch.java
@@ -107,7 +107,6 @@ public class TCFLaunch extends Launch {
for (Iterator<Listener> i = listeners.iterator(); i.hasNext();) {
i.next().onDisconnected(this);
}
- if (error != null) this.error = error;
fireChanged();
runShutdownSequence(new Runnable() {
public void run() {
@@ -208,13 +207,14 @@ public class TCFLaunch extends Launch {
}
public void setError(Throwable x) {
- if (error != null) return;
error = x;
- if (channel != null && channel.getState() == IChannel.STATE_OPEN) {
- channel.terminate(x);
- }
- else if (!connecting) {
- disconnected = true;
+ if (x != null) {
+ if (channel != null && channel.getState() == IChannel.STATE_OPEN) {
+ channel.terminate(x);
+ }
+ else if (!connecting) {
+ disconnected = true;
+ }
}
fireChanged();
}

Back to the top