Differentiated server icons by server type: box, big data cluster, cloud... (#5241)

This commit is contained in:
Gene Lee
2019-05-13 14:52:56 -07:00
committed by GitHub
parent 7da0dddaa9
commit 99d00e2057
25 changed files with 693 additions and 19 deletions

View File

@@ -52,12 +52,15 @@ import { IConnectionDialogService } from 'sql/workbench/services/connection/comm
import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ILogService } from 'vs/platform/log/common/log';
import * as interfaces from './interfaces';
export class ConnectionManagementService extends Disposable implements IConnectionManagementService {
_serviceBrand: any;
private _providers = new Map<string, { onReady: Thenable<azdata.ConnectionProvider>, properties: ConnectionProviderProperties }>();
private _iconProviders = new Map<string, azdata.IconProvider>();
private _connectionIconIdCache = new Map<string, string>();
private _uriToProvider: { [uri: string]: string; } = Object.create(null);
@@ -176,6 +179,10 @@ export class ConnectionManagementService extends Disposable implements IConnecti
(this._providers.get(providerId).onReady as Deferred<azdata.ConnectionProvider>).resolve(provider);
}
public registerIconProvider(providerId: string, iconProvider: azdata.IconProvider): void {
this._iconProviders.set(providerId, iconProvider);
}
/**
* Opens the connection dialog
* @param params Include the uri, type of connection
@@ -543,10 +550,27 @@ export class ConnectionManagementService extends Disposable implements IConnecti
if (options.showDashboard) {
this.showDashboardForConnectionManagementInfo(connectionManagementInfo.connectionProfile);
}
let connectionProfile = connectionManagementInfo.connectionProfile;
this._onConnect.fire(<IConnectionParams>{
connectionUri: uri,
connectionProfile: connectionManagementInfo.connectionProfile
connectionProfile: connectionProfile
});
let iconProvider = this._iconProviders.get(connectionManagementInfo.providerId);
if (iconProvider) {
let serverInfo: azdata.ServerInfo = this.getServerInfo(connectionProfile.id);
let profile: interfaces.IConnectionProfile = connectionProfile.toIConnectionProfile();
iconProvider.getConnectionIconId(profile, serverInfo).then(iconId => {
if (iconId) {
this._connectionIconIdCache.set(connectionProfile.id, iconId);
}
});
}
}
public getConnectionIconId(connectionId: string): string {
return this._connectionIconIdCache.get(connectionId);
}
public showDashboard(connection: IConnectionProfile): Thenable<boolean> {
@@ -1392,4 +1416,9 @@ export class ConnectionManagementService extends Disposable implements IConnecti
}
return Promise.resolve(undefined);
}
public getProviderProperties(providerName: string): ConnectionProviderProperties {
let connectionProvider = this._providers.get(providerName);
return connectionProvider && connectionProvider.properties;
}
}