mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-08 01:28:26 -05:00
Merge from vscode 2e5312cd61ff99c570299ecc122c52584265eda2
This commit is contained in:
committed by
Anthony Dresser
parent
3603f55d97
commit
7f1d8fc32f
@@ -33,12 +33,12 @@ import { WorkspaceService } from 'vs/workbench/services/configuration/browser/co
|
||||
import { ConfigurationCache } from 'vs/workbench/services/configuration/browser/configurationCache';
|
||||
import { ISignService } from 'vs/platform/sign/common/sign';
|
||||
import { SignService } from 'vs/platform/sign/browser/signService';
|
||||
import { IWorkbenchConstructionOptions, IWorkspace } from 'vs/workbench/workbench.web.api';
|
||||
import { IWorkbenchConstructionOptions, IWorkspace, IWorkbench } from 'vs/workbench/workbench.web.api';
|
||||
import { FileUserDataProvider } from 'vs/workbench/services/userData/common/fileUserDataProvider';
|
||||
import { BACKUPS } from 'vs/platform/environment/common/environment';
|
||||
import { joinPath } from 'vs/base/common/resources';
|
||||
import { BrowserStorageService } from 'vs/platform/storage/browser/storageService';
|
||||
import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
|
||||
import { getThemeTypeSelector, DARK, HIGH_CONTRAST, LIGHT } from 'vs/platform/theme/common/themeService';
|
||||
import { registerWindowDriver } from 'vs/platform/driver/browser/driver';
|
||||
import { BufferLogService } from 'vs/platform/log/common/bufferLog';
|
||||
@@ -51,6 +51,24 @@ import { getWorkspaceIdentifier } from 'vs/workbench/services/workspaces/browser
|
||||
import { coalesce } from 'vs/base/common/arrays';
|
||||
import { InMemoryFileSystemProvider } from 'vs/platform/files/common/inMemoryFilesystemProvider';
|
||||
import { WebResourceIdentityService, IResourceIdentityService } from 'vs/platform/resource/common/resourceIdentityService';
|
||||
import { ICommandService } from 'vs/platform/commands/common/commands';
|
||||
import { firstSessionDateStorageKey } from 'vs/platform/telemetry/common/telemetry';
|
||||
|
||||
interface PanelActivityState {
|
||||
id: string;
|
||||
name?: string;
|
||||
pinned: boolean;
|
||||
order: number;
|
||||
visible: boolean;
|
||||
}
|
||||
|
||||
interface SideBarActivityState {
|
||||
id: string;
|
||||
pinned: boolean;
|
||||
order: number;
|
||||
visible: boolean;
|
||||
}
|
||||
|
||||
|
||||
class BrowserMain extends Disposable {
|
||||
|
||||
@@ -61,7 +79,7 @@ class BrowserMain extends Disposable {
|
||||
super();
|
||||
}
|
||||
|
||||
async open(): Promise<void> {
|
||||
async open(): Promise<IWorkbench> {
|
||||
const services = await this.initServices();
|
||||
|
||||
await domContentLoaded();
|
||||
@@ -80,13 +98,196 @@ class BrowserMain extends Disposable {
|
||||
// Listeners
|
||||
this.registerListeners(workbench, services.storageService);
|
||||
|
||||
this.applyDefaultLayout(services.storageService);
|
||||
|
||||
// Driver
|
||||
if (this.configuration.driver) {
|
||||
(async () => this._register(await registerWindowDriver()))();
|
||||
}
|
||||
|
||||
// Startup
|
||||
workbench.startup();
|
||||
const instantiationService = workbench.startup();
|
||||
|
||||
// Return API Facade
|
||||
return instantiationService.invokeFunction(accessor => {
|
||||
const commandService = accessor.get(ICommandService);
|
||||
|
||||
return {
|
||||
commands: {
|
||||
executeCommand: (command, ...args) => commandService.executeCommand(command, ...args)
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
private applyDefaultLayout(storageService: BrowserStorageService) {
|
||||
const { defaultLayout } = this.configuration;
|
||||
if (!defaultLayout) {
|
||||
return;
|
||||
}
|
||||
|
||||
const firstRun = storageService.get(firstSessionDateStorageKey, StorageScope.GLOBAL);
|
||||
if (firstRun !== undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { sidebar } = defaultLayout;
|
||||
if (sidebar) {
|
||||
if (sidebar.visible !== undefined) {
|
||||
if (sidebar.visible) {
|
||||
storageService.remove('workbench.sidebar.hidden', StorageScope.WORKSPACE);
|
||||
} else {
|
||||
storageService.store('workbench.sidebar.hidden', true, StorageScope.WORKSPACE);
|
||||
}
|
||||
}
|
||||
|
||||
if (sidebar.containers !== undefined) {
|
||||
const sidebarState: SideBarActivityState[] = [];
|
||||
|
||||
let order = -1;
|
||||
for (const container of sidebar.containers.sort((a, b) => (a.order ?? 1) - (b.order ?? 1))) {
|
||||
let viewletId;
|
||||
switch (container.id) {
|
||||
case 'explorer':
|
||||
viewletId = 'workbench.view.explorer';
|
||||
break;
|
||||
case 'run':
|
||||
viewletId = 'workbench.view.debug';
|
||||
break;
|
||||
case 'scm':
|
||||
viewletId = 'workbench.view.scm';
|
||||
break;
|
||||
case 'search':
|
||||
viewletId = 'workbench.view.search';
|
||||
break;
|
||||
case 'extensions':
|
||||
viewletId = 'workbench.view.extensions';
|
||||
break;
|
||||
case 'remote':
|
||||
viewletId = 'workbench.view.remote';
|
||||
break;
|
||||
default:
|
||||
viewletId = `workbench.view.extension.${container.id}`;
|
||||
}
|
||||
|
||||
order = container.order ?? (order + 1);
|
||||
const state: SideBarActivityState = {
|
||||
id: viewletId,
|
||||
order: order,
|
||||
pinned: true,
|
||||
visible: true
|
||||
};
|
||||
|
||||
if (container.active) {
|
||||
storageService.store('workbench.sidebar.activeviewletid', viewletId, StorageScope.WORKSPACE);
|
||||
} else {
|
||||
if ((<any>container).visible !== undefined) { // {{SQL CARBON EDIT}} strict-null-checks
|
||||
state.pinned = (<any>container).visible; // {{SQL CARBON EDIT}} strict-null-checks
|
||||
state.visible = (<any>container).visible; // {{SQL CARBON EDIT}} strict-null-checks
|
||||
}
|
||||
}
|
||||
|
||||
sidebarState.push(state);
|
||||
|
||||
if (container.views !== undefined) {
|
||||
const viewsState: { id: string, isHidden?: boolean, order?: number }[] = [];
|
||||
const viewsWorkspaceState: { [id: string]: { collapsed: boolean, isHidden?: boolean, size?: number } } = {};
|
||||
|
||||
for (const view of container.views) {
|
||||
if (view.order !== undefined || view.visible !== undefined) {
|
||||
viewsState.push({
|
||||
id: view.id,
|
||||
isHidden: view.visible === undefined ? undefined : !view.visible,
|
||||
order: view.order === undefined ? undefined : view.order
|
||||
});
|
||||
}
|
||||
|
||||
if (view.collapsed !== undefined) {
|
||||
viewsWorkspaceState[view.id] = {
|
||||
collapsed: view.collapsed,
|
||||
isHidden: view.visible === undefined ? undefined : !view.visible,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
storageService.store(`${viewletId}.state.hidden`, JSON.stringify(viewsState), StorageScope.GLOBAL);
|
||||
storageService.store(`${viewletId}.state`, JSON.stringify(viewsWorkspaceState), StorageScope.WORKSPACE);
|
||||
}
|
||||
}
|
||||
|
||||
storageService.store('workbench.activity.pinnedViewlets2', JSON.stringify(sidebarState), StorageScope.GLOBAL);
|
||||
}
|
||||
}
|
||||
|
||||
const { panel } = defaultLayout;
|
||||
if (panel) {
|
||||
if (panel.visible !== undefined) {
|
||||
if (panel.visible) {
|
||||
storageService.store('workbench.panel.hidden', false, StorageScope.WORKSPACE);
|
||||
} else {
|
||||
storageService.remove('workbench.panel.hidden', StorageScope.WORKSPACE);
|
||||
}
|
||||
}
|
||||
|
||||
if (panel.containers !== undefined) {
|
||||
const panelState: PanelActivityState[] = [];
|
||||
|
||||
let order = -1;
|
||||
for (const container of panel.containers.sort((a, b) => (a.order ?? 1) - (b.order ?? 1))) {
|
||||
let name;
|
||||
let panelId = container.id;
|
||||
switch (panelId) {
|
||||
case 'terminal':
|
||||
name = 'Terminal';
|
||||
panelId = 'workbench.panel.terminal';
|
||||
break;
|
||||
case 'debug':
|
||||
name = 'Debug Console';
|
||||
panelId = 'workbench.panel.repl';
|
||||
break;
|
||||
case 'problems':
|
||||
name = 'Problems';
|
||||
panelId = 'workbench.panel.markers';
|
||||
break;
|
||||
case 'output':
|
||||
name = 'Output';
|
||||
panelId = 'workbench.panel.output';
|
||||
break;
|
||||
case 'comments':
|
||||
name = 'Comments';
|
||||
panelId = 'workbench.panel.comments';
|
||||
break;
|
||||
case 'refactor':
|
||||
name = 'Refactor Preview';
|
||||
panelId = 'refactorPreview';
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
||||
order = container.order ?? (order + 1);
|
||||
const state: PanelActivityState = {
|
||||
id: panelId,
|
||||
name: name,
|
||||
order: order,
|
||||
pinned: true,
|
||||
visible: true
|
||||
};
|
||||
|
||||
if (container.active) {
|
||||
storageService.store('workbench.panelpart.activepanelid', panelId, StorageScope.WORKSPACE);
|
||||
} else {
|
||||
if ((<any>container).visible !== undefined) { // {{SQL CARBON EDIT}} strict-null-checks
|
||||
state.pinned = (<any>container).visible; // {{SQL CARBON EDIT}} strict-null-checks
|
||||
state.visible = (<any>container).visible; // {{SQL CARBON EDIT}} strict-null-checks
|
||||
}
|
||||
}
|
||||
|
||||
panelState.push(state);
|
||||
}
|
||||
|
||||
storageService.store('workbench.panel.pinnedPanels', JSON.stringify(panelState), StorageScope.GLOBAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private registerListeners(workbench: Workbench, storageService: BrowserStorageService): void {
|
||||
@@ -335,8 +536,8 @@ class BrowserMain extends Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
export function main(domElement: HTMLElement, options: IWorkbenchConstructionOptions): Promise<void> {
|
||||
const renderer = new BrowserMain(domElement, options);
|
||||
export function main(domElement: HTMLElement, options: IWorkbenchConstructionOptions): Promise<IWorkbench> {
|
||||
const workbench = new BrowserMain(domElement, options);
|
||||
|
||||
return renderer.open();
|
||||
return workbench.open();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user