diff --git a/src/sql/platform/connection/common/connectionManagement.ts b/src/sql/platform/connection/common/connectionManagement.ts index 7944d6f5d1..504b4a4d24 100644 --- a/src/sql/platform/connection/common/connectionManagement.ts +++ b/src/sql/platform/connection/common/connectionManagement.ts @@ -80,16 +80,6 @@ export interface IConnectionManagementService { */ showConnectionDialog(params?: INewConnectionParams, options?: IConnectionCompletionOptions, model?: IConnectionProfile, connectionResult?: IConnectionResult): Promise; - /** - * Opens the add server group dialog - */ - showCreateServerGroupDialog(callbacks?: IServerGroupDialogCallbacks): Promise; - - /** - * Opens the edit server group dialog - */ - showEditServerGroupDialog(group: ConnectionProfileGroup): Promise; - /** * Load the password and opens a new connection */ diff --git a/src/sql/platform/connection/common/connectionManagementService.ts b/src/sql/platform/connection/common/connectionManagementService.ts index 438c6839e2..1c3cf49a6b 100644 --- a/src/sql/platform/connection/common/connectionManagementService.ts +++ b/src/sql/platform/connection/common/connectionManagementService.ts @@ -77,7 +77,6 @@ export class ConnectionManagementService extends Disposable implements IConnecti private _connectionStore: ConnectionStore, private _connectionStatusManager: ConnectionStatusManager, @IConnectionDialogService private _connectionDialogService: IConnectionDialogService, - @IServerGroupController private _serverGroupController: IServerGroupController, @IInstantiationService private _instantiationService: IInstantiationService, @IEditorService private _editorService: IEditorService, @ITelemetryService private _telemetryService: ITelemetryService, @@ -202,34 +201,6 @@ export class ConnectionManagementService extends Disposable implements IConnecti }); } - /** - * Opens the add server group dialog - */ - public showCreateServerGroupDialog(callbacks?: IServerGroupDialogCallbacks): Promise { - let self = this; - return new Promise((resolve, reject) => { - self._serverGroupController.showCreateGroupDialog(self, callbacks).then(() => { - resolve(); - }, error => { - reject(); - }); - }); - } - - /** - * Opens the edit server group dialog - */ - public showEditServerGroupDialog(group: ConnectionProfileGroup): Promise { - let self = this; - return new Promise((resolve, reject) => { - self._serverGroupController.showEditGroupDialog(self, group).then(() => { - resolve(); - }, error => { - reject(); - }); - }); - } - /** * Load the password for the profile * @param connectionProfile Connection Profile diff --git a/src/sql/platform/connection/test/common/connectionManagementService.test.ts b/src/sql/platform/connection/test/common/connectionManagementService.test.ts index 7817b38294..772b4899a7 100644 --- a/src/sql/platform/connection/test/common/connectionManagementService.test.ts +++ b/src/sql/platform/connection/test/common/connectionManagementService.test.ts @@ -149,7 +149,6 @@ suite('SQL ConnectionManagementService tests', () => { connectionStore.object, undefined, connectionDialogService.object, - undefined, // IServerGroupController undefined, // IInstantiationService workbenchEditorService.object, undefined, // ITelemetryService @@ -946,7 +945,7 @@ suite('SQL ConnectionManagementService tests', () => { connectionStoreMock.setup(x => x.getConnectionProfileGroups(TypeMoq.It.isAny(), undefined)).returns(() => { return [group1]; }); - const connectionManagementService = new ConnectionManagementService(connectionStoreMock.object, connectionStatusManagerMock.object, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined); + const connectionManagementService = new ConnectionManagementService(connectionStoreMock.object, connectionStatusManagerMock.object, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined); // dupe connections have been seeded the numbers below already reflected the de-duped results diff --git a/src/sql/platform/serverGroup/common/serverGroupController.ts b/src/sql/platform/serverGroup/common/serverGroupController.ts index a2c9f3a3e9..c5cf523eac 100644 --- a/src/sql/platform/serverGroup/common/serverGroupController.ts +++ b/src/sql/platform/serverGroup/common/serverGroupController.ts @@ -5,7 +5,6 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement'; import { ConnectionProfileGroup } from 'sql/platform/connection/common/connectionProfileGroup'; export interface IServerGroupDialogCallbacks { @@ -15,6 +14,6 @@ export interface IServerGroupDialogCallbacks { export const IServerGroupController = createDecorator('serverGroupController'); export interface IServerGroupController { _serviceBrand: any; - showCreateGroupDialog(connectionManagementService: IConnectionManagementService, callbacks?: IServerGroupDialogCallbacks): Promise; - showEditGroupDialog(connectionManagementService: IConnectionManagementService, group: ConnectionProfileGroup): Promise; + showCreateGroupDialog(callbacks?: IServerGroupDialogCallbacks): Promise; + showEditGroupDialog(group: ConnectionProfileGroup): Promise; } diff --git a/src/sql/workbench/parts/objectExplorer/browser/connectionTreeAction.ts b/src/sql/workbench/parts/objectExplorer/browser/connectionTreeAction.ts index 2a9265bdc0..1d32b2c343 100644 --- a/src/sql/workbench/parts/objectExplorer/browser/connectionTreeAction.ts +++ b/src/sql/workbench/parts/objectExplorer/browser/connectionTreeAction.ts @@ -21,6 +21,7 @@ import { ObjectExplorerActionsContext } from 'sql/workbench/parts/objectExplorer import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IErrorMessageService } from 'sql/platform/errorMessage/common/errorMessageService'; import { UNSAVED_GROUP_ID } from 'sql/platform/connection/common/constants'; +import { IServerGroupController } from 'sql/platform/serverGroup/common/serverGroupController'; export class RefreshAction extends Action { @@ -173,14 +174,14 @@ export class AddServerGroupAction extends Action { constructor( id: string, label: string, - @IConnectionManagementService private _connectionManagementService: IConnectionManagementService + @IServerGroupController private readonly serverGroupController: IServerGroupController ) { super(id, label); this.class = 'add-server-group-action'; } public run(): Promise { - this._connectionManagementService.showCreateServerGroupDialog(); + this.serverGroupController.showCreateGroupDialog(); return Promise.resolve(true); } } @@ -196,14 +197,14 @@ export class EditServerGroupAction extends Action { id: string, label: string, private _group: ConnectionProfileGroup, - @IConnectionManagementService private _connectionManagementService: IConnectionManagementService + @IServerGroupController private readonly serverGroupController: IServerGroupController ) { super(id, label); this.class = 'edit-server-group-action'; } public run(): Promise { - this._connectionManagementService.showEditServerGroupDialog(this._group); + this.serverGroupController.showEditGroupDialog(this._group); return Promise.resolve(true); } } @@ -231,8 +232,7 @@ export class ActiveConnectionsFilterAction extends Action { constructor( id: string, label: string, - private view: ServerTreeView, - @IConnectionManagementService private _connectionManagementService: IConnectionManagementService + private view: ServerTreeView ) { super(id, label); this.class = ActiveConnectionsFilterAction.enabledClass; diff --git a/src/sql/workbench/parts/objectExplorer/test/browser/connectionTreeActions.test.ts b/src/sql/workbench/parts/objectExplorer/test/browser/connectionTreeActions.test.ts index 89390ceb01..9875e387e9 100644 --- a/src/sql/workbench/parts/objectExplorer/test/browser/connectionTreeActions.test.ts +++ b/src/sql/workbench/parts/objectExplorer/test/browser/connectionTreeActions.test.ts @@ -220,7 +220,7 @@ suite('SQL Connection Tree Action tests', () => { let serverTreeView = TypeMoq.Mock.ofType(ServerTreeView, TypeMoq.MockBehavior.Strict, undefined, instantiationService.object, undefined, undefined, undefined, undefined, capabilitiesService); serverTreeView.setup(x => x.showFilteredTree(TypeMoq.It.isAnyString())); serverTreeView.setup(x => x.refreshTree()); - let connectionTreeAction: ActiveConnectionsFilterAction = new ActiveConnectionsFilterAction(ActiveConnectionsFilterAction.ID, ActiveConnectionsFilterAction.LABEL, serverTreeView.object, connectionManagementService.object); + let connectionTreeAction: ActiveConnectionsFilterAction = new ActiveConnectionsFilterAction(ActiveConnectionsFilterAction.ID, ActiveConnectionsFilterAction.LABEL, serverTreeView.object); connectionTreeAction.run().then((value) => { serverTreeView.verify(x => x.showFilteredTree('active'), TypeMoq.Times.once()); }).then(() => done(), (err) => done(err)); @@ -237,7 +237,7 @@ suite('SQL Connection Tree Action tests', () => { let serverTreeView = TypeMoq.Mock.ofType(ServerTreeView, TypeMoq.MockBehavior.Strict, undefined, instantiationService.object, undefined, undefined, undefined, undefined, capabilitiesService); serverTreeView.setup(x => x.showFilteredTree(TypeMoq.It.isAnyString())); serverTreeView.setup(x => x.refreshTree()); - let connectionTreeAction: ActiveConnectionsFilterAction = new ActiveConnectionsFilterAction(ActiveConnectionsFilterAction.ID, ActiveConnectionsFilterAction.LABEL, serverTreeView.object, connectionManagementService.object); + let connectionTreeAction: ActiveConnectionsFilterAction = new ActiveConnectionsFilterAction(ActiveConnectionsFilterAction.ID, ActiveConnectionsFilterAction.LABEL, serverTreeView.object); connectionTreeAction.isSet = true; connectionTreeAction.run().then((value) => { serverTreeView.verify(x => x.refreshTree(), TypeMoq.Times.once()); diff --git a/src/sql/workbench/services/connection/browser/cmsConnectionController.ts b/src/sql/workbench/services/connection/browser/cmsConnectionController.ts index 487add5fb4..fb5d007fe4 100644 --- a/src/sql/workbench/services/connection/browser/cmsConnectionController.ts +++ b/src/sql/workbench/services/connection/browser/cmsConnectionController.ts @@ -9,6 +9,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { ConnectionProviderProperties } from 'sql/workbench/parts/connection/common/connectionProviderExtension'; import { ConnectionController } from 'sql/workbench/services/connection/browser/connectionController'; import { CmsConnectionWidget } from 'sql/workbench/services/connection/browser/cmsConnectionWidget'; +import { IServerGroupController } from 'sql/platform/serverGroup/common/serverGroupController'; /** * Connection Controller for CMS Connections @@ -16,12 +17,14 @@ import { CmsConnectionWidget } from 'sql/workbench/services/connection/browser/c export class CmsConnectionController extends ConnectionController { constructor( - connectionManagementService: IConnectionManagementService, connectionProperties: ConnectionProviderProperties, callback: IConnectionComponentCallbacks, providerName: string, - @IInstantiationService _instantiationService: IInstantiationService) { - super(connectionManagementService, connectionProperties, callback, providerName, _instantiationService); + @IConnectionManagementService _connectionManagementService: IConnectionManagementService, + @IInstantiationService _instantiationService: IInstantiationService, + @IServerGroupController _serverGroupController: IServerGroupController + ) { + super(connectionProperties, callback, providerName, _connectionManagementService, _instantiationService, _serverGroupController); let specialOptions = this._providerOptions.filter( (property) => (property.specialValueType !== null && property.specialValueType !== undefined)); this._connectionWidget = this._instantiationService.createInstance(CmsConnectionWidget, specialOptions, { @@ -40,4 +43,4 @@ export class CmsConnectionController extends ConnectionController { this._databaseCache = new Map(); this._connectionWidget.createConnectionWidget(container, authTypeChanged); } -} \ No newline at end of file +} diff --git a/src/sql/workbench/services/connection/browser/connectionController.ts b/src/sql/workbench/services/connection/browser/connectionController.ts index 1b1ecad342..04772920ef 100644 --- a/src/sql/workbench/services/connection/browser/connectionController.ts +++ b/src/sql/workbench/services/connection/browser/connectionController.ts @@ -15,9 +15,9 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { ConnectionOptionSpecialType } from 'sql/workbench/api/common/sqlExtHostTypes'; import { ConnectionProviderProperties } from 'sql/workbench/parts/connection/common/connectionProviderExtension'; import { ConnectionWidget } from 'sql/workbench/services/connection/browser/connectionWidget'; +import { IServerGroupController } from 'sql/platform/serverGroup/common/serverGroupController'; export class ConnectionController implements IConnectionComponentController { - private _connectionManagementService: IConnectionManagementService; private _advancedController: AdvancedPropertiesController; private _model: IConnectionProfile; private _providerName: string; @@ -28,12 +28,13 @@ export class ConnectionController implements IConnectionComponentController { protected _databaseCache = new Map(); constructor( - connectionManagementService: IConnectionManagementService, connectionProperties: ConnectionProviderProperties, callback: IConnectionComponentCallbacks, providerName: string, - @IInstantiationService protected _instantiationService: IInstantiationService) { - this._connectionManagementService = connectionManagementService; + @IConnectionManagementService protected readonly _connectionManagementService: IConnectionManagementService, + @IInstantiationService protected readonly _instantiationService: IInstantiationService, + @IServerGroupController protected readonly _serverGroupController: IServerGroupController + ) { this._callback = callback; this._providerOptions = connectionProperties.connectionOptions; let specialOptions = this._providerOptions.filter( @@ -89,7 +90,7 @@ export class ConnectionController implements IConnectionComponentController { } protected onCreateNewServerGroup(): void { - this._connectionManagementService.showCreateServerGroupDialog({ + this._serverGroupController.showCreateGroupDialog({ onAddGroup: (groupName) => this._connectionWidget.updateServerGroup(this.getAllServerGroups(), groupName), onClose: () => this._connectionWidget.focusOnServerGroup() }); diff --git a/src/sql/workbench/services/connection/browser/connectionDialogService.ts b/src/sql/workbench/services/connection/browser/connectionDialogService.ts index 37613bf15c..0f9d03d2f0 100644 --- a/src/sql/workbench/services/connection/browser/connectionDialogService.ts +++ b/src/sql/workbench/services/connection/browser/connectionDialogService.ts @@ -276,14 +276,12 @@ export class ConnectionDialogService implements IConnectionDialogService { if (providerName === Constants.cmsProviderName) { this._connectionControllerMap[providerName] = this._instantiationService.createInstance(CmsConnectionController, - this._connectionManagementService, this._capabilitiesService.getCapabilities(providerName).connection, { onSetConnectButton: (enable: boolean) => this.handleSetConnectButtonEnable(enable) }, providerName); } else { this._connectionControllerMap[providerName] = this._instantiationService.createInstance(ConnectionController, - this._connectionManagementService, this._capabilitiesService.getCapabilities(providerName).connection, { onSetConnectButton: (enable: boolean) => this.handleSetConnectButtonEnable(enable) }, providerName); diff --git a/src/sql/workbench/services/serverGroup/browser/serverGroupController.ts b/src/sql/workbench/services/serverGroup/browser/serverGroupController.ts index 8648566146..5a2c2d65e0 100644 --- a/src/sql/workbench/services/serverGroup/browser/serverGroupController.ts +++ b/src/sql/workbench/services/serverGroup/browser/serverGroupController.ts @@ -19,7 +19,6 @@ export class ServerGroupController implements IServerGroupController { _serviceBrand: any; private _serverGroupDialog: ServerGroupDialog; - private _connectionManagementService: IConnectionManagementService; private _callbacks: IServerGroupDialogCallbacks; private _group: ConnectionProfileGroup; private _viewModel: ServerGroupViewModel; @@ -27,7 +26,8 @@ export class ServerGroupController implements IServerGroupController { constructor( @IErrorMessageService private _errorMessageService: IErrorMessageService, @IInstantiationService private _instantiationService: IInstantiationService, - @IConfigurationService private _configurationService: IConfigurationService + @IConfigurationService private _configurationService: IConfigurationService, + @IConnectionManagementService private readonly connectionManagementService: IConnectionManagementService ) { } @@ -37,7 +37,7 @@ export class ServerGroupController implements IServerGroupController { this._group.name = this._viewModel.groupName; this._group.color = this._viewModel.groupColor; this._group.description = this._viewModel.groupDescription; - this._connectionManagementService.editGroup(this._group).then(() => { + this.connectionManagementService.editGroup(this._group).then(() => { this._serverGroupDialog.close(); }).catch(err => { // rollback changes made @@ -53,7 +53,7 @@ export class ServerGroupController implements IServerGroupController { color: this._viewModel.groupColor, description: this._viewModel.groupDescription }; - this._connectionManagementService.saveProfileGroup(newGroup).then(groupId => { + this.connectionManagementService.saveProfileGroup(newGroup).then(groupId => { if (this._callbacks) { this._callbacks.onAddGroup(this._serverGroupDialog.groupName); } @@ -75,16 +75,14 @@ export class ServerGroupController implements IServerGroupController { } - public showCreateGroupDialog(connectionManagementService: IConnectionManagementService, callbacks?: IServerGroupDialogCallbacks): Promise { - this._connectionManagementService = connectionManagementService; + public showCreateGroupDialog(callbacks?: IServerGroupDialogCallbacks): Promise { this._group = null; this._viewModel = new ServerGroupViewModel(undefined, this._configurationService.getValue(SERVER_GROUP_CONFIG)[SERVER_GROUP_COLORS_CONFIG]); this._callbacks = callbacks ? callbacks : undefined; return this.openServerGroupDialog(); } - public showEditGroupDialog(connectionManagementService: IConnectionManagementService, group: ConnectionProfileGroup): Promise { - this._connectionManagementService = connectionManagementService; + public showEditGroupDialog(group: ConnectionProfileGroup): Promise { this._group = group; this._viewModel = new ServerGroupViewModel(group, this._configurationService.getValue(SERVER_GROUP_CONFIG)[SERVER_GROUP_COLORS_CONFIG]); return this.openServerGroupDialog();