在我的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());
}
它工作正常,但我注意到,在我们期望单个激活事件的情况下(例如,简单地切换到部件......),同一部件会激活多次激活事件。发送的事件消息似乎完全相同(相同的目标,相同的主题)。我错过了什么吗?这是事件框架的正常行为吗?
答案 0 :(得分:0)
是的,这看起来很正常。标签中有不同之处'两个事件之间的部分的价值。在第二个活动中,活跃的'已添加到标签中。
这将显示差异:
System.out.println("part " + part.getElementId() + " tags " +
part.getTags().stream().collect(Collectors.joining(", ")));
您还可以使用EPartService
addPartListener
方法收听零件更改。