Eclipse e4 RCP部分激活事件多次发送

时间:2015-12-20 11:15:56

标签: eclipse events rcp e4

在我的Eclipse e4 RCP应用程序中,我使用注释来激活部件时通知,使用此处提出的方法: http://www.vogella.com/tutorials/Eclipse4ModelEvents/article.html

@Inject
@Optional
public void      subscribeTopicPartActivation(@UIEventTopic(UIEvents.UILifeCycle.ACTIVATE)  Event event) {

  Object element = event.getProperty(EventTags.ELEMENT);
  if (!(element instanceof MPart)) {
    return;
  }

  MPart part = (MPart) element;

  System.out.println("Part activated: " + part.getLabel());
} 

它工作正常,但我注意到,在我们期望单个激活事件的情况下(例如,简单地切换到部件......),同一部件会激活多次激活事件。发送的事件消息似乎完全相同(相同的目标,相同的主题)。我错过了什么吗?这是事件框架的正常行为吗?

1 个答案:

答案 0 :(得分:0)

是的,这看起来很正常。标签中有不同之处'两个事件之间的部分的价值。在第二个活动中,活跃的'已添加到标签中。

这将显示差异:

 System.out.println("part " + part.getElementId() + " tags " +
            part.getTags().stream().collect(Collectors.joining(", ")));

您还可以使用EPartService addPartListener方法收听零件更改。