将数据设置为在 Eclipse 中以编程方式打开的视图

Set data to programmatically opened View in Eclipse

我的基于 Eclipse e4 的小项目有点卡住了。

有一些处理程序对菜单项作出反应,它应该遍历数据对象列表并为数据对象列表中的每个条目打开一个 ViewPart。每个部分应显示其中一个数据对象的详细信息。 该行为类似于 eclipse IDE 的方式,即单击 package-explorer 中的文件会打开一个显示确切文件内容的编辑器视图。当然,我不是在代码编辑器中显示文件,而是显示所选数据对象的概览表示。

该列表目前没有 UI 作为 List 或 ListViewer 的表示形式,所以我觉得这可能不是 SelectionService 可以提供帮助的情况,除非我出错了。

我在这里找到了一些较旧的解决方案,其中人们建议使用一些 setter 方法扩展视图,然后转换为该类型并调用这些方法。但据我所知,使用新的 e4 框架,创建一个部件只会 return 一个 MPart,然后在稍后的时间点委托我的自定义代码来填充 ui,所以没有什么可以扩展的。

基本上我想做一些类似于此代码示例的事情,其中​​注释行是我坚持使用的行。摘自 example from Lars Vogel :

MPart part = MBasicFactory.INSTANCE.createPart();
part.setLabel(crawl.getDomain());
part.setContributionURI("bundleclass://[...].parts.OverviewView");
part.setCloseable(true);
List<MPartStack> stacks = modelService.findElements(application, "[..].partstack.overview", MPartStack.class, null);
stacks.get(0).getChildren().add(part);
partService.showPart(part, PartState.ACTIVATE);

// missing call here!
// do some call to tell part, which details to show.

您可以使用以下方式获取 class(在本例中为 OverviewView):

OverviewView myView = (OverviewView)part.getObject();

然后您可以调用您在 OverviewView 中定义的方法。