mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
moved addThreadDump to utils
This commit is contained in:
@@ -27,8 +27,8 @@ import com.intellij.debugger.engine.DebugProcessImpl;
|
||||
import com.intellij.debugger.engine.events.DebuggerCommandImpl;
|
||||
import com.intellij.debugger.impl.DebuggerContextImpl;
|
||||
import com.intellij.debugger.impl.DebuggerSession;
|
||||
import com.intellij.debugger.impl.DebuggerUtilsEx;
|
||||
import com.intellij.debugger.jdi.VirtualMachineProxyImpl;
|
||||
import com.intellij.debugger.ui.DebuggerSessionTab;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
@@ -70,7 +70,7 @@ public class ThreadDumpAction extends AnAction implements AnAction.TransparentUp
|
||||
public void run() {
|
||||
XDebugSession xSession = session.getXDebugSession();
|
||||
if (xSession != null) {
|
||||
DebuggerSessionTab.addThreadDump(project, threads, xSession.getUI(), session);
|
||||
DebuggerUtilsEx.addThreadDump(project, threads, xSession.getUI(), session);
|
||||
}
|
||||
}
|
||||
}, ModalityState.NON_MODAL);
|
||||
|
||||
@@ -33,7 +33,14 @@ import com.intellij.debugger.requests.Requestor;
|
||||
import com.intellij.debugger.ui.CompletionEditor;
|
||||
import com.intellij.debugger.ui.breakpoints.Breakpoint;
|
||||
import com.intellij.debugger.ui.tree.DebuggerTreeNode;
|
||||
import com.intellij.execution.filters.ExceptionFilters;
|
||||
import com.intellij.execution.filters.TextConsoleBuilder;
|
||||
import com.intellij.execution.filters.TextConsoleBuilderFactory;
|
||||
import com.intellij.execution.ui.ConsoleView;
|
||||
import com.intellij.execution.ui.RunnerLayoutUi;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
@@ -47,6 +54,9 @@ import com.intellij.pom.Navigatable;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.ui.classFilter.ClassFilter;
|
||||
import com.intellij.ui.content.Content;
|
||||
import com.intellij.unscramble.ThreadDumpPanel;
|
||||
import com.intellij.unscramble.ThreadState;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.xdebugger.XSourcePosition;
|
||||
@@ -399,6 +409,43 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils {
|
||||
return null;
|
||||
}
|
||||
|
||||
private static int myThreadDumpsCount = 0;
|
||||
private static int myCurrentThreadDumpId = 1;
|
||||
|
||||
private static final String THREAD_DUMP_CONTENT_PREFIX = "Dump";
|
||||
|
||||
public static void addThreadDump(Project project, List<ThreadState> threads, final RunnerLayoutUi ui, DebuggerSession session) {
|
||||
final TextConsoleBuilder consoleBuilder = TextConsoleBuilderFactory.getInstance().createBuilder(project);
|
||||
consoleBuilder.filters(ExceptionFilters.getFilters(session.getSearchScope()));
|
||||
final ConsoleView consoleView = consoleBuilder.getConsole();
|
||||
final DefaultActionGroup toolbarActions = new DefaultActionGroup();
|
||||
consoleView.allowHeavyFilters();
|
||||
final ThreadDumpPanel panel = new ThreadDumpPanel(project, consoleView, toolbarActions, threads);
|
||||
|
||||
final String id = THREAD_DUMP_CONTENT_PREFIX + " #" + myCurrentThreadDumpId;
|
||||
final Content content = ui.createContent(id, panel, id, null, null);
|
||||
content.setCloseable(true);
|
||||
content.setDescription("Thread Dump");
|
||||
ui.addContent(content);
|
||||
ui.selectAndFocus(content, true, true);
|
||||
myThreadDumpsCount++;
|
||||
myCurrentThreadDumpId++;
|
||||
Disposer.register(content, new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
myThreadDumpsCount--;
|
||||
if (myThreadDumpsCount == 0) {
|
||||
myCurrentThreadDumpId = 1;
|
||||
}
|
||||
}
|
||||
});
|
||||
Disposer.register(content, consoleView);
|
||||
ui.selectAndFocus(content, true, false);
|
||||
if (threads.size() > 0) {
|
||||
panel.selectStackFrame(0);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract DebuggerTreeNode getSelectedNode (DataContext context);
|
||||
|
||||
public abstract EvaluatorBuilder getEvaluatorBuilder();
|
||||
|
||||
@@ -36,12 +36,8 @@ import com.intellij.execution.ExecutionManager;
|
||||
import com.intellij.execution.ExecutionResult;
|
||||
import com.intellij.execution.configurations.RunProfile;
|
||||
import com.intellij.execution.executors.DefaultDebugExecutor;
|
||||
import com.intellij.execution.filters.ExceptionFilters;
|
||||
import com.intellij.execution.filters.TextConsoleBuilder;
|
||||
import com.intellij.execution.filters.TextConsoleBuilderFactory;
|
||||
import com.intellij.execution.ui.ConsoleView;
|
||||
import com.intellij.execution.ui.ExecutionConsoleEx;
|
||||
import com.intellij.execution.ui.RunnerLayoutUi;
|
||||
import com.intellij.execution.ui.layout.PlaceInGrid;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.idea.ActionsBundle;
|
||||
@@ -56,8 +52,6 @@ import com.intellij.ui.content.Content;
|
||||
import com.intellij.ui.content.ContentManagerAdapter;
|
||||
import com.intellij.ui.content.ContentManagerEvent;
|
||||
import com.intellij.ui.content.tabs.PinToolwindowTabAction;
|
||||
import com.intellij.unscramble.ThreadDumpPanel;
|
||||
import com.intellij.unscramble.ThreadState;
|
||||
import com.intellij.xdebugger.XDebuggerBundle;
|
||||
import com.intellij.xdebugger.impl.actions.XDebuggerActions;
|
||||
import com.intellij.xdebugger.impl.settings.XDebuggerSettingsManager;
|
||||
@@ -68,7 +62,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.tree.TreePath;
|
||||
import java.util.List;
|
||||
|
||||
public class DebuggerSessionTab extends DebuggerSessionTabBase implements Disposable {
|
||||
private static final Logger LOG = Logger.getInstance(DebuggerSessionTab.class);
|
||||
@@ -84,7 +77,6 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
|
||||
private final DebugUIEnvironment myDebugUIEnvironment;
|
||||
|
||||
private final ThreadsPanel myThreadsPanel;
|
||||
private static final String THREAD_DUMP_CONTENT_PREFIX = "Dump";
|
||||
|
||||
public DebuggerSessionTab(final Project project, final String sessionName, @NotNull final DebugUIEnvironment environment,
|
||||
@NotNull DebuggerSession debuggerSession) {
|
||||
@@ -447,51 +439,6 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
|
||||
myUi.selectAndFocus(myUi.findContent(DebuggerContentInfo.FRAME_CONTENT), true, false);
|
||||
}
|
||||
|
||||
private static int myThreadDumpsCount = 0;
|
||||
private static int myCurrentThreadDumpId = 1;
|
||||
|
||||
public static void addThreadDump(Project project, List<ThreadState> threads, final RunnerLayoutUi ui, DebuggerSession session) {
|
||||
final TextConsoleBuilder consoleBuilder = TextConsoleBuilderFactory.getInstance().createBuilder(project);
|
||||
consoleBuilder.filters(ExceptionFilters.getFilters(session.getSearchScope()));
|
||||
final ConsoleView consoleView = consoleBuilder.getConsole();
|
||||
final DefaultActionGroup toolbarActions = new DefaultActionGroup();
|
||||
consoleView.allowHeavyFilters();
|
||||
final ThreadDumpPanel panel = new ThreadDumpPanel(project, consoleView, toolbarActions, threads);
|
||||
|
||||
final String id = createThreadDumpContentId();
|
||||
final Content content = ui.createContent(id, panel, id, null, null);
|
||||
content.setCloseable(true);
|
||||
content.setDescription("Thread Dump");
|
||||
ui.addContent(content);
|
||||
ui.selectAndFocus(content, true, true);
|
||||
myThreadDumpsCount += 1;
|
||||
myCurrentThreadDumpId += 1;
|
||||
//Disposer.register(this, new Disposable() {
|
||||
// @Override
|
||||
// public void dispose() {
|
||||
// ui.removeContent(content, true);
|
||||
// }
|
||||
//});
|
||||
Disposer.register(content, new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
myThreadDumpsCount -= 1;
|
||||
if (myThreadDumpsCount == 0) {
|
||||
myCurrentThreadDumpId = 1;
|
||||
}
|
||||
}
|
||||
});
|
||||
Disposer.register(content, consoleView);
|
||||
ui.selectAndFocus(content, true, false);
|
||||
if (threads.size() > 0) {
|
||||
panel.selectStackFrame(0);
|
||||
}
|
||||
}
|
||||
|
||||
private static String createThreadDumpContentId() {
|
||||
return THREAD_DUMP_CONTENT_PREFIX + " #" + myCurrentThreadDumpId;
|
||||
}
|
||||
|
||||
private class MyDebuggerStateManager extends DebuggerStateManager {
|
||||
@Override
|
||||
public void fireStateChanged(DebuggerContextImpl newContext, int event) {
|
||||
|
||||
Reference in New Issue
Block a user