如何获取有关在e4中打开或创建的窗口的通知

时间:2017-12-27 14:13:10

标签: eclipse e4

在AddOn中,我们可以通过以下方法获得有关应用程序启动的通知:

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

我们可以获得有关应用程序窗口打开的通知吗?我试着听UIEvents.TrimmedWindow.TOPIC_ALLUIEvents.Window.TOPIC_ALL但没有任何反应......

1 个答案:

答案 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事件 - 也可以在其他时间触发它。