mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-18 01:25:37 -05:00
Redoing Execution Plan Comparison Editor (#19375)
* Adding code for execution plan comparison editor * Handling floating promises and fixing a loc string * Fixing some polygon stuff * Fixing azdatagraph null check bug * Adding progress notification for similar areas * Removing some floating promises * Fixing button enabled state
This commit is contained in:
@@ -11,11 +11,17 @@ import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle
|
||||
import { IEditorResolverService, RegisteredEditorPriority } from 'vs/workbench/services/editor/common/editorResolverService';
|
||||
import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from 'vs/workbench/common/contributions';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { IExecutionPlanService } from 'sql/workbench/services/executionPlan/common/interfaces';
|
||||
import { ExecutionPlanInput } from 'sql/workbench/contrib/executionPlan/common/executionPlanInput';
|
||||
import { ExecutionPlanEditor } from 'sql/workbench/contrib/executionPlan/browser/executionPlanEditor';
|
||||
import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService';
|
||||
import { ExecutionPlanComparisonEditor } from 'sql/workbench/contrib/executionPlan/browser/executionPlanComparisonEditor';
|
||||
import { ExecutionPlanComparisonInput } from 'sql/workbench/contrib/executionPlan/browser/compareExecutionPlanInput';
|
||||
import { MenuId, MenuRegistry } from 'vs/platform/actions/common/actions';
|
||||
import { localize } from 'vs/nls';
|
||||
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
|
||||
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||
|
||||
// Execution Plan editor registration
|
||||
|
||||
@@ -39,7 +45,7 @@ export class ExecutionPlanEditorOverrideContribution extends Disposable implemen
|
||||
this.registerEditorOverride();
|
||||
|
||||
this._capabilitiesService.onCapabilitiesRegistered(e => {
|
||||
const newFileFormats = this._executionPlanService.getSupportedExecutionPlanExtensionsForProvider(e.id);
|
||||
const newFileFormats = this._executionPlanService.getSupportedExecutionPlanExtensions(e.id);
|
||||
if (newFileFormats?.length > 0) {
|
||||
this._editorResolverService.updateUserAssociations(this.getGlobForFileExtensions(newFileFormats), ExecutionPlanEditor.ID); // Registering new file formats when new providers are registered.
|
||||
}
|
||||
@@ -76,3 +82,33 @@ export class ExecutionPlanEditorOverrideContribution extends Disposable implemen
|
||||
|
||||
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench)
|
||||
.registerWorkbenchContribution(ExecutionPlanEditorOverrideContribution, LifecyclePhase.Restored);
|
||||
|
||||
const comparisonExecutionPlanEditor = EditorPaneDescriptor.create(
|
||||
ExecutionPlanComparisonEditor,
|
||||
ExecutionPlanComparisonEditor.ID,
|
||||
ExecutionPlanComparisonEditor.LABEL
|
||||
);
|
||||
|
||||
const COMPARE_EXECUTION_PLAN_COMMAND_ID = 'compareExecutionPlan';
|
||||
|
||||
Registry.as<IEditorPaneRegistry>(EditorExtensions.EditorPane)
|
||||
.registerEditorPane(comparisonExecutionPlanEditor, [new SyncDescriptor(ExecutionPlanComparisonInput)]);
|
||||
|
||||
MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
|
||||
command: {
|
||||
id: COMPARE_EXECUTION_PLAN_COMMAND_ID,
|
||||
title: {
|
||||
value: localize('executionPlanCompareCommandValue', "Compare execution plans"),
|
||||
original: localize('executionPlanCompareCommandOriginalValue', "Compare execution plans")
|
||||
},
|
||||
category: 'Execution Plan'
|
||||
}
|
||||
});
|
||||
|
||||
CommandsRegistry.registerCommand(COMPARE_EXECUTION_PLAN_COMMAND_ID, (accessors: ServicesAccessor) => {
|
||||
const editorService = accessors.get(IEditorService);
|
||||
const instantiationService = accessors.get(IInstantiationService);
|
||||
editorService.openEditor(instantiationService.createInstance(ExecutionPlanComparisonInput, undefined), {
|
||||
pinned: true
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user