diff --git a/src/sql/parts/query/editor/gridPanel.ts b/src/sql/parts/query/editor/gridPanel.ts index 42f37d8f6b..2d6c0161da 100644 --- a/src/sql/parts/query/editor/gridPanel.ts +++ b/src/sql/parts/query/editor/gridPanel.ts @@ -68,15 +68,30 @@ export class GridTableState { private _onMaximizedChange = new Emitter(); public onMaximizedChange: Event = this._onMaximizedChange.event; - public canBeMaximized: boolean; + private _onCanBeMaximizedChange = new Emitter(); + public onCanBeMaximizedChange: Event = this._onCanBeMaximizedChange.event; + + private _canBeMaximized: boolean; constructor(state?: IGridTableState) { if (state) { this._maximized = state.maximized; - this.canBeMaximized = state.canBeMaximized; + this._canBeMaximized = state.canBeMaximized; } } + public get canBeMaximized(): boolean { + return this._canBeMaximized; + } + + public set canBeMaximized(val: boolean) { + if (val === this._canBeMaximized) { + return; + } + this._canBeMaximized = val; + this._onCanBeMaximizedChange.fire(val); + } + public get maximized(): boolean { return this._maximized; } @@ -343,11 +358,9 @@ class GridTable extends Disposable implements IView { this.actionBar.push(actions, { icon: true, label: false }); // change actionbar on maximize change - this.state.onMaximizedChange(e => { - let actions = this.getCurrentActions(); - this.actionBar.clear(); - this.actionBar.push(actions, { icon: true, label: false }); - }); + this.state.onMaximizedChange(this.rebuildActionBar, this); + + this.state.onCanBeMaximizedChange(this.rebuildActionBar, this); } private onTableClick(event: ITableMouseEvent) { @@ -377,6 +390,12 @@ class GridTable extends Disposable implements IView { }; } + private rebuildActionBar() { + let actions = this.getCurrentActions(); + this.actionBar.clear(); + this.actionBar.push(actions, { icon: true, label: false }); + } + private getCurrentActions(): IAction[] { let actions = [];