mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
refactoring: initialization of debug tabs moved to constructors
This commit is contained in:
@@ -129,9 +129,8 @@ public class DebuggerPanelsManager implements ProjectComponent {
|
||||
debugProcess.putUserData(BatchEvaluator.REMOTE_SESSION_KEY, Boolean.TRUE);
|
||||
}
|
||||
|
||||
final DebuggerSessionTab sessionTab = new DebuggerSessionTab(myProject, modelEnvironment.getSessionName(), environment.getIcon());
|
||||
Disposer.register(myProject, sessionTab);
|
||||
RunContentDescriptor runContentDescriptor = sessionTab.attachToSession(debuggerSession, environment);
|
||||
final DebuggerSessionTab sessionTab = new DebuggerSessionTab(myProject, modelEnvironment.getSessionName(), environment, debuggerSession);
|
||||
RunContentDescriptor runContentDescriptor = sessionTab.getRunContentDescriptor();
|
||||
RunContentDescriptor reuseContent = environment.getReuseContent();
|
||||
if (reuseContent != null) {
|
||||
final ProcessHandler prevHandler = reuseContent.getProcessHandler();
|
||||
|
||||
@@ -64,6 +64,7 @@ import com.intellij.xdebugger.XDebuggerBundle;
|
||||
import com.intellij.xdebugger.impl.actions.XDebuggerActions;
|
||||
import com.intellij.xdebugger.impl.ui.DebuggerSessionTabBase;
|
||||
import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -87,10 +88,14 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
|
||||
private static final String THREAD_DUMP_CONTENT_PREFIX = "Dump";
|
||||
private final Icon myIcon;
|
||||
|
||||
public DebuggerSessionTab(final Project project, final String sessionName, @Nullable final Icon icon) {
|
||||
public DebuggerSessionTab(final Project project,
|
||||
final String sessionName,
|
||||
@NotNull final DebugUIEnvironment environment,
|
||||
DebuggerSession debuggerSession) throws ExecutionException {
|
||||
super(project, "JavaDebugger", sessionName);
|
||||
|
||||
myIcon = icon;
|
||||
myIcon = environment.getIcon();
|
||||
myDebuggerSession = debuggerSession;
|
||||
myDebugUIEnvironment = environment;
|
||||
|
||||
final DefaultActionGroup focus = new DefaultActionGroup();
|
||||
focus.add(ActionManager.getInstance().getAction("Debugger.FocusOnBreakpoint"));
|
||||
@@ -179,6 +184,28 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
|
||||
updateStatus(event.getContent());
|
||||
}
|
||||
}, this);
|
||||
|
||||
debuggerSession.getContextManager().addListener(new DebuggerContextListener() {
|
||||
public void changeEvent(DebuggerContextImpl newContext, int event) {
|
||||
if (!myUi.isDisposed()) {
|
||||
attractFramesOnPause(event);
|
||||
myStateManager.fireStateChanged(newContext, event);
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!myUi.isDisposed()) {
|
||||
myUi.updateActionsNow();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
ExecutionResult executionResult = debuggerSession.getProcess().getExecutionResult();
|
||||
myConsole = executionResult.getExecutionConsole();
|
||||
myRunContentDescriptor = new RunContentDescriptor(myConsole, executionResult.getProcessHandler(), myUi.getComponent(), getSessionName(), myIcon);
|
||||
initUI(executionResult);
|
||||
}
|
||||
|
||||
private static void updateStatus(final Content content) {
|
||||
@@ -205,13 +232,9 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
|
||||
return myRunContentDescriptor;
|
||||
}
|
||||
|
||||
private RunContentDescriptor initUI(ExecutionResult executionResult) {
|
||||
|
||||
myConsole = executionResult.getExecutionConsole();
|
||||
myRunContentDescriptor = new RunContentDescriptor(myConsole, executionResult.getProcessHandler(), myUi.getComponent(), getSessionName(), myIcon);
|
||||
|
||||
private void initUI(ExecutionResult executionResult) {
|
||||
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
return myRunContentDescriptor;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -314,8 +337,6 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
|
||||
myDebugUIEnvironment.initActions(myRunContentDescriptor, leftToolbar);
|
||||
|
||||
myUi.getOptions().setLeftToolbar(leftToolbar, ActionPlaces.DEBUGGER_TOOLBAR);
|
||||
|
||||
return myRunContentDescriptor;
|
||||
}
|
||||
|
||||
private static void addAction(DefaultActionGroup group, String actionId) {
|
||||
@@ -411,30 +432,6 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
|
||||
return myDebugUIEnvironment != null ? myDebugUIEnvironment.getRunProfile() : null;
|
||||
}
|
||||
|
||||
public RunContentDescriptor attachToSession(final DebuggerSession session, DebugUIEnvironment environment) throws ExecutionException {
|
||||
disposeSession();
|
||||
myDebuggerSession = session;
|
||||
myDebugUIEnvironment = environment;
|
||||
|
||||
session.getContextManager().addListener(new DebuggerContextListener() {
|
||||
public void changeEvent(DebuggerContextImpl newContext, int event) {
|
||||
if (!myUi.isDisposed()) {
|
||||
attractFramesOnPause(event);
|
||||
myStateManager.fireStateChanged(newContext, event);
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!myUi.isDisposed()) {
|
||||
myUi.updateActionsNow();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
return initUI(session.getProcess().getExecutionResult());
|
||||
}
|
||||
|
||||
private void attractFramesOnPause(final int event) {
|
||||
if (DebuggerSession.EVENT_PAUSE == event) {
|
||||
myUi.attractBy(XDebuggerUIConstants.LAYOUT_VIEW_BREAKPOINT_CONDITION);
|
||||
|
||||
@@ -39,7 +39,6 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.markup.GutterIconRenderer;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.MessageType;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.wm.ToolWindowId;
|
||||
import com.intellij.util.EventDispatcher;
|
||||
@@ -237,12 +236,7 @@ public class XDebugSessionImpl implements XDebugSession {
|
||||
}
|
||||
|
||||
private void initSessionTab() {
|
||||
mySessionTab = new XDebugSessionTab(myProject, mySessionName, myIcon);
|
||||
if (myEnvironment != null) {
|
||||
mySessionTab.setEnvironment(myEnvironment);
|
||||
}
|
||||
Disposer.register(myProject, mySessionTab);
|
||||
mySessionTab.attachToSession(this, myRunner, myEnvironment, mySessionData, myConsoleView);
|
||||
mySessionTab = new XDebugSessionTab(myProject, this, myIcon, myEnvironment, myRunner);
|
||||
myDebugProcess.sessionInitialized();
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import com.intellij.ide.ui.customization.CustomActionsSchema;
|
||||
import com.intellij.openapi.actionSystem.ActionGroup;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.ui.AppIcon;
|
||||
import com.intellij.ui.content.Content;
|
||||
@@ -57,6 +58,7 @@ public abstract class DebuggerSessionTabBase extends LogConsoleManagerBase imple
|
||||
|
||||
public DebuggerSessionTabBase(Project project, @NotNull String runnerId, @NotNull final String sessionName) {
|
||||
super(project);
|
||||
Disposer.register(project, this);
|
||||
myManager = new LogFilesManager(project, this, this);
|
||||
|
||||
mySessionName = sessionName;
|
||||
|
||||
@@ -19,12 +19,10 @@ import com.intellij.debugger.ui.DebuggerContentInfo;
|
||||
import com.intellij.execution.Executor;
|
||||
import com.intellij.execution.configurations.RunProfile;
|
||||
import com.intellij.execution.executors.DefaultDebugExecutor;
|
||||
import com.intellij.execution.process.ProcessHandler;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.runners.ProgramRunner;
|
||||
import com.intellij.execution.runners.RestartAction;
|
||||
import com.intellij.execution.runners.RunContentBuilder;
|
||||
import com.intellij.execution.ui.ConsoleView;
|
||||
import com.intellij.execution.ui.ExecutionConsole;
|
||||
import com.intellij.execution.ui.RunContentDescriptor;
|
||||
import com.intellij.execution.ui.actions.CloseAction;
|
||||
@@ -40,6 +38,7 @@ import com.intellij.ui.content.tabs.PinToolwindowTabAction;
|
||||
import com.intellij.xdebugger.XDebugProcess;
|
||||
import com.intellij.xdebugger.XDebugSession;
|
||||
import com.intellij.xdebugger.XDebuggerBundle;
|
||||
import com.intellij.xdebugger.impl.XDebugSessionImpl;
|
||||
import com.intellij.xdebugger.impl.actions.XDebuggerActions;
|
||||
import com.intellij.xdebugger.impl.frame.XDebugViewBase;
|
||||
import com.intellij.xdebugger.impl.frame.XFramesView;
|
||||
@@ -59,11 +58,17 @@ import java.util.List;
|
||||
public class XDebugSessionTab extends DebuggerSessionTabBase {
|
||||
private XWatchesView myWatchesView;
|
||||
private final List<XDebugViewBase> myViews = new ArrayList<XDebugViewBase>();
|
||||
private final Icon myIcon;
|
||||
|
||||
public XDebugSessionTab(@NotNull final Project project, @NotNull final String sessionName, final @Nullable Icon icon) {
|
||||
super(project, "Debug", sessionName);
|
||||
myIcon = icon;
|
||||
public XDebugSessionTab(@NotNull final Project project, @NotNull final XDebugSessionImpl session, final @Nullable Icon icon,
|
||||
ExecutionEnvironment environment, ProgramRunner runner) {
|
||||
super(project, "Debug", session.getSessionName());
|
||||
if (environment != null) {
|
||||
setEnvironment(environment);
|
||||
}
|
||||
myConsole = session.getConsoleView();
|
||||
XDebugProcess debugProcess = session.getDebugProcess();
|
||||
myRunContentDescriptor = new RunContentDescriptor(myConsole, debugProcess.getProcessHandler(), myUi.getComponent(), mySessionName, icon);
|
||||
attachToSession(session, runner, environment, session.getSessionData(), debugProcess);
|
||||
}
|
||||
|
||||
private Content createConsoleContent() {
|
||||
@@ -123,14 +128,9 @@ public class XDebugSessionTab extends DebuggerSessionTabBase {
|
||||
return myWatchesView;
|
||||
}
|
||||
|
||||
public RunContentDescriptor attachToSession(final @NotNull XDebugSession session, final @Nullable ProgramRunner runner,
|
||||
final @Nullable ExecutionEnvironment env,
|
||||
final @NotNull XDebugSessionData sessionData, ConsoleView consoleView) {
|
||||
final XDebugProcess debugProcess = session.getDebugProcess();
|
||||
ProcessHandler processHandler = debugProcess.getProcessHandler();
|
||||
myConsole = consoleView;
|
||||
myRunContentDescriptor = new RunContentDescriptor(myConsole, processHandler, myUi.getComponent(), mySessionName, myIcon);
|
||||
|
||||
private void attachToSession(final @NotNull XDebugSession session, final @Nullable ProgramRunner runner,
|
||||
final @Nullable ExecutionEnvironment env, final @NotNull XDebugSessionData sessionData,
|
||||
final @NotNull XDebugProcess debugProcess) {
|
||||
myUi.addContent(createFramesContent(session), 0, PlaceInGrid.left, false);
|
||||
myUi.addContent(createVariablesContent(session), 0, PlaceInGrid.center, false);
|
||||
myUi.addContent(createWatchesContent(session, sessionData), 0, PlaceInGrid.right, false);
|
||||
@@ -142,7 +142,7 @@ public class XDebugSessionTab extends DebuggerSessionTabBase {
|
||||
RunContentBuilder.addAdditionalConsoleEditorActions(myConsole, consoleContent);
|
||||
|
||||
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
return myRunContentDescriptor;
|
||||
return;
|
||||
}
|
||||
|
||||
DefaultActionGroup leftToolbar = new DefaultActionGroup();
|
||||
@@ -196,7 +196,7 @@ public class XDebugSessionTab extends DebuggerSessionTabBase {
|
||||
DefaultActionGroup topToolbar = new DefaultActionGroup();
|
||||
topToolbar.addAll(getCustomizedActionGroup(XDebuggerActions.TOOL_WINDOW_TOP_TOOLBAR_GROUP));
|
||||
|
||||
session.getDebugProcess().registerAdditionalActions(leftToolbar, topToolbar);
|
||||
debugProcess.registerAdditionalActions(leftToolbar, topToolbar);
|
||||
myUi.getOptions().setLeftToolbar(leftToolbar, ActionPlaces.DEBUGGER_TOOLBAR);
|
||||
myUi.getOptions().setTopToolbar(topToolbar, ActionPlaces.DEBUGGER_TOOLBAR);
|
||||
|
||||
@@ -207,8 +207,6 @@ public class XDebugSessionTab extends DebuggerSessionTabBase {
|
||||
}
|
||||
|
||||
rebuildViews();
|
||||
|
||||
return myRunContentDescriptor;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user