我有这个实用工具方法,可以轻松更改我的应用程序的特定位置显示的内容。
问题是它看起来更像是新零件位于旧零件之上(旧零件未被移除,并且在新零件下仍然可见)。
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);
}
}
答案 0 :(得分:1)
您应该使用:
partService.hidePart(oldPart);
隐藏旧部分(也将其从子项中删除)。
您也可以这样做:
oldPart.setToBeRendered(false);
但我不确定是否足以更新Eclipse内部状态。