e4 - 从应用程序模型中删除元素
e4 - removing elements from the application model
我想修改现有的 e4 Application Model
。在我的修改中,我想删除应用程序模型中的一些元素。例如。部件、菜单等。我有唯一的 UI-Element-Id。我怎样才能最好地使用此信息从应用程序模型中删除一些元素。
这时候我准备用MApplication
class,看看每一个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
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
。
我想修改现有的 e4 Application Model
。在我的修改中,我想删除应用程序模型中的一些元素。例如。部件、菜单等。我有唯一的 UI-Element-Id。我怎样才能最好地使用此信息从应用程序模型中删除一些元素。
这时候我准备用MApplication
class,看看每一个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
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
。