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

问题描述 投票:0回答:1

在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但没有任何反应......

eclipse e4
1个回答
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事件被触发以创建设置了上下文的所有对象 - 也可以在其他时间触发它。

© www.soinside.com 2019 - 2024. All rights reserved.