提交 09e36c7d 编写于 作者: B Benjamin Pasero

allow to closeAllEditors across multiple groups

上级 d1ec0843
......@@ -687,12 +687,19 @@ export class EditorPart extends Part implements IEditorPart, IEditorGroupService
this.textCompareEditorVisible.set(this.visibleEditors.some(e => e && e.isVisible() && e.getId() === TEXT_DIFF_EDITOR_ID));
}
public closeAllEditors(except?: Position): TPromise<void> {
public closeAllEditors(except?: Position): TPromise<void>;
public closeAllEditors(positions?: Position[]): TPromise<void>;
public closeAllEditors(exceptOrPositions?: Position | Position[]): TPromise<void> {
let groups = this.stacks.groups.reverse(); // start from the end to prevent layout to happen through rochade
// Remove position to exclude if we have any
if (typeof except === 'number') {
groups = groups.filter(group => this.stacks.positionOfGroup(group) !== except);
if (typeof exceptOrPositions === 'number') {
groups = groups.filter(group => this.stacks.positionOfGroup(group) !== exceptOrPositions);
}
// Remove positions that are not being asked for
else if (Array.isArray(exceptOrPositions)) {
groups = groups.filter(group => exceptOrPositions.indexOf(this.stacks.positionOfGroup(group)) >= 0);
}
// Check for dirty and veto
......
......@@ -114,6 +114,11 @@ export interface IWorkbenchEditorService extends IEditorService {
*/
closeAllEditors(except?: Position): TPromise<void>;
/**
* Closes all editors of the provided groups.
*/
closeAllEditors(positions: Position[]): TPromise<void>;
/**
* Allows to resolve an untyped input to a workbench typed instanceof editor input
*/
......@@ -132,6 +137,7 @@ export interface IEditorPart {
closeEditors(editors: { positionOne?: ICloseEditorsFilter, positionTwo?: ICloseEditorsFilter, positionThree?: ICloseEditorsFilter }): TPromise<void>;
closeEditors(editors: { positionOne?: IEditorInput[], positionTwo?: IEditorInput[], positionThree?: IEditorInput[] }): TPromise<void>;
closeAllEditors(except?: Position): TPromise<void>;
closeAllEditors(positions?: Position[]): TPromise<void>;
getActiveEditor(): IEditor;
getVisibleEditors(): IEditor[];
getActiveEditorInput(): IEditorInput;
......@@ -282,8 +288,10 @@ export class WorkbenchEditorService implements IWorkbenchEditorService {
return this.editorPart.closeEditors(positionOrEditors, filterOrEditors);
}
public closeAllEditors(except?: Position): TPromise<void> {
return this.editorPart.closeAllEditors(except);
public closeAllEditors(except?: Position): TPromise<void>;
public closeAllEditors(positions?: Position[]): TPromise<void>;
public closeAllEditors(exceptOrPositions?: any): TPromise<void> {
return this.editorPart.closeAllEditors(exceptOrPositions);
}
public createInput(input: IEditorInput): EditorInput;
......
......@@ -60,7 +60,9 @@ class TestEditorPart implements IEditorPart {
return TPromise.as(null);
}
public closeAllEditors(except?: Position): TPromise<void> {
public closeAllEditors(except?: Position): TPromise<void>;
public closeAllEditors(positions?: Position[]): TPromise<void>;
public closeAllEditors(exceptOrPositions?: Position | Position[]): TPromise<void> {
return TPromise.as(null);
}
......
......@@ -614,7 +614,9 @@ export class TestEditorService implements IWorkbenchEditorService {
return TPromise.as(null);
}
public closeAllEditors(except?: Position): TPromise<void> {
public closeAllEditors(except?: Position): TPromise<void>;
public closeAllEditors(positions?: Position[]): TPromise<void>;
public closeAllEditors(exceptOrPositions?: Position | Position[]): TPromise<void> {
return TPromise.as(null);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册