有没有更好的方法在 E4 应用程序中获取 Workbench 上下文

Is there a better way to get to Workbench context in an E4 application

我正在使用 E4 应用程序,目前在一个部分中。我想在 Workbench 级别上下文中推送一个标志,而我可以到达它的唯一方法是

context.getParent().getParent().getParent().set("FLAG", false);

有没有更好的方法达到Workbench水平?

workbench 上下文可从应用程序对象访问:

@Inject
MApplication application;

...

IEclipseContext appContext = application.getContext();

使用 getParent() 调用很容易出错,因为对应用程序模型的任何更改都可能破坏代码。

@Inject
IEclipseContext eclipseContext;

当然,您必须在 E4ApplicationModel 中。如果没有,您可以注入这个(在 Processor/LifeCycleManager/other in E4ApplicationModel...):

MyClass myClass = new MyClass();
ContextInjectionFactory.inject(myClass,eclipseContext);