diff --git a/extensions/azurecore/package.json b/extensions/azurecore/package.json index c9088e5c52..c0486415e1 100644 --- a/extensions/azurecore/package.json +++ b/extensions/azurecore/package.json @@ -22,7 +22,7 @@ "resourceViewResources": [ { "id": "azure-resources", - "name": "Azure", + "name": "%azure.resource.view.title%", "icon": "./resources/azure.svg" } ], diff --git a/extensions/azurecore/package.nls.json b/extensions/azurecore/package.nls.json index a5cd37ef63..26e58c311c 100644 --- a/extensions/azurecore/package.nls.json +++ b/extensions/azurecore/package.nls.json @@ -13,6 +13,7 @@ "azure.resource.startterminal.title": "Start Cloud Shell", "azure.resource.connectsqlserver.title": "Connect", "azure.resource.connectsqldb.title": "Add to Servers", + "azure.resource.view.title": "Azure (Preview)", "azure.tenant.config.filter.description": "The list of tenant IDs to ignore when querying azure resources. Each element is a tenant id.", "accounts.clearTokenCache": "Clear Azure Account Token Cache", diff --git a/extensions/azurecore/src/azureDataGridProvider.ts b/extensions/azurecore/src/azureDataGridProvider.ts index f8d8548996..c81d572727 100644 --- a/extensions/azurecore/src/azureDataGridProvider.ts +++ b/extensions/azurecore/src/azureDataGridProvider.ts @@ -48,7 +48,6 @@ export class AzureDataGridProvider implements azdata.DataGridProvider { return { id: item.id, // Property values - nameLink: { displayText: item.name, linkOrCommand: 'https://microsoft.com' }, name: item.name, resourceGroup: item.resourceGroup, subscriptionId: item.subscriptionId, @@ -75,7 +74,7 @@ export class AzureDataGridProvider implements azdata.DataGridProvider { public async getDataGridColumns(): Promise { return [ { id: 'icon', type: 'image', field: 'iconPath', name: '', width: 25, sortable: false, filterable: false, resizable: false, tooltip: loc.typeIcon }, - { id: 'name', type: 'hyperlink', field: 'nameLink', name: loc.name, width: 150 }, + { id: 'name', type: 'text', field: 'name', name: loc.name, width: 150 }, { id: 'type', type: 'text', field: 'typeDisplayName', name: loc.resourceType, width: 150 }, { id: 'type', type: 'text', field: 'resourceGroup', name: loc.resourceGroup, width: 150 }, { id: 'location', type: 'text', field: 'locationDisplayName', name: loc.location, width: 150 }, diff --git a/extensions/azurecore/src/localizedConstants.ts b/extensions/azurecore/src/localizedConstants.ts index a78791dda2..c93afaa91b 100644 --- a/extensions/azurecore/src/localizedConstants.ts +++ b/extensions/azurecore/src/localizedConstants.ts @@ -73,4 +73,4 @@ export const sqlServerArc = localize('azurecore.sqlServerArc', "SQL Server - Azu export const azureArcPostgresServer = localize('azurecore.azureArcPostgres', "Azure Arc enabled PostgreSQL Hyperscale"); export const unableToOpenAzureLink = localize('azure.unableToOpenAzureLink', "Unable to open link, missing required values"); -export const azureResourcesGridTitle = localize('azure.azureResourcesGridTitle', "Azure Resources"); +export const azureResourcesGridTitle = localize('azure.azureResourcesGridTitle', "Azure Resources (Preview)"); diff --git a/src/sql/workbench/contrib/resourceViewer/browser/resourceViewer.contribution.ts b/src/sql/workbench/contrib/resourceViewer/browser/resourceViewer.contribution.ts index fd85f62c17..054fb166c5 100644 --- a/src/sql/workbench/contrib/resourceViewer/browser/resourceViewer.contribution.ts +++ b/src/sql/workbench/contrib/resourceViewer/browser/resourceViewer.contribution.ts @@ -12,9 +12,17 @@ import { CommandsRegistry } from 'vs/platform/commands/common/commands'; import { ServicesAccessor, IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IEditorService, ACTIVE_GROUP } from 'vs/workbench/services/editor/common/editorService'; import { isString } from 'vs/base/common/types'; -import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions'; +import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; import { ResourceViewResourcesExtensionHandler } from 'sql/workbench/contrib/resourceViewer/common/resourceViewerViewExtensionPoint'; +import { ResourceViewerView } from 'sql/workbench/contrib/resourceViewer/browser/resourceViewerView'; +import { ResourceViewerViewlet } from 'sql/workbench/contrib/resourceViewer/browser/resourceViewerViewlet'; +import { RESOURCE_VIEWER_VIEW_CONTAINER_ID, RESOURCE_VIEWER_VIEW_ID } from 'sql/workbench/contrib/resourceViewer/common/resourceViewer'; +import { Codicon } from 'vs/base/common/codicons'; +import { localize } from 'vs/nls'; +import { Extensions as ViewContainerExtensions, IViewsRegistry, IViewContainersRegistry, ViewContainerLocation } from 'vs/workbench/common/views'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { IProductService } from 'vs/platform/product/common/productService'; CommandsRegistry.registerCommand({ id: 'resourceViewer.openResourceViewer', @@ -41,39 +49,28 @@ Registry.as(EditorExtensions.Editors) Registry.as(WorkbenchExtensions.Workbench).registerWorkbenchContribution(ResourceViewResourcesExtensionHandler, LifecyclePhase.Ready); -// TODO: chgagnon disabling until the resource viewer is feature complete -// class ResourceViewerContributor implements IWorkbenchContribution { -// constructor( -// @IExtensionService private readonly extensionService: IExtensionService -// ) { -// this.checkForArc(); -// } +class ResourceViewerContributor implements IWorkbenchContribution { + constructor( + @IConfigurationService readonly configurationService: IConfigurationService, + @IProductService readonly productService: IProductService + ) { + if (productService.quality !== 'stable' && productService.quality !== 'saw' && configurationService.getValue('workbench.enablePreviewFeatures')) { + registerResourceViewerContainer(); + } + } +} -// private async checkForArc(): Promise { -// if (await this.extensionService.getExtension('Microsoft.arc')) { -// registerResourceViewerContainer(); -// } else { -// const disposable = this.extensionService.onDidChangeExtensions(async () => { -// if (await this.extensionService.getExtension('Microsoft.arc')) { -// registerResourceViewerContainer(); -// disposable.dispose(); -// } -// }); -// } -// } -// } +Registry.as(WorkbenchExtensions.Workbench).registerWorkbenchContribution(ResourceViewerContributor, LifecyclePhase.Ready); -// Registry.as(WorkbenchExtensions.Workbench).registerWorkbenchContribution(ResourceViewerContributor, LifecyclePhase.Ready); +function registerResourceViewerContainer() { + const viewContainer = Registry.as(ViewContainerExtensions.ViewContainersRegistry).registerViewContainer({ + id: RESOURCE_VIEWER_VIEW_CONTAINER_ID, + name: localize('resourceViewer', "Resource Viewer"), + ctorDescriptor: new SyncDescriptor(ResourceViewerViewlet), + icon: Codicon.database.classNames, + alwaysUseContainerInfo: true + }, ViewContainerLocation.Sidebar); -// function registerResourceViewerContainer() { -// const viewContainer = Registry.as(ViewExtensions.ViewContainersRegistry).registerViewContainer({ -// id: RESOURCE_VIEWER_VIEW_CONTAINER_ID, -// name: localize('resourceViewer', "Resource Viewer"), -// ctorDescriptor: new SyncDescriptor(ResourceViewerViewlet), -// icon: Codicon.database.classNames, -// alwaysUseContainerInfo: true -// }, ViewContainerLocation.Sidebar); - -// const viewsRegistry = Registry.as(ViewExtensions.ViewsRegistry); -// viewsRegistry.registerViews([{ id: RESOURCE_VIEWER_VIEW_ID, name: localize('resourceViewer', "Resource Viewer"), containerIcon: Codicon.database.classNames, ctorDescriptor: new SyncDescriptor(ResourceViewerView), canToggleVisibility: false, canMoveView: false }], viewContainer); -// } + const viewsRegistry = Registry.as(ViewContainerExtensions.ViewsRegistry); + viewsRegistry.registerViews([{ id: RESOURCE_VIEWER_VIEW_ID, name: localize('resourceViewer', "Resource Viewer"), containerIcon: Codicon.database.classNames, ctorDescriptor: new SyncDescriptor(ResourceViewerView), canToggleVisibility: false, canMoveView: false }], viewContainer); +} diff --git a/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerActions.ts b/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerActions.ts index aa9c3b7f43..ef55c6a50f 100644 --- a/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerActions.ts +++ b/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerActions.ts @@ -7,19 +7,6 @@ import { Action } from 'vs/base/common/actions'; import * as nls from 'vs/nls'; import { ResourceViewerInput } from 'sql/workbench/browser/editor/resourceViewer/resourceViewerInput'; -export class ResourceViewerEditColumns extends Action { - public static readonly ID = 'resourceViewer.editColumns'; - public static readonly LABEL = nls.localize('resourceViewer.editColumns', "Edit Columns"); - - constructor() { - super(ResourceViewerEditColumns.ID, ResourceViewerEditColumns.LABEL, 'codicon edit'); - } - - public async run(input: ResourceViewerInput): Promise { - - } -} - export class ResourceViewerRefresh extends Action { public static readonly ID = 'resourceViewer.refresh'; public static readonly LABEL = nls.localize('resourceViewer.refresh', "Refresh"); diff --git a/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerEditor.ts b/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerEditor.ts index 1ab53b0686..7c2d6d1dbe 100644 --- a/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerEditor.ts +++ b/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerEditor.ts @@ -17,7 +17,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { ResourceViewerInput } from 'sql/workbench/browser/editor/resourceViewer/resourceViewerInput'; import { ResourceViewerTable } from 'sql/workbench/contrib/resourceViewer/browser/resourceViewerTable'; import { EditorPane } from 'vs/workbench/browser/parts/editor/editorPane'; -import { ResourceViewerEditColumns, ResourceViewerRefresh } from 'sql/workbench/contrib/resourceViewer/browser/resourceViewerActions'; +import { ResourceViewerRefresh } from 'sql/workbench/contrib/resourceViewer/browser/resourceViewerActions'; import { IAction } from 'vs/base/common/actions'; import { fillInActions } from 'vs/platform/actions/browser/menuEntryActionViewItem'; import { IMenuService, MenuId } from 'vs/platform/actions/common/actions'; @@ -67,10 +67,8 @@ export class ResourceViewerEditor extends EditorPane { header.className = 'resource-viewer-header'; this._actionBar = this._register(new Taskbar(header)); - const editColumnsAction = this._register(this._instantiationService.createInstance(ResourceViewerEditColumns)); const refreshAction = this._register(this._instantiationService.createInstance(ResourceViewerRefresh)); this._actionBar.setContent([ - { action: editColumnsAction }, { action: refreshAction } ]); return header; diff --git a/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerView.ts b/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerView.ts index cd8ee9e0af..60b2566c30 100644 --- a/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerView.ts +++ b/src/sql/workbench/contrib/resourceViewer/browser/resourceViewerView.ts @@ -136,7 +136,7 @@ class TreeModel { private readonly registry = Registry.as(Extensions.ResourceViewerExtension); getChildren(): ResourceType[] { - return this.registry.allResources.slice(); + return this.registry.allResources.filter(resource => resource.id === 'azure-resources'); } } diff --git a/src/sql/workbench/services/notebook/browser/sql/sqlSessionManager.ts b/src/sql/workbench/services/notebook/browser/sql/sqlSessionManager.ts index 077f970706..34a07759bf 100644 --- a/src/sql/workbench/services/notebook/browser/sql/sqlSessionManager.ts +++ b/src/sql/workbench/services/notebook/browser/sql/sqlSessionManager.ts @@ -65,7 +65,6 @@ export interface NotebookConfig { remoteBookDownloadTimeout: number; showAllKernels: boolean; showCellStatusBar: boolean; - showNotebookConvertActions: boolean; sqlStopOnError: boolean; trustedBooks: Array; useExistingPython: boolean;