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

support group rename and events

上级 573ffec1
......@@ -53,6 +53,7 @@ export interface IEditorStacksModel {
onGroupClosed: Event<IEditorGroup>;
onGroupActivated: Event<IEditorGroup>;
onGroupMoved: Event<IEditorGroup>;
onGroupRenamed: Event<IEditorGroup>;
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<EditorGroup>;
private _onGroupMoved: Emitter<EditorGroup>;
private _onGroupActivated: Emitter<EditorGroup>;
private _onGroupRenamed: Emitter<EditorGroup>;
constructor(
@IStorageService private storageService: IStorageService,
......@@ -562,8 +570,9 @@ export class EditorStacksModel implements IEditorStacksModel {
this._onGroupClosed = new Emitter<EditorGroup>();
this._onGroupActivated = 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.registerListeners();
......@@ -589,6 +598,10 @@ export class EditorStacksModel implements IEditorStacksModel {
return this._onGroupMoved.event;
}
public get onGroupRenamed(): Event<EditorGroup> {
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) {
......
......@@ -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');
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册