From 681412f23011527a52f391de5230e80bef1ac3df Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 12 Jul 2010 20:04:21 +0100 Subject: [PATCH] synchronous stacktrace folding when selecting tests (junit) or threads (analyze dump) --- .../com/intellij/execution/impl/ConsoleViewImpl.java | 5 +++++ .../intellij/unscramble/AnalyzeStacktraceUtil.java | 12 +++++------- .../testframework/ui/TestsOutputConsolePrinter.java | 4 ++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java index a19cc284deac..e4bd53ac8ae2 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java @@ -148,6 +148,11 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo public void foldImmediately() { ApplicationManager.getApplication().assertIsDispatchThread(); + if (myFlushAlarm.getActiveRequestCount() > 0) { + myFlushAlarm.cancelAllRequests(); + myFlushDeferredRunnable.run(); + } + myFoldingAlarm.cancelAllRequests(); myPendingFoldRegions.clear(); diff --git a/platform/lang-impl/src/com/intellij/unscramble/AnalyzeStacktraceUtil.java b/platform/lang-impl/src/com/intellij/unscramble/AnalyzeStacktraceUtil.java index 6a639037024d..05dba037c092 100644 --- a/platform/lang-impl/src/com/intellij/unscramble/AnalyzeStacktraceUtil.java +++ b/platform/lang-impl/src/com/intellij/unscramble/AnalyzeStacktraceUtil.java @@ -22,6 +22,7 @@ import com.intellij.execution.executors.DefaultRunExecutor; import com.intellij.execution.filters.Filter; import com.intellij.execution.filters.TextConsoleBuilder; import com.intellij.execution.filters.TextConsoleBuilderFactory; +import com.intellij.execution.impl.ConsoleViewImpl; import com.intellij.execution.ui.ConsoleView; import com.intellij.execution.ui.ConsoleViewContentType; import com.intellij.execution.ui.ExecutionConsole; @@ -61,13 +62,10 @@ public class AnalyzeStacktraceUtil { public static void printStacktrace(final ConsoleView consoleView, final String unscrambledTrace) { consoleView.clear(); consoleView.print(unscrambledTrace+"\n", ConsoleViewContentType.ERROR_OUTPUT); - consoleView.performWhenNoDeferredOutput( - new Runnable() { - public void run() { - consoleView.scrollTo(0); - } - } - ); + if (consoleView instanceof ConsoleViewImpl) { + ((ConsoleViewImpl)consoleView).foldImmediately(); + } + consoleView.scrollTo(0); } @Nullable diff --git a/platform/testRunner/src/com/intellij/execution/testframework/ui/TestsOutputConsolePrinter.java b/platform/testRunner/src/com/intellij/execution/testframework/ui/TestsOutputConsolePrinter.java index 663312c242d0..0ce237470883 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/ui/TestsOutputConsolePrinter.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/ui/TestsOutputConsolePrinter.java @@ -16,6 +16,7 @@ package com.intellij.execution.testframework.ui; import com.intellij.execution.filters.HyperlinkInfo; +import com.intellij.execution.impl.ConsoleViewImpl; import com.intellij.execution.testframework.*; import com.intellij.execution.ui.ConsoleView; import com.intellij.execution.ui.ConsoleViewContentType; @@ -108,6 +109,9 @@ public class TestsOutputConsolePrinter implements Printer, Disposable { } myCurrentPrintable.printOn(this); scrollToBeginning(); + if (myConsole instanceof ConsoleViewImpl) { + ((ConsoleViewImpl)myConsole).foldImmediately(); + } } public void printHyperlink(final String text, final HyperlinkInfo info) {