提交 a4428ce8 编写于 作者: B Benjamin Pasero

support group rename and events

上级 573ffec1
...@@ -53,6 +53,7 @@ export interface IEditorStacksModel { ...@@ -53,6 +53,7 @@ export interface IEditorStacksModel {
onGroupClosed: Event<IEditorGroup>; onGroupClosed: Event<IEditorGroup>;
onGroupActivated: Event<IEditorGroup>; onGroupActivated: Event<IEditorGroup>;
onGroupMoved: Event<IEditorGroup>; onGroupMoved: Event<IEditorGroup>;
onGroupRenamed: Event<IEditorGroup>;
groups: IEditorGroup[]; groups: IEditorGroup[];
activeGroup: IEditorGroup; activeGroup: IEditorGroup;
...@@ -63,6 +64,8 @@ export interface IEditorStacksModel { ...@@ -63,6 +64,8 @@ export interface IEditorStacksModel {
// openGroup(label: string): IEditorGroup; // openGroup(label: string): IEditorGroup;
// renameGroup(group: IEditorGroup, newLabel: string): void
// closeGroup(group: IEditorGroup): void; // closeGroup(group: IEditorGroup): void;
// closeGroups(except?: IEditorGroup): void; // closeGroups(except?: IEditorGroup): void;
...@@ -157,6 +160,10 @@ export class EditorGroup implements IEditorGroup { ...@@ -157,6 +160,10 @@ export class EditorGroup implements IEditorGroup {
return this._label; return this._label;
} }
public set label(label: string) {
this._label = label;
}
public get count(): number { public get count(): number {
return this.editors.length; return this.editors.length;
} }
...@@ -547,6 +554,7 @@ export class EditorStacksModel implements IEditorStacksModel { ...@@ -547,6 +554,7 @@ export class EditorStacksModel implements IEditorStacksModel {
private _onGroupClosed: Emitter<EditorGroup>; private _onGroupClosed: Emitter<EditorGroup>;
private _onGroupMoved: Emitter<EditorGroup>; private _onGroupMoved: Emitter<EditorGroup>;
private _onGroupActivated: Emitter<EditorGroup>; private _onGroupActivated: Emitter<EditorGroup>;
private _onGroupRenamed: Emitter<EditorGroup>;
constructor( constructor(
@IStorageService private storageService: IStorageService, @IStorageService private storageService: IStorageService,
...@@ -562,8 +570,9 @@ export class EditorStacksModel implements IEditorStacksModel { ...@@ -562,8 +570,9 @@ export class EditorStacksModel implements IEditorStacksModel {
this._onGroupClosed = new Emitter<EditorGroup>(); this._onGroupClosed = new Emitter<EditorGroup>();
this._onGroupActivated = new Emitter<EditorGroup>(); this._onGroupActivated = new Emitter<EditorGroup>();
this._onGroupMoved = new Emitter<EditorGroup>(); this._onGroupMoved = new Emitter<EditorGroup>();
this._onGroupRenamed = new Emitter<EditorGroup>();
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.load();
this.registerListeners(); this.registerListeners();
...@@ -589,6 +598,10 @@ export class EditorStacksModel implements IEditorStacksModel { ...@@ -589,6 +598,10 @@ export class EditorStacksModel implements IEditorStacksModel {
return this._onGroupMoved.event; return this._onGroupMoved.event;
} }
public get onGroupRenamed(): Event<EditorGroup> {
return this._onGroupRenamed.event;
}
public get groups(): EditorGroup[] { public get groups(): EditorGroup[] {
return this._groups.slice(0); return this._groups.slice(0);
} }
...@@ -625,6 +638,11 @@ export class EditorStacksModel implements IEditorStacksModel { ...@@ -625,6 +638,11 @@ export class EditorStacksModel implements IEditorStacksModel {
return group; return group;
} }
public renameGroup(group: EditorGroup, label: string): void {
group.label = label;
this._onGroupRenamed.fire(group);
}
public closeGroup(group: EditorGroup): void { public closeGroup(group: EditorGroup): void {
const index = this.indexOf(group); const index = this.indexOf(group);
if (index < 0) { if (index < 0) {
......
...@@ -32,6 +32,7 @@ interface ModelEvents { ...@@ -32,6 +32,7 @@ interface ModelEvents {
activated: IEditorGroup[]; activated: IEditorGroup[];
closed: IEditorGroup[]; closed: IEditorGroup[];
moved: IEditorGroup[]; moved: IEditorGroup[];
renamed: IEditorGroup[];
} }
interface GroupEvents { interface GroupEvents {
...@@ -48,13 +49,15 @@ function modelListener(model: IEditorStacksModel): ModelEvents { ...@@ -48,13 +49,15 @@ function modelListener(model: IEditorStacksModel): ModelEvents {
opened: [], opened: [],
activated: [], activated: [],
closed: [], closed: [],
moved: [] moved: [],
renamed: []
}; };
model.onGroupOpened(g => modelEvents.opened.push(g)); model.onGroupOpened(g => modelEvents.opened.push(g));
model.onGroupActivated(g => modelEvents.activated.push(g)); model.onGroupActivated(g => modelEvents.activated.push(g));
model.onGroupClosed(g => modelEvents.closed.push(g)); model.onGroupClosed(g => modelEvents.closed.push(g));
model.onGroupMoved(g => modelEvents.moved.push(g)); model.onGroupMoved(g => modelEvents.moved.push(g));
model.onGroupRenamed(g => modelEvents.renamed.push(g));
return modelEvents; return modelEvents;
} }
...@@ -203,6 +206,19 @@ suite('Editor Stacks Model', () => { ...@@ -203,6 +206,19 @@ suite('Editor Stacks Model', () => {
const model = create(); const model = create();
const events = modelListener(model); 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 group1 = model.openGroup('first');
const group2 = model.openGroup('second'); const group2 = model.openGroup('second');
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册