58 lines
1.7 KiB
TypeScript
58 lines
1.7 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 * as vscode from 'vscode';
|
|
import * as nls from 'vscode-nls';
|
|
import { PreviewStatusBarEntry } from './ownedStatusBarEntry';
|
|
|
|
const localize = nls.loadMessageBundle();
|
|
|
|
class BinarySize {
|
|
static readonly KB = 1024;
|
|
static readonly MB = BinarySize.KB * BinarySize.KB;
|
|
static readonly GB = BinarySize.MB * BinarySize.KB;
|
|
static readonly TB = BinarySize.GB * BinarySize.KB;
|
|
|
|
static formatSize(size: number): string {
|
|
if (size < BinarySize.KB) {
|
|
return localize('sizeB', "{0}B", size);
|
|
}
|
|
|
|
if (size < BinarySize.MB) {
|
|
return localize('sizeKB', "{0}KB", (size / BinarySize.KB).toFixed(2));
|
|
}
|
|
|
|
if (size < BinarySize.GB) {
|
|
return localize('sizeMB', "{0}MB", (size / BinarySize.MB).toFixed(2));
|
|
}
|
|
|
|
if (size < BinarySize.TB) {
|
|
return localize('sizeGB', "{0}GB", (size / BinarySize.GB).toFixed(2));
|
|
}
|
|
|
|
return localize('sizeTB', "{0}TB", (size / BinarySize.TB).toFixed(2));
|
|
}
|
|
}
|
|
|
|
export class BinarySizeStatusBarEntry extends PreviewStatusBarEntry {
|
|
|
|
constructor() {
|
|
super({
|
|
id: 'imagePreview.binarySize',
|
|
name: localize('sizeStatusBar.name', "Image Binary Size"),
|
|
alignment: vscode.StatusBarAlignment.Right,
|
|
priority: 100,
|
|
});
|
|
}
|
|
|
|
public show(owner: string, size: number | undefined) {
|
|
if (typeof size === 'number') {
|
|
super.showItem(owner, BinarySize.formatSize(size));
|
|
} else {
|
|
this.hide(owner);
|
|
}
|
|
}
|
|
}
|