Eclipse 4 RCP - 如何从应用程序模型中删除Part?

时间:2014-10-27 21:24:17

标签: eclipse eclipse-rcp e4

我有这个实用工具方法,可以轻松更改我的应用程序的特定位置显示的内容。

问题是它看起来更像是新零件位于旧零件之上(旧零件未被移除,并且在新零件下仍然可见)。

package cz.vutbr.fit.xhriba01.bc.ui;

import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;

public class UI {

    public static final String PART_INSPECTOR_ID = "bc.part.inspector";

    public static void changeInspectorView(String partDescriptorId, EPartService partService, EModelService modelService) {

        MPart part = partService.createPart(partDescriptorId);
        MPart oldPart = partService.findPart(UI.PART_INSPECTOR_ID);
        MPartSashContainer parent = (MPartSashContainer) modelService.getContainer(oldPart);
        parent.getChildren().remove(oldPart);
        part.setElementId(UI.PART_INSPECTOR_ID);
        parent.getChildren().add(0, part);

    }
}

1 个答案:

答案 0 :(得分:1)

您应该使用:

partService.hidePart(oldPart);

隐藏旧部分(也将其从子项中删除)。

您也可以这样做:

oldPart.setToBeRendered(false);

但我不确定是否足以更新Eclipse内部状态。