在AddOn中,我们可以通过以下方法获得有关应用程序启动的通知:
@Optional
@Inject
public void appStartupComplete(@UIEventTopic(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE)
org.osgi.service.event.Event event)
我们可以获得有关应用程序窗口打开的通知吗?我试着听UIEvents.TrimmedWindow.TOPIC_ALL
和UIEvents.Window.TOPIC_ALL
但没有任何反应......
创建插件后,主应用程序窗口已经创建,因此您可以使用EModelService
找到它。
UIEvents.UIElement.TOPIC_TOBERENDERED
事件将通过调用MUIElement.setToBeRendered
(使其可见或隐藏)呈现所有UI对象:
@Inject
@Optional
void event(@UIEventTopic(UIEvents.UIElement.TOPIC_TOBERENDERED) Event event)
{
if (event == null)
return;
// The UI element
Object element = event.getProperty(UIEvents.EventTags.ELEMENT);
// Rendered or hidden value
Boolean toBeRendered = (Boolean)event.getProperty(UIEvents.EventTags.NEW_VALUE);
但是,对于不调用setToBeRendered
的动态生成的对象,不会生成此事件
UIEvents.Context.TOPIC_CONTEXT
事件被触发以创建设置了上下文的所有对象 - 也可以在其他时间触发它。