diff --git a/src/sql/base/browser/ui/panel/panel.ts b/src/sql/base/browser/ui/panel/panel.ts index db007fb7f2..9d0424615f 100644 --- a/src/sql/base/browser/ui/panel/panel.ts +++ b/src/sql/base/browser/ui/panel/panel.ts @@ -33,6 +33,8 @@ export interface IPanelView { layout(dimension: DOM.Dimension): void; focus(): void; remove?(): void; + onShow?(): void; + onHide?(): void; } export interface IPanelTab { @@ -190,6 +192,9 @@ export class TabbedPanel extends Disposable { shownTab.header.setAttribute('aria-selected', 'false'); if (shownTab.body) { shownTab.body.remove(); + if (shownTab.tab.view.onHide) { + shownTab.tab.view.onHide(); + } } } } @@ -215,6 +220,9 @@ export class TabbedPanel extends Disposable { DOM.addClass(tab.header, 'active'); tab.header.setAttribute('aria-selected', 'true'); this._onTabChange.fire(id); + if (tab.tab.view.onShow) { + tab.tab.view.onShow(); + } if (this._currentDimensions) { this._layoutCurrentTab(new DOM.Dimension(this._currentDimensions.width, this._currentDimensions.height - this.headersize)); } diff --git a/src/sql/workbench/parts/query/browser/queryResultsView.ts b/src/sql/workbench/parts/query/browser/queryResultsView.ts index bb890e92bc..f6704b0d37 100644 --- a/src/sql/workbench/parts/query/browser/queryResultsView.ts +++ b/src/sql/workbench/parts/query/browser/queryResultsView.ts @@ -65,6 +65,8 @@ class MessagesView extends Disposable implements IPanelView { class ResultsView extends Disposable implements IPanelView { private gridPanel: GridPanel; private container = document.createElement('div'); + private _state: GridPanelState; + private _runner: QueryRunner; constructor(private instantiationService: IInstantiationService) { super(); @@ -94,7 +96,20 @@ class ResultsView extends Disposable implements IPanelView { this.container.remove(); } + onHide(): void { + this._state = this.gridPanel.state; + this.gridPanel.clear(); + } + + onShow(): void { + if (this._state) { + this.state = this._state; + this.queryRunner = this._runner; + } + } + public set queryRunner(runner: QueryRunner) { + this._runner = runner; this.gridPanel.queryRunner = runner; }