我正在使用eclipse e4应用程序。我正在使用eventBroker将值从一个部分传递到另一部分。如果打开了许多零件(选项卡种类),如何将值传递给当前选定的零件(选项卡)。 ?我正在使用@UIEventTopic获取该部件的值。但是问题是,值被复制到所有选项卡。换句话说,我试图在不同的选项卡中显示不同的JFreechart,但是图表已复制到先前的选项卡。
谁能建议我一些想法?
提前致谢
最佳答案
事件代理总是广播到处理该事件的任何事物,您不能使用它来发送特定事件。
如果您在Handler中,则可以在@Execute方法中获取当前部分,并直接在您的类中设置一个值-类似于:
@Execute
public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart)
{
Object part = activePart.getObject();
if (part instanceof MyClass)
{
((MyClass)part).setValue(xxxx);
}
}
更新:
如果您位于另一个零件中,请使用
EPartService
获取活动零件:@Inject
EPartService partService;
...
MPart activePart = partService.getActivePart();
Object part = activePart.getObject();
if (part instanceof MyClass)
{
((MyClass)part).setValue(xxxx);
}
您也可以使用
EPartService.findPart("part id")
查找具有给定ID的零件。