我在partstack中创建了2个部分。所有部分使用相同的贡献uri。我需要第三部分说"添加新部分" (或制表符)单击时,它必须动态创建一个新零件并在前两个零件之后进行排列,然后再重新组合零件"添加新零件"必须到最后。所以每当"添加New Part"点击它必须创建新的部分。 为"添加新部件"添加以下代码;一部分。
MPart part = partService.createPart("com.abc.xyz.project.partDescriptor.DynamicPart");
MPartStack stack = (MPartStack)modelService.find("com.abc.xyz.project.partstack.2", application);
stack.getChildren().add(part);
part.setLabel("New Dynamic Part");
part.setVisible(true);
part.setCloseable(true);
partService.showPart(part, PartState.ACTIVATE);
任何人都可以向我推荐一些想法吗?
提前致谢
答案 0 :(得分:2)
动态创建“添加新零件”,如示例所示(示例适用于输入部分):
MPartStack stack = (MPartStack) modelService.find("your.part.stack.id", application);
inputPart = MBasicFactory.INSTANCE.createInputPart();
inputPart.setContributionURI("bundleclass://your.plugin/your.class");
inputPart.setCloseable(isCloseable);
stack.getChildren().add(inputPart);
inputPart.setLabel("Add new part");
“bundleclass://your.plugin/your.class”是您班级内容的引用。它就像片段编辑器中的“类URI”字段。上面的代码为零件堆栈添加了一个新选项卡,但不激活零件,因此不会调用内容类中的@Postconstruct方法。当用户单击选项卡时,将调用@Postconstruct方法。在那里你可以再创造一个新的部分。
答案 1 :(得分:0)
在应用程序模型中创建描述要添加的部分的部件描述符。
使用EPartService
创建零件:
MPart part = partService.createPart(part descriptor id);
将创建的部件添加到应用程序模型上定义的MPartStack
,您可以使用EModelService
MPartStack stack = (MPartStack)modelService.find(stack id, application);
stack.getChildren().add(part);
如果要从说明中创建多个部分,请务必检查部件描述定义中的Multiple
选项。