mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-07 17:23:56 -05:00
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { Memento, MementoObject } from 'vs/workbench/common/memento';
|
|
import { IThemeService, Themable } from 'vs/platform/theme/common/themeService';
|
|
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
|
|
|
|
export class Component extends Themable {
|
|
|
|
private readonly memento: Memento;
|
|
|
|
constructor(
|
|
private readonly id: string,
|
|
themeService: IThemeService,
|
|
storageService: IStorageService
|
|
) {
|
|
super(themeService);
|
|
|
|
this.id = id;
|
|
this.memento = new Memento(this.id, storageService);
|
|
|
|
this._register(storageService.onWillSaveState(() => {
|
|
|
|
// Ask the component to persist state into the memento
|
|
this.saveState();
|
|
|
|
// Then save the memento into storage
|
|
this.memento.saveMemento();
|
|
}));
|
|
}
|
|
|
|
getId(): string {
|
|
return this.id;
|
|
}
|
|
|
|
protected getMemento(scope: StorageScope): MementoObject {
|
|
return this.memento.getMemento(scope);
|
|
}
|
|
|
|
protected saveState(): void {
|
|
// Subclasses to implement for storing state
|
|
}
|
|
}
|