mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-28 12:33:35 +01:00
Render messages
This commit is contained in:
@@ -35,4 +35,7 @@ export class MainThreadExtensionService implements MainThreadExtensionServiceSha
|
||||
}
|
||||
$onExtensionActivationFailed(extensionId: string): void {
|
||||
}
|
||||
$addMessage(extensionId: string, severity: Severity, message: string): void {
|
||||
this._extensionService._addMessage(extensionId, severity, message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,6 +124,8 @@ export function createApiFactory(
|
||||
|
||||
return function (extension: IExtensionDescription): typeof vscode {
|
||||
|
||||
const EXTENSION_ID = extension.id;
|
||||
|
||||
if (extension.enableProposedApi && !extension.isBuiltin) {
|
||||
|
||||
if (
|
||||
@@ -386,6 +388,7 @@ export function createApiFactory(
|
||||
// namespace: workspace
|
||||
const workspace: typeof vscode.workspace = {
|
||||
get rootPath() {
|
||||
extensionService.addMessage(EXTENSION_ID, Severity.Warning, 'workspace.rootPath is deprecated');
|
||||
return extHostWorkspace.getPath();
|
||||
},
|
||||
set rootPath(value) {
|
||||
|
||||
@@ -352,6 +352,7 @@ export interface MainThreadExtensionServiceShape extends IDisposable {
|
||||
$localShowMessage(severity: Severity, msg: string): void;
|
||||
$onExtensionActivated(extensionId: string, startup: boolean, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationEvent: string): void;
|
||||
$onExtensionActivationFailed(extensionId: string): void;
|
||||
$addMessage(extensionId: string, severity: Severity, message: string): void;
|
||||
}
|
||||
|
||||
export interface SCMProviderFeatures {
|
||||
|
||||
@@ -273,6 +273,10 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
|
||||
return result;
|
||||
}
|
||||
|
||||
public addMessage(extensionId: string, severity: Severity, message: string): void {
|
||||
this._proxy.$addMessage(extensionId, severity, message);
|
||||
}
|
||||
|
||||
// --- impl
|
||||
|
||||
private _activateExtension(extensionDescription: IExtensionDescription, reason: ExtensionActivationReason): TPromise<ActivatedExtension> {
|
||||
|
||||
@@ -22,7 +22,7 @@ import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/edi
|
||||
import { IExtensionService, IExtensionDescription, IExtensionsStatus } from 'vs/platform/extensions/common/extensions';
|
||||
import { IDelegate, IRenderer } from 'vs/base/browser/ui/list/list';
|
||||
import { WorkbenchList, IListService } from 'vs/platform/list/browser/listService';
|
||||
import { append, $, addDisposableListener, addClass, toggleClass } from 'vs/base/browser/dom';
|
||||
import { append, $, addDisposableListener, addClass, toggleClass, removeClass } from 'vs/base/browser/dom';
|
||||
import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
|
||||
import { IMessageService, Severity } from 'vs/platform/message/common/message';
|
||||
import { dispose, IDisposable } from 'vs/base/common/lifecycle';
|
||||
@@ -124,9 +124,14 @@ export class RuntimeExtensionsEditor extends BaseEditor {
|
||||
element: HTMLElement;
|
||||
icon: HTMLImageElement;
|
||||
name: HTMLElement;
|
||||
|
||||
timeContainer: HTMLElement;
|
||||
timeIcon: HTMLElement;
|
||||
timeLabel: HTMLElement;
|
||||
|
||||
msgIcon: HTMLElement;
|
||||
msgLabel: HTMLElement;
|
||||
|
||||
disposables: IDisposable[];
|
||||
elementDisposables: IDisposable[];
|
||||
}
|
||||
@@ -139,9 +144,15 @@ export class RuntimeExtensionsEditor extends BaseEditor {
|
||||
|
||||
const desc = append(element, $('div.desc'));
|
||||
const name = append(desc, $('div.name'));
|
||||
|
||||
const timeContainer = append(desc, $('div.time'));
|
||||
const timeIcon = append(timeContainer, $('span.octicon.octicon-clock'));
|
||||
const timeLabel = append(timeContainer, $('span.time-label'));
|
||||
|
||||
const msgContainer = append(desc, $('div.msg'));
|
||||
const msgIcon = append(msgContainer, $('.'));
|
||||
const msgLabel = append(msgContainer, $('span'));
|
||||
|
||||
const actionbar = new ActionBar(element, {
|
||||
animated: false,
|
||||
actionItemProvider: (action: Action) => {
|
||||
@@ -164,6 +175,8 @@ export class RuntimeExtensionsEditor extends BaseEditor {
|
||||
timeContainer,
|
||||
timeIcon,
|
||||
timeLabel,
|
||||
msgIcon,
|
||||
msgLabel,
|
||||
disposables,
|
||||
elementDisposables: []
|
||||
};
|
||||
@@ -208,7 +221,15 @@ export class RuntimeExtensionsEditor extends BaseEditor {
|
||||
if (activationTimes.startup) {
|
||||
data.timeIcon.className = 'octicon octicon-clock';
|
||||
} else {
|
||||
data.timeIcon.className = 'octicon octicon-rocket';
|
||||
data.timeIcon.className = 'octicon octicon-dashboard';
|
||||
}
|
||||
|
||||
if (element.status.messages && element.status.messages.length > 0) {
|
||||
data.msgIcon.className = 'octicon octicon-alert';
|
||||
data.msgLabel.textContent = element.status.messages[0].message;
|
||||
} else {
|
||||
data.msgIcon.className = '';
|
||||
data.msgLabel.textContent = '';
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -510,6 +510,20 @@ export class ExtensionService extends Disposable implements IExtensionService {
|
||||
this._extensionHostProcessActivationTimes[extensionId] = new ActivationTimes(startup, codeLoadingTime, activateCallTime, activateResolvedTime, activationEvent);
|
||||
this._onDidChangeExtensionsStatus.fire([extensionId]);
|
||||
}
|
||||
|
||||
public _addMessage(extensionId: string, severity: Severity, message: string): void {
|
||||
if (!this._extensionsMessages[extensionId]) {
|
||||
this._extensionsMessages[extensionId] = [];
|
||||
}
|
||||
this._extensionsMessages[extensionId].push({
|
||||
type: severity,
|
||||
message: message,
|
||||
source: null,
|
||||
extensionId: null,
|
||||
extensionPointId: null
|
||||
});
|
||||
this._onDidChangeExtensionsStatus.fire([extensionId]);
|
||||
}
|
||||
}
|
||||
|
||||
export class Logger implements ILog {
|
||||
|
||||
Reference in New Issue
Block a user