e4 - 从应用程序模型中删除元素

时间:2015-01-20 08:03:52

标签: eclipse-rcp e4

我想修改现有的e4 Application Model。在我的修改中,我想删除应用程序模型中的一些元素。例如。零件,菜单等。我有独特的UI-Element-Id。如何使用此信息最好地从应用程序模型中删除一些元素。

此时,我将使用MApplication类,并查看孩子的每个孩子和孩子,如果有许多匹配UI-Element-Id。但我觉得这种做法很讨厌。

    public void modifyApplikationModel(String uiElementId) {
            if (uiElementId == null || uiElementId.trim().equals("")) {
                return;
            }       
            //application is injected
            List<MAddon> addons = application.getAddons();
            Iterator<MAddon> addonIterator = addons.iterator();
            while (addonIterator.hasNext()) {
                MAddon addon = addonIterator.next();
                if (uiElementId.equals(addon.getElementId())) {
                    addonIterator.remove();
                }
            }
            ...
    }

1 个答案:

答案 0 :(得分:2)

您可以使用EModelService findElementfindElements方法搜索模型元素。

findElement找到具有给定ID的单个元素:

MUIElement element = modelService.findElement("id", application);

有几种findElements,最简单的是:

List<MPart> parts = modelService.findElements(application, "id", MPart.class, Collections.emptyList());

这两种情况application都可以是MApplication或您要开始搜索的任何其他元素。

找到元素后,您可以将其从父母中删除:

MElementContainer<MUIElement> parent = element.getParent();

parent.getChildren().remove(element);

您可能还需要致电element.setToBeRendered(false)

MPart注意您可以使用EPartService.hidePart