我正在开发一个Eclipse RCP4项目。我有不同的视角,显示了一组可供选择的信息。选择我想要看的内容后,会打开一个新的零件并显示我想要编辑/查看属性的对象。 我可以打开相同类型的许多部分。如果我关闭应用程序,日食框架将保留所有打开的零件的位置。如果我重新启动应用程序,所有先前打开的部件都打开但没有信息。
- 如何防止Eclipseframwork持久化部件的状态?
- 如何在退出时关闭零件?
我正在寻找一种方法来向零件添加“removeOnExit”标签,然后在退出时关闭这样一个标记的零件。
提前致谢:)
答案 0 :(得分:2)
使用此功能,您可以使用特定标签关闭MParts。
似乎你必须切换到部件透视图,否则它不会从上下文中删除,这将导致nullpointer异常。
@Inject
@Optional
public void doEvent(@EventTopic(EventConstants.EventTopics.CLOSE_PARTS_WITH_TAGS) String tagToClose, MApplication app,
EModelService eModelService, EPartService ePartService) {
MUIElement activePart = ePartService.getActivePart();
EPartService activePeServcie = null;
MPerspective activePerspective = null;
if (activePart instanceof MPart) {
activePeServcie = ((MPart) activePart).getContext().get(EPartService.class);
activePerspective = eModelService.getPerspectiveFor(activePart);
}
List<String> tags = new ArrayList<String>();
tags.add(tagToClose);
List<MPart> elementsWithTags = eModelService.findElements(app, null, MPart.class, tags);
for (MPart part : elementsWithTags) {
try {
logger.info("Closing part " + part.toString());
EPartService peService = part.getContext().get(EPartService.class);
peService.switchPerspective(eModelService.getPerspectiveFor(part));
peService.hidePart(part);
} catch (Exception e) {
logger.error(e);
}
}
if (activePart instanceof MPart && activePeServcie != null && activePerspective != null) {
activePeServcie.switchPerspective(activePerspective);
}
}
答案 1 :(得分:0)
我们也尝试从Eclipse 3迁移到Eclipse 4.我们使用了comp层,并且在迁移时遇到了很多问题。我对eclipse工作台的持久存储有类似的问题。因此,零件和视图与重启前的位置相同。
Eclipse 4中的持久性范例已经改变。请看一下here:
据我所知,configurer.setSaveAndRestore(false)
的调用在Eclipse 4中无法正常工作。