在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
但没有任何反应......
答案 0 :(得分:0)
创建插件后,主应用程序窗口已经创建,因此您可以使用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
事件 - 也可以在其他时间触发它。