Render messages

This commit is contained in:
Alex Dima
2017-11-28 17:53:18 +01:00
parent 9b566417b2
commit e0f7df5cfa
6 changed files with 48 additions and 2 deletions

View File

@@ -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);
}
}

View File

@@ -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) {

View File

@@ -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 {

View File

@@ -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> {

View File

@@ -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 = '';
}
},

View File

@@ -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 {