提交 18824d89 编写于 作者: I isidor

Ability to terminate a program from Call stack

fixes #16603
上级 a412a14d
......@@ -12,7 +12,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { IDebugService, State, IProcess, SessionRequestType, IThread, IEnablement, IBreakpoint, IStackFrame, IFunctionBreakpoint, IDebugEditorContribution, EDITOR_CONTRIBUTION_ID, IExpression, REPL_ID }
from 'vs/workbench/parts/debug/common/debug';
import { Variable, Expression, Thread, Breakpoint } from 'vs/workbench/parts/debug/common/debugModel';
import { Variable, Expression, Thread, Breakpoint, Process } from 'vs/workbench/parts/debug/common/debugModel';
import { IPartService } from 'vs/workbench/services/part/common/partService';
import { IPanelService } from 'vs/workbench/services/panel/common/panelService';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
......@@ -130,8 +130,11 @@ export class RestartAction extends AbstractDebugAction {
this.updateLabel(process && process.session.requestType === SessionRequestType.ATTACH ? RestartAction.RECONNECT_LABEL : RestartAction.LABEL);
}
public run(): TPromise<any> {
const process = this.debugService.getViewModel().focusedProcess;
public run(process: IProcess): TPromise<any> {
if (!(process instanceof Process)) {
process = this.debugService.getViewModel().focusedProcess;
}
return this.debugService.restartProcess(process);
}
......@@ -211,8 +214,11 @@ export class StopAction extends AbstractDebugAction {
super(id, label, 'debug-action stop', debugService, keybindingService, 80);
}
public run(): TPromise<any> {
const process = this.debugService.getViewModel().focusedProcess;
public run(process: IProcess): TPromise<any> {
if (!(process instanceof Process)) {
process = this.debugService.getViewModel().focusedProcess;
}
return process ? process.session.disconnect(false, true) : TPromise.as(null);
}
......
......@@ -32,7 +32,7 @@ import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/edi
import * as debug from 'vs/workbench/parts/debug/common/debug';
import { Expression, Variable, FunctionBreakpoint, StackFrame, Thread, Process, Breakpoint, ExceptionBreakpoint, Model, Scope } from 'vs/workbench/parts/debug/common/debugModel';
import { ViewModel } from 'vs/workbench/parts/debug/common/debugViewModel';
import { ContinueAction, StepOverAction, PauseAction, ReapplyBreakpointsAction, DisableAllBreakpointsAction, RemoveBreakpointAction, RemoveWatchExpressionAction, AddWatchExpressionAction, RemoveAllBreakpointsAction, EnableAllBreakpointsAction, StepOutAction, StepIntoAction, SetValueAction, RemoveAllWatchExpressionsAction, RestartFrameAction, AddToWatchExpressionsAction } from 'vs/workbench/parts/debug/browser/debugActions';
import { ContinueAction, StepOverAction, PauseAction, ReapplyBreakpointsAction, DisableAllBreakpointsAction, RemoveBreakpointAction, RemoveWatchExpressionAction, AddWatchExpressionAction, RemoveAllBreakpointsAction, EnableAllBreakpointsAction, StepOutAction, StepIntoAction, SetValueAction, RemoveAllWatchExpressionsAction, RestartFrameAction, AddToWatchExpressionsAction, StopAction, RestartAction } from 'vs/workbench/parts/debug/browser/debugActions';
import { CopyValueAction, CopyStackTraceAction } from 'vs/workbench/parts/debug/electron-browser/electronDebugActions';
import { Source } from 'vs/workbench/parts/debug/common/debugSource';
......@@ -349,12 +349,15 @@ export class CallStackActionProvider implements IActionProvider {
}
public hasSecondaryActions(tree: ITree, element: any): boolean {
return element instanceof Thread || element instanceof StackFrame;
return element !== tree.getInput();
}
public getSecondaryActions(tree: ITree, element: any): TPromise<IAction[]> {
const actions: IAction[] = [];
if (element instanceof Thread) {
if (element instanceof Process) {
actions.push(this.instantiationService.createInstance(RestartAction, RestartAction.ID, RestartAction.LABEL));
actions.push(this.instantiationService.createInstance(StopAction, StopAction.ID, StopAction.LABEL));
} else if (element instanceof Thread) {
const thread = <Thread>element;
if (thread.stopped) {
actions.push(this.instantiationService.createInstance(ContinueAction, ContinueAction.ID, ContinueAction.LABEL));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册