mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Debugger: java and xdebugger SessionTab generalized
This commit is contained in:
@@ -43,10 +43,7 @@ import com.intellij.execution.runners.RestartAction;
|
||||
import com.intellij.execution.ui.ConsoleView;
|
||||
import com.intellij.execution.ui.ExecutionConsoleEx;
|
||||
import com.intellij.execution.ui.RunContentDescriptor;
|
||||
import com.intellij.execution.ui.RunnerLayoutUi;
|
||||
import com.intellij.execution.ui.actions.CloseAction;
|
||||
import com.intellij.execution.ui.layout.LayoutAttractionPolicy;
|
||||
import com.intellij.execution.ui.layout.LayoutViewOptions;
|
||||
import com.intellij.execution.ui.layout.PlaceInGrid;
|
||||
import com.intellij.ide.CommonActionsManager;
|
||||
import com.intellij.ide.actions.ContextHelpAction;
|
||||
@@ -91,7 +88,6 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
|
||||
private final MyDebuggerStateManager myStateManager = new MyDebuggerStateManager();
|
||||
|
||||
private final FramesPanel myFramesPanel;
|
||||
private final RunnerLayoutUi myUi;
|
||||
private ExecutionEnvironment myEnvironment;
|
||||
private RunProfile myConfiguration;
|
||||
|
||||
@@ -100,16 +96,10 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
|
||||
private final Icon myIcon;
|
||||
|
||||
public DebuggerSessionTab(final Project project, final String sessionName, @Nullable final Icon icon) {
|
||||
super(project);
|
||||
super(project, "JavaDebugger", sessionName);
|
||||
|
||||
myIcon = icon;
|
||||
|
||||
myUi = RunnerLayoutUi.Factory.getInstance(project).create("JavaDebugger", XDebuggerBundle.message("xdebugger.default.content.title"), sessionName, this);
|
||||
|
||||
myUi.getDefaults().initTabDefaults(0, XDebuggerBundle.message("xdebugger.debugger.tab.title"), null).
|
||||
initFocusContent(DebuggerContentInfo.FRAME_CONTENT, XDebuggerUIConstants.LAYOUT_VIEW_BREAKPOINT_CONDITION).
|
||||
initFocusContent(DebuggerContentInfo.CONSOLE_CONTENT, LayoutViewOptions.STARTUP, new LayoutAttractionPolicy.FocusOnce(false));
|
||||
|
||||
final DefaultActionGroup focus = new DefaultActionGroup();
|
||||
focus.add(ActionManager.getInstance().getAction("Debugger.FocusOnBreakpoint"));
|
||||
myUi.getOptions().setAdditionalFocusActions(focus);
|
||||
@@ -222,11 +212,6 @@ public class DebuggerSessionTab extends DebuggerSessionTabBase implements Dispos
|
||||
}, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RunnerLayoutUi getUi() {
|
||||
return myUi;
|
||||
}
|
||||
|
||||
private static void updateStatus(final Content content) {
|
||||
if (content.getComponent() instanceof DebuggerView) {
|
||||
final DebuggerView view = (DebuggerView)content.getComponent();
|
||||
|
||||
@@ -89,7 +89,7 @@ public interface RunnerLayoutUi {
|
||||
return ServiceManager.getService(project, Factory.class);
|
||||
}
|
||||
|
||||
public abstract RunnerLayoutUi create(@NotNull String runnerType, @NotNull String runnerTitle, @NotNull String sessionName, @NotNull Disposable parent);
|
||||
public abstract RunnerLayoutUi create(@NotNull String runnerId, @NotNull String runnerTitle, @NotNull String sessionName, @NotNull Disposable parent);
|
||||
}
|
||||
|
||||
}
|
||||
+2
-2
@@ -28,7 +28,7 @@ public class RunnerLayoutUiFactoryImpl extends RunnerLayoutUi.Factory {
|
||||
myProject = project;
|
||||
}
|
||||
|
||||
public RunnerLayoutUi create(@NotNull final String runnerType, @NotNull final String runnerTitle, @NotNull final String sessionName, @NotNull final Disposable parent) {
|
||||
return new RunnerLayoutUiImpl(myProject, parent, runnerType, runnerTitle, sessionName);
|
||||
public RunnerLayoutUi create(@NotNull final String runnerId, @NotNull final String runnerTitle, @NotNull final String sessionName, @NotNull final Disposable parent) {
|
||||
return new RunnerLayoutUiImpl(myProject, parent, runnerId, runnerTitle, sessionName);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -54,8 +54,8 @@ public class RunnerLayoutUiImpl implements Disposable, RunnerLayoutUi, LayoutSta
|
||||
private final ContentManager myViewsContentManager;
|
||||
public static final Key<String> CONTENT_TYPE = Key.create("ContentType");
|
||||
|
||||
public RunnerLayoutUiImpl(Project project, Disposable parent, String runnerType, String runnerTitle, String sessionName) {
|
||||
myLayout = RunnerLayoutSettings.getInstance().getLayout(runnerType);
|
||||
public RunnerLayoutUiImpl(Project project, Disposable parent, String runnerId, String runnerTitle, String sessionName) {
|
||||
myLayout = RunnerLayoutSettings.getInstance().getLayout(runnerId);
|
||||
Disposer.register(parent, this);
|
||||
|
||||
myContentUI = new RunnerContentUi(project, this, ActionManager.getInstance(), IdeFocusManager.getInstance(project), myLayout,
|
||||
|
||||
+28
-6
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.xdebugger.impl.ui;
|
||||
|
||||
import com.intellij.debugger.ui.DebuggerContentInfo;
|
||||
import com.intellij.diagnostic.logging.*;
|
||||
import com.intellij.execution.ExecutionManager;
|
||||
import com.intellij.execution.configurations.RunConfigurationBase;
|
||||
@@ -23,6 +24,8 @@ import com.intellij.execution.executors.DefaultDebugExecutor;
|
||||
import com.intellij.execution.process.ProcessHandler;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.ui.*;
|
||||
import com.intellij.execution.ui.layout.LayoutAttractionPolicy;
|
||||
import com.intellij.execution.ui.layout.LayoutViewOptions;
|
||||
import com.intellij.ide.impl.ProjectUtil;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
@@ -38,6 +41,7 @@ import com.intellij.ui.content.Content;
|
||||
import com.intellij.ui.content.ContentManagerAdapter;
|
||||
import com.intellij.ui.content.ContentManagerEvent;
|
||||
import com.intellij.ui.content.ContentManagerListener;
|
||||
import com.intellij.xdebugger.XDebuggerBundle;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -53,11 +57,16 @@ import java.util.Map;
|
||||
* @author nik
|
||||
*/
|
||||
public abstract class DebuggerSessionTabBase implements DebuggerLogConsoleManager, Disposable {
|
||||
private final Map<AdditionalTabComponent, Content> myAdditionalContent = new HashMap<AdditionalTabComponent, Content>();
|
||||
private final Map<AdditionalTabComponent, ContentManagerListener> myContentListeners =
|
||||
@NotNull private final Project myProject;
|
||||
@NotNull private final LogFilesManager myManager;
|
||||
|
||||
@NotNull final String mySessionName;
|
||||
@NotNull protected final RunnerLayoutUi myUi;
|
||||
|
||||
@NotNull private final Map<AdditionalTabComponent, Content> myAdditionalContent = new HashMap<AdditionalTabComponent, Content>();
|
||||
@NotNull private final Map<AdditionalTabComponent, ContentManagerListener> myContentListeners =
|
||||
new HashMap<AdditionalTabComponent, ContentManagerListener>();
|
||||
private final Project myProject;
|
||||
private final LogFilesManager myManager;
|
||||
|
||||
protected ExecutionEnvironment myEnvironment;
|
||||
|
||||
protected ExecutionConsole myConsole;
|
||||
@@ -65,14 +74,27 @@ public abstract class DebuggerSessionTabBase implements DebuggerLogConsoleManage
|
||||
|
||||
private final Icon DEFAULT_TAB_COMPONENT_ICON = IconLoader.getIcon("/fileTypes/text.png");
|
||||
|
||||
public DebuggerSessionTabBase(Project project) {
|
||||
public DebuggerSessionTabBase(Project project, @NotNull String runnerId, @NotNull final String sessionName) {
|
||||
myProject = project;
|
||||
myManager = new LogFilesManager(project, this, this);
|
||||
|
||||
mySessionName = sessionName;
|
||||
|
||||
myUi = RunnerLayoutUi.Factory.getInstance(project).create(
|
||||
runnerId, XDebuggerBundle.message("xdebugger.default.content.title"), sessionName, this);
|
||||
|
||||
myUi.getDefaults()
|
||||
.initTabDefaults(0, XDebuggerBundle.message("xdebugger.debugger.tab.title"), null)
|
||||
.initFocusContent(DebuggerContentInfo.FRAME_CONTENT, XDebuggerUIConstants.LAYOUT_VIEW_BREAKPOINT_CONDITION)
|
||||
.initFocusContent(DebuggerContentInfo.CONSOLE_CONTENT, LayoutViewOptions.STARTUP, new LayoutAttractionPolicy.FocusOnce(false));
|
||||
}
|
||||
|
||||
public abstract RunContentDescriptor getRunContentDescriptor();
|
||||
|
||||
public abstract RunnerLayoutUi getUi();
|
||||
@NotNull
|
||||
public RunnerLayoutUi getUi() {
|
||||
return myUi;
|
||||
}
|
||||
|
||||
protected void registerFileMatcher(final RunProfile runConfiguration) {
|
||||
if (runConfiguration instanceof RunConfigurationBase) {
|
||||
|
||||
@@ -27,10 +27,7 @@ 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.RunnerLayoutUi;
|
||||
import com.intellij.execution.ui.actions.CloseAction;
|
||||
import com.intellij.execution.ui.layout.LayoutAttractionPolicy;
|
||||
import com.intellij.execution.ui.layout.LayoutViewOptions;
|
||||
import com.intellij.execution.ui.layout.PlaceInGrid;
|
||||
import com.intellij.ide.CommonActionsManager;
|
||||
import com.intellij.ide.actions.ContextHelpAction;
|
||||
@@ -60,20 +57,11 @@ import java.util.List;
|
||||
* @author spleaner
|
||||
*/
|
||||
public class XDebugSessionTab extends DebuggerSessionTabBase {
|
||||
private final String mySessionName;
|
||||
private final RunnerLayoutUi myUi;
|
||||
private XWatchesView myWatchesView;
|
||||
private final List<XDebugViewBase> myViews = new ArrayList<XDebugViewBase>();
|
||||
|
||||
public XDebugSessionTab(@NotNull final Project project, @NotNull final String sessionName) {
|
||||
super(project);
|
||||
mySessionName = sessionName;
|
||||
|
||||
myUi = RunnerLayoutUi.Factory.getInstance(project).create("Debug", "unknown!", sessionName, this);
|
||||
myUi.getDefaults()
|
||||
.initTabDefaults(0, XDebuggerBundle.message("xdebugger.debugger.tab.title"), null)
|
||||
.initFocusContent(DebuggerContentInfo.FRAME_CONTENT, XDebuggerUIConstants.LAYOUT_VIEW_BREAKPOINT_CONDITION)
|
||||
.initFocusContent(DebuggerContentInfo.CONSOLE_CONTENT, LayoutViewOptions.STARTUP, new LayoutAttractionPolicy.FocusOnce(false));
|
||||
super(project, "Debug", sessionName);
|
||||
}
|
||||
|
||||
private static ActionGroup getActionGroup(final String id) {
|
||||
@@ -206,9 +194,6 @@ public class XDebugSessionTab extends DebuggerSessionTabBase {
|
||||
return myRunContentDescriptor;
|
||||
}
|
||||
|
||||
public RunnerLayoutUi getUi() {
|
||||
return myUi;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public RunContentDescriptor getRunContentDescriptor() {
|
||||
|
||||
Reference in New Issue
Block a user