Debugger: java and xdebugger SessionTab generalized

This commit is contained in:
Anton Makeev
2011-12-23 14:37:46 +01:00
parent e3ceb9035b
commit 45f4003252
6 changed files with 35 additions and 43 deletions
@@ -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);
}
}
@@ -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);
}
}
@@ -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,
@@ -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() {