我想知道在消息来自EventBroker时向最终用户显示消息(即错误,警告,信息)的简洁方法。 目前我正在使用隐藏部分,它以这种方式处理enventBroker消息:
/**
* Handle the {@link EventTopics#ERROR_OCCURED} topic. Displays a simple
* error dialog.
*
* @param userDialogDescriptor
* @param shell
*/
@Inject
@Optional
private void notifyUserForError(
@UIEventTopic(EventTopics.ERROR_OCCURED) UserDialogDescriptor userDialogDescriptor,
@Named(IServiceConstants.ACTIVE_SHELL) Shell shell) {
IStatus status = new Status(IStatus.ERROR, Activator.ID,
userDialogDescriptor.getReason());
ErrorDialog.openError(shell, "Error",
userDialogDescriptor.getConsequence(), status);
}
是否有可能以更干净的方式触发消息显示(和Shell抓取),而不使用“假”和隐藏部分?
我尝试使用@UIEventTopic注释编写一个更简单的处理程序,但没有成功。
答案 0 :(得分:2)
您可以使用StatusReporter
(org.eclipse.e4.core.services.statusreporter.StatusReporter
)在任何地方报告错误,而无需发送消息:
@Inject
StatusReporter reporter;
...
reporter.show(IStatus.ERROR, "message", any associated exception);
您还可以使用状态记录器记录并显示错误:
IStatus status = new Status(....);
reporter.report(status, StatusReporter.LOG | StatusReporter.SHOW);