Revert "Bug 396734 - Can't type anymore in Java Stack Trace console"
This reverts commit 5d37d3c4b8decae806eb51891065661054a25a88.
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/console/JavaStackTraceConsole.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/console/JavaStackTraceConsole.java
index 9534928..70f221c 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/console/JavaStackTraceConsole.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/console/JavaStackTraceConsole.java
@@ -28,7 +28,9 @@
import org.eclipse.jdt.internal.debug.ui.IJavaDebugHelpContextIds;
import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin;
import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.text.DocumentEvent;
import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IDocumentListener;
import org.eclipse.jface.text.rules.FastPartitioner;
import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;
import org.eclipse.jface.util.IPropertyChangeListener;
@@ -47,6 +49,24 @@
public class JavaStackTraceConsole extends TextConsole {
/**
+ * Removes the stack trace console hint text displayed when
+ * the view is first opened. Should be called when content is
+ * first entered into the console.
+ */
+ private static class JavaStackTraceConsoleCleaner implements IDocumentListener {
+
+ public void documentAboutToBeChanged(DocumentEvent event) {
+ event.fDocument.removeDocumentListener(this);
+ // We must clear the document twice otherwise the ConsoleDocumentAdapter gets confused about where to insert text (Bug 396734)
+ event.fDocument.set(""); //$NON-NLS-1$
+ event.fDocument.set(""); //$NON-NLS-1$
+ }
+
+ public void documentChanged(DocumentEvent event) {
+ }
+ }
+
+ /**
* Provides a partitioner for this console type
*/
class JavaStackTraceConsolePartitioner extends FastPartitioner implements IConsoleDocumentPartitioner {
@@ -108,6 +128,10 @@
fin.close();
} catch (IOException e) {
}
+ } else {
+ IDocument doc = getDocument();
+ doc.set(ConsoleMessages.JavaStackTraceConsole_0);
+ doc.addDocumentListener(new JavaStackTraceConsoleCleaner());
}
}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/console/JavaStackTraceConsoleViewer.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/console/JavaStackTraceConsoleViewer.java
index 67cf324..cf3026f 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/console/JavaStackTraceConsoleViewer.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/console/JavaStackTraceConsoleViewer.java
@@ -10,17 +10,17 @@
*******************************************************************************/
package org.eclipse.jdt.internal.debug.ui.console;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+
+import org.eclipse.jface.text.ITextOperationTarget;
+
+import org.eclipse.ui.console.TextConsoleViewer;
+
import org.eclipse.jdt.internal.debug.ui.IJDIPreferencesConstants;
import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.console.TextConsoleViewer;
/**
* provides the viewer for Java stack trace consoles
@@ -40,25 +40,6 @@
fConsole = console;
getTextWidget().setOrientation(SWT.LEFT_TO_RIGHT);
- // When the console is first opened, paint in instructions, clear them when the document is changed
- if (getDocument().getLength() == 0){
- final PaintListener paintListener = new PaintListener() {
- public void paintControl(PaintEvent e) {
- e.gc.drawText(ConsoleMessages.JavaStackTraceConsole_0, 0, 0);
- }
- };
- getTextWidget().addPaintListener(paintListener);
- getDocument().addDocumentListener(new IDocumentListener() {
- public void documentChanged(DocumentEvent event) {
- getTextWidget().removePaintListener(paintListener);
- event.fDocument.removeDocumentListener(this);
- }
-
- public void documentAboutToBeChanged(DocumentEvent event) {
- }
- });
- }
-
IPreferenceStore fPreferenceStore = JDIDebugUIPlugin.getDefault().getPreferenceStore();
fAutoFormat = fPreferenceStore.getBoolean(IJDIPreferencesConstants.PREF_AUTO_FORMAT_JSTCONSOLE);
}