我使用PartDescriptors来创建同一个MPart的多个实例。我如何识别每个部分?我用ViewPart的主id和第二天id很容易找到一个RCP3.x。如何在e4 rcp编程模型中实现这一点?
发布于 2017-09-26 07:19:37
从描述符创建的所有部分都将具有相同的id,因此需要您添加一些额外的标识信息。
这样做的一种方法是在创建部件时将自己的唯一数据添加到部件的瞬态数据中:
Object uniqueId = .....
part.getTransientData().put("part id key", uniqueId);并用以下内容读取身份证:
part.getTransientData().get("part id key");要找到该部分,可以使用findElements的EModelService方法之一。带有Selector的版本允许您在id和数据上编写匹配代码。例如,如果所有内容都在一个部分堆栈中:
MPartStack partStack = .... get part stack
List<MPart> parts = modelService.findElements(partStack, MPart.class, EModelService.ANYWHERE, new FindPartSelector(id, data));其中FindPartSelector是您编写的选择器。这只有一个方法:
@Override
public boolean select(final MApplicationElement element)
{
// TODO match id and transient data
}请注意,当您退出RCP时,瞬态数据将丢失。如果这些部分在会话之间持久化,则可以使用getPersistedState而不是getTransientData。
https://stackoverflow.com/questions/46419898
复制相似问题