2017-12-27 341 views
0

创建在附加元件通知,我们可以了解应用程序的通知通过以下方法启动结束:如何获取有关窗口中打开或在E4

@Optional 
    @Inject 
    public void appStartupComplete(@UIEventTopic(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE) 
          org.osgi.service.event.Event event) 

我们可以得到约aplication窗口通知被打开?我尝试听UIEvents.TrimmedWindow.TOPIC_ALLUIEvents.Window.TOPIC_ALL但没有任何反应...

回答

0

当创建插件时,主应用程序窗口已经创建,因此您可以使用EModelService找到该应用程序窗口。

UIEvents.UIElement.TOPIC_TOBERENDERED事件将告诉你所有的UI对象时,他们是通过调用MUIElement.setToBeRendered呈现(可见或隐藏):

@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事件被触发,用于创建设置了上下文的所有对象 - 在其他时间也可以触发它。

+0

感谢您的回答。但方法'无效事件(@ UIEventTopic(UIEvents.UIElement.TOPIC_TOBERENDERED)事件事件)'从不调用。 – Say

+0

我正是使用这个调用来跟踪零件关闭。它也会触发某些开放,但不是全部,这取决于它们是如何完成的。确保'Event'是'org.osgi.service.event.Event'使用任何其他'Event'类将停止它的工作。 –

+0

所有创作都会触发的事物是'UIEvents.Context.TOPIC_CONTEXT',但它也可能在其他时间被触发。 –