我想修改现有的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();
}
}
...
}
答案 0 :(得分:2)
您可以使用EModelService
findElement
或findElements
方法搜索模型元素。
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
。