提交 911fb9e7 编写于 作者: B Benjamin Pasero

notifications - allow to update severity too

上级 f1ea69be
......@@ -35,6 +35,7 @@ export interface INotificationProgress {
export interface INotificationHandle extends IDisposable {
readonly progress: INotificationProgress;
updateSeverity(severity: Severity): void;
updateMessage(message: string | IMarkdownString | Error): void;
updateActions(actions?: INotificationActions): void;
}
......@@ -53,8 +54,10 @@ export interface INotificationService {
export class NoOpNotification implements INotificationHandle {
readonly progress = new NoOpProgress();
updateSeverity(severity: Severity): void { }
updateMessage(message: string | IMarkdownString | Error): void { }
updateActions(actions?: INotificationActions): void { }
dispose(): void { }
}
......
......@@ -227,15 +227,15 @@ export function registerNotificationCommands(center: INotificationsCenterControl
handle.updateMessage('Installing: error-ex...');
handle.progress.worked(100);
setTimeout(() => {
handle.updateMessage('Installation complete');
handle.updateMessage('Installation completed');
handle.progress.done();
handle.updateActions();
}, 3000);
}, 3000);
}, 3000);
}, 3000);
}, 3000);
}, 1000);
}, 2000);
}, 2000);
}, 2000);
}, 2000);
}, 2000);
}, 2000);
});
CommandsRegistry.registerCommand('notifications.showWarning', accessor => {
......
......@@ -291,11 +291,8 @@ export class NotificationTemplateRenderer {
// Container
toggleClass(this.template.container, 'expanded', notification.expanded);
// Icon
NotificationTemplateRenderer.SEVERITIES.forEach(severity => {
const domAction = notification.severity === this.toSeverity(severity) ? addClass : removeClass;
domAction(this.template.icon, `icon-${severity}`);
});
// Severity Icon
this.renderSeverity(notification);
// Message
const messageOverflows = this.renderMessage(notification);
......@@ -315,6 +312,9 @@ export class NotificationTemplateRenderer {
// Label Change Events
this.inputDisposeables.push(notification.onDidLabelChange(event => {
switch (event.kind) {
case NotificationViewItemLabelKind.SEVERITY:
this.renderSeverity(notification);
break;
case NotificationViewItemLabelKind.PROGRESS:
this.renderProgress(notification);
break;
......@@ -322,6 +322,13 @@ export class NotificationTemplateRenderer {
}));
}
private renderSeverity(notification: INotificationViewItem): void {
NotificationTemplateRenderer.SEVERITIES.forEach(severity => {
const domAction = notification.severity === this.toSeverity(severity) ? addClass : removeClass;
domAction(this.template.icon, `icon-${severity}`);
});
}
private renderMessage(notification: INotificationViewItem): boolean {
clearNode(this.template.message);
this.template.message.appendChild(NotificationMessageMarkdownRenderer.render(notification.message, (content: string) => this.openerService.open(URI.parse(content)).then(void 0, onUnexpectedError)));
......
......@@ -85,6 +85,7 @@ export class NotificationsModel implements INotificationsModel {
worked: value => item.progress.worked(value),
done: () => item.progress.done()
},
updateSeverity: (severity: Severity) => item.updateSeverity(severity),
updateMessage: (message: string | IMarkdownString | Error) => item.updateMessage(message),
updateActions: (actions: INotificationActions) => item.updateActions(actions)
};
......@@ -173,6 +174,7 @@ export interface INotificationViewItem {
hasProgress(): boolean;
updateSeverity(severity: Severity): void;
updateMessage(message: string | IMarkdownString | Error): void;
updateActions(actions?: INotificationActions): void;
......@@ -186,6 +188,7 @@ export function isNotificationViewItem(obj: any): obj is INotificationViewItem {
}
export enum NotificationViewItemLabelKind {
SEVERITY,
MESSAGE,
ACTIONS,
PROGRESS
......@@ -426,6 +429,11 @@ export class NotificationViewItem implements INotificationViewItem {
return this._actions;
}
public updateSeverity(severity: Severity): void {
this._severity = severity;
this._onDidLabelChange.fire({ kind: NotificationViewItemLabelKind.SEVERITY });
}
public updateMessage(input: string | IMarkdownString | Error): void {
const message = NotificationViewItem.toMarkdownString(input);
if (!message) {
......
......@@ -346,6 +346,8 @@ export class WorkbenchShell {
const instantiationService: IInstantiationService = new InstantiationService(serviceCollection, true);
serviceCollection.set(INotificationService, new SyncDescriptor(NotificationService, container));
this.broadcastService = instantiationService.createInstance(BroadcastService, this.configuration.windowId);
serviceCollection.set(IBroadcastService, this.broadcastService);
......@@ -403,8 +405,6 @@ export class WorkbenchShell {
serviceCollection.set(IMessageService, this.messageService);
serviceCollection.set(IChoiceService, this.messageService);
serviceCollection.set(INotificationService, new SyncDescriptor(NotificationService, container));
const lifecycleService = instantiationService.createInstance(LifecycleService);
this.toUnbind.push(lifecycleService.onShutdown(reason => this.dispose(reason)));
serviceCollection.set(ILifecycleService, lifecycleService);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册