From a4428ce848f89191f17deeb1412231863f117032 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 11 May 2016 10:04:24 +0200 Subject: [PATCH] support group rename and events --- .../common/editor/editorStacksModel.ts | 20 ++++++++++++++++++- .../common/editor/editorStacksModel.test.ts | 18 ++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/common/editor/editorStacksModel.ts b/src/vs/workbench/common/editor/editorStacksModel.ts index 151077328a0..ecbbc86f7fb 100644 --- a/src/vs/workbench/common/editor/editorStacksModel.ts +++ b/src/vs/workbench/common/editor/editorStacksModel.ts @@ -53,6 +53,7 @@ export interface IEditorStacksModel { onGroupClosed: Event; onGroupActivated: Event; onGroupMoved: Event; + onGroupRenamed: Event; groups: IEditorGroup[]; activeGroup: IEditorGroup; @@ -63,6 +64,8 @@ export interface IEditorStacksModel { // openGroup(label: string): IEditorGroup; + // renameGroup(group: IEditorGroup, newLabel: string): void + // closeGroup(group: IEditorGroup): void; // closeGroups(except?: IEditorGroup): void; @@ -157,6 +160,10 @@ export class EditorGroup implements IEditorGroup { return this._label; } + public set label(label: string) { + this._label = label; + } + public get count(): number { return this.editors.length; } @@ -547,6 +554,7 @@ export class EditorStacksModel implements IEditorStacksModel { private _onGroupClosed: Emitter; private _onGroupMoved: Emitter; private _onGroupActivated: Emitter; + private _onGroupRenamed: Emitter; constructor( @IStorageService private storageService: IStorageService, @@ -562,8 +570,9 @@ export class EditorStacksModel implements IEditorStacksModel { this._onGroupClosed = new Emitter(); this._onGroupActivated = new Emitter(); this._onGroupMoved = new Emitter(); + this._onGroupRenamed = new Emitter(); - this.toDispose.push(this._onGroupOpened, this._onGroupClosed, this._onGroupActivated, this._onGroupMoved); + this.toDispose.push(this._onGroupOpened, this._onGroupClosed, this._onGroupActivated, this._onGroupMoved, this._onGroupRenamed); this.load(); this.registerListeners(); @@ -589,6 +598,10 @@ export class EditorStacksModel implements IEditorStacksModel { return this._onGroupMoved.event; } + public get onGroupRenamed(): Event { + return this._onGroupRenamed.event; + } + public get groups(): EditorGroup[] { return this._groups.slice(0); } @@ -625,6 +638,11 @@ export class EditorStacksModel implements IEditorStacksModel { return group; } + public renameGroup(group: EditorGroup, label: string): void { + group.label = label; + this._onGroupRenamed.fire(group); + } + public closeGroup(group: EditorGroup): void { const index = this.indexOf(group); if (index < 0) { diff --git a/src/vs/workbench/test/common/editor/editorStacksModel.test.ts b/src/vs/workbench/test/common/editor/editorStacksModel.test.ts index 955dd43ef18..46254a600fa 100644 --- a/src/vs/workbench/test/common/editor/editorStacksModel.test.ts +++ b/src/vs/workbench/test/common/editor/editorStacksModel.test.ts @@ -32,6 +32,7 @@ interface ModelEvents { activated: IEditorGroup[]; closed: IEditorGroup[]; moved: IEditorGroup[]; + renamed: IEditorGroup[]; } interface GroupEvents { @@ -48,13 +49,15 @@ function modelListener(model: IEditorStacksModel): ModelEvents { opened: [], activated: [], closed: [], - moved: [] + moved: [], + renamed: [] }; model.onGroupOpened(g => modelEvents.opened.push(g)); model.onGroupActivated(g => modelEvents.activated.push(g)); model.onGroupClosed(g => modelEvents.closed.push(g)); model.onGroupMoved(g => modelEvents.moved.push(g)); + model.onGroupRenamed(g => modelEvents.renamed.push(g)); return modelEvents; } @@ -203,6 +206,19 @@ suite('Editor Stacks Model', () => { const model = create(); const events = modelListener(model); + model.openGroup('first'); + const group2 = model.openGroup('second'); + + model.renameGroup(group2, 'renamed'); + + assert.equal(group2.label, 'renamed'); + assert.equal(group2, events.renamed[0]); + }); + + test('Groups - Rename Group', function () { + const model = create(); + const events = modelListener(model); + const group1 = model.openGroup('first'); const group2 = model.openGroup('second'); -- GitLab