dockview
Version:
Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support
53 lines (52 loc) • 1.67 kB
JavaScript
import { Emitter } from '../events';
import { GridviewPanelApiImpl } from './gridviewPanelApi';
export class DockviewPanelApiImpl extends GridviewPanelApiImpl {
constructor(panel, group) {
super(panel.id);
this.panel = panel;
this._onDidDirtyChange = new Emitter();
this.onDidDirtyChange = this._onDidDirtyChange.event;
this._onDidTitleChange = new Emitter();
this.onDidTitleChange = this._onDidTitleChange.event;
this._titleChanged = new Emitter();
this.titleChanged = this._titleChanged.event;
this._suppressClosableChanged = new Emitter();
this.suppressClosableChanged = this._suppressClosableChanged.event;
this._group = group;
this.addDisposables(this._onDidDirtyChange);
}
get tryClose() {
return this._interceptor;
}
get title() {
return this.panel.title;
}
get suppressClosable() {
return !!this.panel.suppressClosable;
}
get isGroupActive() {
var _a;
return !!((_a = this.group) === null || _a === void 0 ? void 0 : _a.isActive);
}
set group(value) {
this._group = value;
}
get group() {
return this._group;
}
setTitle(title) {
this._onDidTitleChange.fire({ title });
}
close() {
if (!this.group) {
throw new Error(`panel ${this.id} has no group`);
}
return this.group.model.closePanel(this.panel);
}
interceptOnCloseAction(interceptor) {
this._interceptor = interceptor;
}
dispose() {
super.dispose();
}
}