2017-12-27 344 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',但它也可能在其他時間被觸發。 –