EclipseRCP-更改部件的首选方式是什么?

EclipseRCP-更改部件的首选方式是什么?,eclipse,eclipse-rcp,e4,Eclipse,Eclipse Rcp,E4,每个插件都可以定义自己的内容(通过PartDescriptor),这些内容应该添加到我的应用程序中的特定位置(到PartStashContainer)。 在该PartStashContainer中可见的插件中可能总是只有一个Part 我找不到实现这一目标的首选方法。我是否应该用插件中新的部分替换当前可见的部分?或者只是以某种方式设置已经可见的部分的内容(可能通过setContributionUri?) 我查看了EPartService。看起来它可以根据PartDescriptor实例化Part,

每个插件都可以定义自己的内容(通过
PartDescriptor
),这些内容应该添加到我的应用程序中的特定位置(到
PartStashContainer
)。 在该
PartStashContainer
中可见的插件中可能总是只有一个
Part

我找不到实现这一目标的首选方法。我是否应该用插件中新的
部分
替换当前可见的
部分
?或者只是以某种方式设置已经可见的
部分的内容(可能通过
setContributionUri
?)


我查看了
EPartService
。看起来它可以根据
PartDescriptor
实例化
Part
,但它只有一些方法可以使新的
Part
可见。我需要将新的
零件
添加到现有的
PartStashContainer
中,并可能删除旧的
零件

您可以为此使用
EPartService
EModelService

如果您只打算拥有一个具有特定id的零件实例,则可以将应用程序模型中的“零件”用作“零件堆栈”的子对象,并将其标记为“未渲染”。如果要创建具有相同id的多个零件,可以使用“零件描述符”

如果应用程序模型中有一个“部件”标记为“未渲染”,则可以如下所示显示:

partService.showPart(“part id”,PartState.ACTIVATE);
如果要从“PartDescriptor”创建零件并将其放置在零件堆栈中,请使用:

@Inject
地图应用程序;
MPart part=partService.createPart(“部件描述符id”);
MPartStack stack=modelService.find(“部件堆栈id”,app);
stack.getChildren().add(部分);
partService.showPart(part,PartState.ACTIVATE);
要隐藏零件,请使用:

MPart part=partService.findPart(“part id”);
partService.hidePart(part);

但是eclipse怎么知道我想在哪里显示该部分呢?(在零件箱中)。看起来您没有将有关它的任何信息传递给showPart call。抱歉,添加了PartDescriptor示例正是我想知道的!但是上面示例中的
PartService.ACTIVATE
需要更改为
PartState.ACTIVATE