Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/common/component.ts
3291 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { Memento, MementoObject } from './memento.js';
7
import { IThemeService, Themable } from '../../platform/theme/common/themeService.js';
8
import { IStorageService, IStorageValueChangeEvent, StorageScope, StorageTarget } from '../../platform/storage/common/storage.js';
9
import { DisposableStore } from '../../base/common/lifecycle.js';
10
import { Event } from '../../base/common/event.js';
11
12
export class Component extends Themable {
13
14
private readonly memento: Memento;
15
16
constructor(
17
private readonly id: string,
18
themeService: IThemeService,
19
storageService: IStorageService
20
) {
21
super(themeService);
22
23
this.memento = new Memento(this.id, storageService);
24
25
this._register(storageService.onWillSaveState(() => {
26
27
// Ask the component to persist state into the memento
28
this.saveState();
29
30
// Then save the memento into storage
31
this.memento.saveMemento();
32
}));
33
}
34
35
getId(): string {
36
return this.id;
37
}
38
39
protected getMemento(scope: StorageScope, target: StorageTarget): MementoObject {
40
return this.memento.getMemento(scope, target);
41
}
42
43
protected reloadMemento(scope: StorageScope): void {
44
return this.memento.reloadMemento(scope);
45
}
46
47
protected onDidChangeMementoValue(scope: StorageScope, disposables: DisposableStore): Event<IStorageValueChangeEvent> {
48
return this.memento.onDidChangeValue(scope, disposables);
49
}
50
51
protected saveState(): void {
52
// Subclasses to implement for storing state
53
}
54
}
55
56