[jvm console view] don't fold stack traces in analyze stack trace views, IDEA-364517

^IDEA-364517 fixed

GitOrigin-RevId: 8e38e31b7b8a928aa38e4bddf142dac526c223a1
This commit is contained in:
Vladimir Parfinenko
2024-12-10 17:28:44 +00:00
committed by intellij-monorepo-bot
parent 0f261ac63e
commit 617ef4d003
5 changed files with 14 additions and 6 deletions
@@ -4,9 +4,9 @@ package com.intellij.execution.filters
import com.intellij.execution.ConsoleFolding
import com.intellij.execution.ExecutionBundle
import com.intellij.execution.ui.ConsoleView
import com.intellij.execution.ui.NoStackTraceFoldingPanel
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.getParentOfType
import com.intellij.unscramble.ThreadDumpPanel
private const val STACK_TRACE_ELEMENT_PREFIX = "\tat "
private const val ASYNC_STACK_TRACE_PREFIX = "\tat --- Async.Stack.Trace --- "
@@ -51,6 +51,5 @@ class StackTraceFolding : ConsoleFolding() {
override fun isEnabledForConsole(consoleView: ConsoleView): Boolean =
super.isEnabledForConsole(consoleView) &&
enabled &&
// We want unfolded stack traces inside ThreadDumpPanel.
consoleView.component.getParentOfType<ThreadDumpPanel>() == null
}
consoleView.component.getParentOfType<NoStackTraceFoldingPanel>() == null
}
@@ -4,6 +4,7 @@ package com.intellij.unscramble;
import com.intellij.CommonBundle;
import com.intellij.codeInsight.highlighting.HighlightManager;
import com.intellij.execution.ui.ConsoleView;
import com.intellij.execution.ui.NoStackTraceFoldingPanel;
import com.intellij.icons.AllIcons;
import com.intellij.ide.DataManager;
import com.intellij.ide.ExporterToTextFile;
@@ -52,7 +53,7 @@ import static com.intellij.icons.AllIcons.Debugger.ThreadStates.*;
* @author Jeka
* @author Konstantin Bulenkov
*/
public final class ThreadDumpPanel extends JPanel implements UiDataProvider {
public final class ThreadDumpPanel extends JPanel implements UiDataProvider, NoStackTraceFoldingPanel {
private static final Icon PAUSE_ICON_DAEMON = LayeredIcon.layeredIcon(() -> new Icon[]{AllIcons.Actions.Pause, Daemon_sign});
private static final Icon LOCKED_ICON_DAEMON = LayeredIcon.layeredIcon(() -> new Icon[]{AllIcons.Debugger.MuteBreakpoints, Daemon_sign});
private static final Icon RUNNING_ICON_DAEMON = LayeredIcon.layeredIcon(() -> new Icon[]{AllIcons.Actions.Resume, Daemon_sign});
@@ -1767,6 +1767,7 @@ com.intellij.execution.ui.ExecutionConsoleEx
- com.intellij.execution.ui.ExecutionConsole
- a:buildUi(com.intellij.execution.ui.RunnerLayoutUi):V
- a:getExecutionConsoleId():java.lang.String
com.intellij.execution.ui.NoStackTraceFoldingPanel
com.intellij.execution.ui.ObservableConsoleView
- a:addChangeListener(com.intellij.execution.ui.ObservableConsoleView$ChangeListener,com.intellij.openapi.Disposable):V
com.intellij.execution.ui.ObservableConsoleView$ChangeListener
@@ -0,0 +1,7 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.execution.ui
/**
* The marker interface which can be used to disable any stack trace folding in nested consoles.
*/
interface NoStackTraceFoldingPanel
@@ -145,7 +145,7 @@ class AnalyzeStacktraceUtil private constructor(){
fun createConsoleComponent(consoleView: ConsoleView?, toolbarActions: DefaultActionGroup?): JComponent?
}
private class MyConsolePanel(consoleView: ExecutionConsole, toolbarActions: ActionGroup) : JPanel(BorderLayout()) {
private class MyConsolePanel(consoleView: ExecutionConsole, toolbarActions: ActionGroup) : JPanel(BorderLayout()), NoStackTraceFoldingPanel {
init {
val toolbarPanel = JPanel(BorderLayout())
val toolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.ANALYZE_STACKTRACE_PANEL_TOOLBAR, toolbarActions, false)