From e2b52b97c8a4f9e8ce91a4092cdd458d854d9c43 Mon Sep 17 00:00:00 2001 From: Alan Ren Date: Fri, 10 Jul 2020 18:07:39 -0700 Subject: [PATCH] fix insight details dialog issue (#11309) * fix show details dialog * update viewlet id --- .../insights/browser/insightsDialogView.ts | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/sql/workbench/services/insights/browser/insightsDialogView.ts b/src/sql/workbench/services/insights/browser/insightsDialogView.ts index 163e912060..8a6a787620 100644 --- a/src/sql/workbench/services/insights/browser/insightsDialogView.ts +++ b/src/sql/workbench/services/insights/browser/insightsDialogView.ts @@ -41,17 +41,30 @@ import { TaskRegistry } from 'sql/workbench/services/tasks/browser/tasksRegistry import { ITextResourcePropertiesService } from 'vs/editor/common/services/textResourceConfigurationService'; import { IAdsTelemetryService } from 'sql/platform/telemetry/common/telemetry'; import { onUnexpectedError } from 'vs/base/common/errors'; -import { ViewPane, IViewPaneOptions } from 'vs/workbench/browser/parts/views/viewPaneContainer'; +import { ViewPane, IViewPaneOptions, ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer'; import { attachPanelStyler, attachModalDialogStyler } from 'sql/workbench/common/styler'; -import { IViewDescriptorService } from 'vs/workbench/common/views'; +import { IViewDescriptorService, IViewContainersRegistry, ViewContainerLocation, Extensions as ViewContainerExtensions, IViewsRegistry } from 'vs/workbench/common/views'; import { IOpenerService } from 'vs/platform/opener/common/opener'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ILayoutService } from 'vs/platform/layout/browser/layoutService'; +import { Registry } from 'vs/platform/registry/common/platform'; +import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; const labelDisplay = nls.localize("insights.item", "Item"); const valueDisplay = nls.localize("insights.value", "Value"); const iconClass = 'codicon'; +export const VIEWLET_ID = 'workbench.view.insightdetails'; + +export class InsightsDetailPaneContainer extends ViewPaneContainer { } + +export const INSIGHTS_DETAIL_VIEW_CONTAINER = Registry.as(ViewContainerExtensions.ViewContainersRegistry).registerViewContainer({ + id: VIEWLET_ID, + name: nls.localize('insightsDetailView.name', "Insight Details"), + ctorDescriptor: new SyncDescriptor(InsightsDetailPaneContainer), + storageId: `${VIEWLET_ID}.state` +}, ViewContainerLocation.Dialog); + class InsightTableView extends ViewPane { private _table: Table; public get table(): Table { @@ -217,17 +230,29 @@ export class InsightsDialogView extends Modal { this._splitView = new SplitView(container); + const itemsViewId = 'insights.top'; + const itemDetailsViewId = 'insights.bottom'; const itemsHeaderTitle = nls.localize("insights.dialog.items", "Items"); const itemsDetailHeaderTitle = nls.localize("insights.dialog.itemDetails", "Item Details"); this._topTableData = new TableDataView(); this._bottomTableData = new TableDataView(); - let topTableView = this._instantiationService.createInstance(InsightTableView, this._topColumns, this._topTableData, { forceFitColumns: true }, { id: 'insights.top', title: itemsHeaderTitle }); + let topTableView = this._instantiationService.createInstance(InsightTableView, this._topColumns, this._topTableData, { forceFitColumns: true }, { id: itemsViewId, title: itemsHeaderTitle }); + Registry.as(ViewContainerExtensions.ViewsRegistry).registerViews([{ + id: itemsViewId, + name: itemsHeaderTitle, + ctorDescriptor: new SyncDescriptor(InsightTableView), + }], INSIGHTS_DETAIL_VIEW_CONTAINER); topTableView.render(); attachPanelStyler(topTableView, this._themeService); this._topTable = topTableView.table; this._topTable.setSelectionModel(new RowSelectionModel()); - let bottomTableView = this._instantiationService.createInstance(InsightTableView, this._bottomColumns, this._bottomTableData, { forceFitColumns: true }, { id: 'insights.bottom', title: itemsDetailHeaderTitle }); + let bottomTableView = this._instantiationService.createInstance(InsightTableView, this._bottomColumns, this._bottomTableData, { forceFitColumns: true }, { id: itemDetailsViewId, title: itemsDetailHeaderTitle }); + Registry.as(ViewContainerExtensions.ViewsRegistry).registerViews([{ + id: itemDetailsViewId, + name: itemsDetailHeaderTitle, + ctorDescriptor: new SyncDescriptor(InsightTableView), + }], INSIGHTS_DETAIL_VIEW_CONTAINER); bottomTableView.render(); attachPanelStyler(bottomTableView, this._themeService); this._bottomTable = bottomTableView.table;