mirror of
https://github.com/microsoft/vscode.git
synced 2026-08-27 04:07:13 +01:00
make visibility workspace state (#195739)
This commit is contained in:
@@ -46,6 +46,7 @@ export class ActivitybarPart extends Part {
|
||||
|
||||
static readonly pinnedViewContainersKey = 'workbench.activity.pinnedViewlets2';
|
||||
static readonly placeholderViewContainersKey = 'workbench.activity.placeholderViewlets';
|
||||
static readonly viewContainersWorkspaceStateKey = 'workbench.activity.viewletsWorkspaceState';
|
||||
|
||||
//#region IView
|
||||
|
||||
@@ -74,6 +75,7 @@ export class ActivitybarPart extends Part {
|
||||
partContainerClass: 'activitybar',
|
||||
pinnedViewContainersKey: ActivitybarPart.pinnedViewContainersKey,
|
||||
placeholderViewContainersKey: ActivitybarPart.placeholderViewContainersKey,
|
||||
viewContainersWorkspaceStateKey: ActivitybarPart.viewContainersWorkspaceStateKey,
|
||||
orientation: ActionsOrientation.VERTICAL,
|
||||
icon: true,
|
||||
iconSize: 24,
|
||||
|
||||
@@ -34,6 +34,7 @@ export class AuxiliaryBarPart extends AbstractPaneCompositePart {
|
||||
static readonly activePanelSettingsKey = 'workbench.auxiliarybar.activepanelid';
|
||||
static readonly pinnedPanelsKey = 'workbench.auxiliarybar.pinnedPanels';
|
||||
static readonly placeholdeViewContainersKey = 'workbench.auxiliarybar.placeholderPanels';
|
||||
static readonly viewContainersWorkspaceStateKey = 'workbench.auxiliarybar.viewContainersWorkspaceState';
|
||||
|
||||
// Use the side bar dimensions
|
||||
override readonly minimumWidth: number = 170;
|
||||
@@ -127,6 +128,7 @@ export class AuxiliaryBarPart extends AbstractPaneCompositePart {
|
||||
partContainerClass: 'auxiliarybar',
|
||||
pinnedViewContainersKey: AuxiliaryBarPart.pinnedPanelsKey,
|
||||
placeholderViewContainersKey: AuxiliaryBarPart.placeholdeViewContainersKey,
|
||||
viewContainersWorkspaceStateKey: AuxiliaryBarPart.viewContainersWorkspaceStateKey,
|
||||
icon: true,
|
||||
orientation: ActionsOrientation.HORIZONTAL,
|
||||
recomputeSizes: true,
|
||||
|
||||
@@ -38,6 +38,7 @@ interface IPlaceholderViewContainer {
|
||||
readonly themeIcon?: ThemeIcon;
|
||||
readonly isBuiltin?: boolean;
|
||||
readonly views?: { when?: string }[];
|
||||
// TODO @sandy081: Remove this after a while. Migrated to visible in IViewContainerWorkspaceState
|
||||
readonly visible?: boolean;
|
||||
}
|
||||
|
||||
@@ -45,7 +46,12 @@ interface IPinnedViewContainer {
|
||||
readonly id: string;
|
||||
readonly pinned: boolean;
|
||||
readonly order?: number;
|
||||
// TODO @sandy081: Remove this after a while. Migrated to visible in IPlaceholderViewContainer
|
||||
// TODO @sandy081: Remove this after a while. Migrated to visible in IViewContainerWorkspaceState
|
||||
readonly visible: boolean;
|
||||
}
|
||||
|
||||
interface IViewContainerWorkspaceState {
|
||||
readonly id: string;
|
||||
readonly visible: boolean;
|
||||
}
|
||||
|
||||
@@ -64,6 +70,7 @@ export interface IPaneCompositeBarOptions {
|
||||
readonly partContainerClass: string;
|
||||
readonly pinnedViewContainersKey: string;
|
||||
readonly placeholderViewContainersKey: string;
|
||||
readonly viewContainersWorkspaceStateKey: string;
|
||||
readonly icon: boolean;
|
||||
readonly compact?: boolean;
|
||||
readonly iconSize: number;
|
||||
@@ -554,6 +561,12 @@ export class PaneCompositeBar extends Disposable {
|
||||
cachedViewContainer.isBuiltin = placeholderViewContainer.isBuiltin;
|
||||
}
|
||||
}
|
||||
for (const viewContainerWorkspaceState of this.getViewContainersWorkspaceState()) {
|
||||
const cachedViewContainer = this._cachedViewContainers.find(cached => cached.id === viewContainerWorkspaceState.id);
|
||||
if (cachedViewContainer) {
|
||||
cachedViewContainer.visible = viewContainerWorkspaceState.visible ?? cachedViewContainer.visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return this._cachedViewContainers;
|
||||
@@ -568,15 +581,19 @@ export class PaneCompositeBar extends Disposable {
|
||||
order
|
||||
})));
|
||||
|
||||
this.setPlaceholderViewContainers(cachedViewContainers.map(({ id, icon, name, views, visible, isBuiltin }) => (<IPlaceholderViewContainer>{
|
||||
this.setPlaceholderViewContainers(cachedViewContainers.map(({ id, icon, name, views, isBuiltin }) => (<IPlaceholderViewContainer>{
|
||||
id,
|
||||
iconUrl: URI.isUri(icon) ? icon : undefined,
|
||||
themeIcon: ThemeIcon.isThemeIcon(icon) ? icon : undefined,
|
||||
name,
|
||||
isBuiltin,
|
||||
visible,
|
||||
views
|
||||
})));
|
||||
|
||||
this.setViewContainersWorkspaceState(cachedViewContainers.map(({ id, visible }) => (<IViewContainerWorkspaceState>{
|
||||
id,
|
||||
visible,
|
||||
})));
|
||||
}
|
||||
|
||||
private getPinnedViewContainers(): IPinnedViewContainer[] {
|
||||
@@ -642,6 +659,38 @@ export class PaneCompositeBar extends Disposable {
|
||||
private setStoredPlaceholderViewContainersValue(value: string): void {
|
||||
this.storageService.store(this.options.placeholderViewContainersKey, value, StorageScope.PROFILE, StorageTarget.MACHINE);
|
||||
}
|
||||
|
||||
private getViewContainersWorkspaceState(): IViewContainerWorkspaceState[] {
|
||||
return JSON.parse(this.viewContainersWorkspaceStateValue);
|
||||
}
|
||||
|
||||
private setViewContainersWorkspaceState(viewContainersWorkspaceState: IViewContainerWorkspaceState[]): void {
|
||||
this.viewContainersWorkspaceStateValue = JSON.stringify(viewContainersWorkspaceState);
|
||||
}
|
||||
|
||||
private _viewContainersWorkspaceStateValue: string | undefined;
|
||||
private get viewContainersWorkspaceStateValue(): string {
|
||||
if (!this._viewContainersWorkspaceStateValue) {
|
||||
this._viewContainersWorkspaceStateValue = this.getStoredViewContainersWorkspaceStateValue();
|
||||
}
|
||||
|
||||
return this._viewContainersWorkspaceStateValue;
|
||||
}
|
||||
|
||||
private set viewContainersWorkspaceStateValue(viewContainersWorkspaceStateValue: string) {
|
||||
if (this.viewContainersWorkspaceStateValue !== viewContainersWorkspaceStateValue) {
|
||||
this._viewContainersWorkspaceStateValue = viewContainersWorkspaceStateValue;
|
||||
this.setStoredViewContainersWorkspaceStateValue(viewContainersWorkspaceStateValue);
|
||||
}
|
||||
}
|
||||
|
||||
private getStoredViewContainersWorkspaceStateValue(): string {
|
||||
return this.storageService.get(this.options.viewContainersWorkspaceStateKey, StorageScope.WORKSPACE, '[]');
|
||||
}
|
||||
|
||||
private setStoredViewContainersWorkspaceStateValue(value: string): void {
|
||||
this.storageService.store(this.options.viewContainersWorkspaceStateKey, value, StorageScope.WORKSPACE, StorageTarget.MACHINE);
|
||||
}
|
||||
}
|
||||
|
||||
class ViewContainerActivityAction extends CompositeBarAction {
|
||||
|
||||
@@ -120,6 +120,7 @@ export class PanelPart extends AbstractPaneCompositePart {
|
||||
partContainerClass: 'panel',
|
||||
pinnedViewContainersKey: 'workbench.panel.pinnedPanels',
|
||||
placeholderViewContainersKey: 'workbench.panel.placeholderPanels',
|
||||
viewContainersWorkspaceStateKey: 'workbench.panel.viewContainersWorkspaceState',
|
||||
icon: false,
|
||||
orientation: ActionsOrientation.HORIZONTAL,
|
||||
recomputeSizes: true,
|
||||
|
||||
@@ -165,6 +165,7 @@ export class SidebarPart extends AbstractPaneCompositePart {
|
||||
partContainerClass: 'sidebar',
|
||||
pinnedViewContainersKey: ActivitybarPart.pinnedViewContainersKey,
|
||||
placeholderViewContainersKey: ActivitybarPart.placeholderViewContainersKey,
|
||||
viewContainersWorkspaceStateKey: ActivitybarPart.viewContainersWorkspaceStateKey,
|
||||
icon: true,
|
||||
orientation: ActionsOrientation.HORIZONTAL,
|
||||
recomputeSizes: true,
|
||||
|
||||
Reference in New Issue
Block a user