在eclipse e4中单击最后一个部分(Tab)时动态创建零件

时间:2014-03-26 12:27:52

标签: java eclipse e4

我在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);

任何人都可以向我推荐一些想法吗?

提前致谢

2 个答案:

答案 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选项。