0

我正在开发一个 Eclipse RCP4 项目。我有不同的视角来展示一组可供选择信息的部件。选择我想要查看的内容后,会打开一个新部件并显示我想要编辑/查看属性的对象。我可以打开许多相同类型的零件。如果我关闭应用程序,eclipse 框架会保留所有打开部件的位置。如果我重新启动应用程序,所有以前打开的部件都是打开的,但没有信息。

-如何防止 Eclipseframwork 持久化 Parts 的状态?

- 如何在退出时关闭零件?

我正在寻找一种将“removeOnExit”标签添加到零件的方法,而不是在退出时关闭此类标记的零件。

提前致谢 :)

4

2 回答 2

2

有了这个,您可以关闭具有特定标签的 MPart。

看来您必须切换到该部分所在的透视图,否则它不会从上下文中删除,这将导致空指针异常。

@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);
    }

}
于 2013-06-14T09:44:08.297 回答
0

我们也尝试从 Eclipse 3 迁移到 Eclipse 4。我们使用了 comp 层并且在迁移时遇到了很多问题。我在 Eclipse 工作台的持久存储方面遇到了类似的问题。因此零件和视图的位置与重新启动前相同。

Eclipse 4 中的持久性范例已经改变。请看这里

据我记得调用configurer.setSaveAndRestore(false)在 Eclipse 4 中不能正常工作。

于 2014-06-25T12:34:28.347 回答