mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-24 20:26:08 +00:00
66 lines
2.3 KiB
TypeScript
66 lines
2.3 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { BasePolicy } from './basePolicy';
|
|
import { CategoryDto, PolicyDto } from './policyDto';
|
|
import { renderProfileString } from './render';
|
|
import { Category, NlsString, PolicyType, LanguageTranslations } from './types';
|
|
|
|
export class NumberPolicy extends BasePolicy {
|
|
|
|
static from(category: CategoryDto, policy: PolicyDto): NumberPolicy | undefined {
|
|
const { type, default: defaultValue, name, minimumVersion, localization } = policy;
|
|
|
|
if (type !== 'number') {
|
|
return undefined;
|
|
}
|
|
|
|
if (typeof defaultValue !== 'number') {
|
|
throw new Error(`Missing required 'default' property.`);
|
|
}
|
|
|
|
return new NumberPolicy(name, { moduleName: '', name: { nlsKey: category.name.key, value: category.name.value } }, minimumVersion, { nlsKey: localization.description.key, value: localization.description.value }, '', defaultValue);
|
|
}
|
|
|
|
private constructor(
|
|
name: string,
|
|
category: Category,
|
|
minimumVersion: string,
|
|
description: NlsString,
|
|
moduleName: string,
|
|
protected readonly defaultValue: number,
|
|
) {
|
|
super(PolicyType.Number, name, category, minimumVersion, description, moduleName);
|
|
}
|
|
|
|
protected renderADMXElements(): string[] {
|
|
return [
|
|
`<decimal id="${this.name}" valueName="${this.name}" />`
|
|
// `<decimal id="Quarantine_PurgeItemsAfterDelay" valueName="PurgeItemsAfterDelay" minValue="0" maxValue="10000000" />`
|
|
];
|
|
}
|
|
|
|
renderADMLPresentationContents() {
|
|
return `<decimalTextBox refId="${this.name}" defaultValue="${this.defaultValue}">${this.name}</decimalTextBox>`;
|
|
}
|
|
|
|
renderProfileValue() {
|
|
return `<integer>${this.defaultValue}</integer>`;
|
|
}
|
|
|
|
renderProfileManifestValue(translations?: LanguageTranslations) {
|
|
return `<key>pfm_default</key>
|
|
<integer>${this.defaultValue}</integer>
|
|
<key>pfm_description</key>
|
|
<string>${renderProfileString(this.name, this.moduleName, this.description, translations)}</string>
|
|
<key>pfm_name</key>
|
|
<string>${this.name}</string>
|
|
<key>pfm_title</key>
|
|
<string>${this.name}</string>
|
|
<key>pfm_type</key>
|
|
<string>integer</string>`;
|
|
}
|
|
}
|