每个插件都可以定义自己的内容(通过PartDescriptor
),这些内容应该添加到我的应用程序中的特定位置(到PartStashContainer
)。
在Part
中可以看到插件中只有一个PartStashContainer
。
我找不到如何实现这一目标的首选方法。我应该以某种方式用插件中的新Part
替换当前可见的Part
吗?或者只是以某种方式设置已经可见Part
的内容(可能是通过setContributionUri
?)。
我看了EPartService
。它看起来可以根据Part
实例化PartDescriptor
,但它只有一些方法可以使新的Part
可见。我需要将新的Part
添加到现有的PartStashContainer
中,并可能删除旧的Part
。
答案 0 :(得分:2)
您可以使用EPartService
和EModelService
。
如果您只有一个具有特定ID的零件实例,您可以将应用程序模型中的“零件”用作“PartStack”的子项,并将其标记为“未呈现”。如果要创建具有相同ID的多个部件,可以使用“PartDescriptor”。
如果您的应用程序模型中的“部件”标记为“未呈现”,则可以这样显示:
partService.showPart("part id", PartState.ACTIVATE);
如果您想从'PartDescriptor'创建零件并将其放置在零件堆栈中,请使用:
@Inject
MApplication app;
MPart part = partService.createPart("part descriptor id");
MPartStack stack = modelService.find("part stack id", app);
stack.getChildren().add(part);
partService.showPart(part, PartState.ACTIVATE);
隐藏零件使用:
MPart part = partService.findPart("part id");
partService.hidePart(part);