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

e4 - removing elements from the application model

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

这时候我准备用MApplicationclass,看看每一个children和children的children,如果有很多匹配一个UI-元素 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();
                }
            }
            ...
    }

您可以使用 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