首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >eclipse e4 - eclipse e4视图(部件)是如何唯一标识的?

eclipse e4 - eclipse e4视图(部件)是如何唯一标识的?
EN

Stack Overflow用户
提问于 2017-09-26 07:10:08
回答 1查看 265关注 0票数 0

我使用PartDescriptors来创建同一个MPart的多个实例。我如何识别每个部分?我用ViewPart的主id和第二天id很容易找到一个RCP3.x。如何在e4 rcp编程模型中实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-26 07:19:37

从描述符创建的所有部分都将具有相同的id,因此需要您添加一些额外的标识信息。

这样做的一种方法是在创建部件时将自己的唯一数据添加到部件的瞬态数据中:

代码语言:javascript
复制
Object uniqueId = .....

part.getTransientData().put("part id key", uniqueId);

并用以下内容读取身份证:

代码语言:javascript
复制
part.getTransientData().get("part id key");

要找到该部分,可以使用findElementsEModelService方法之一。带有Selector的版本允许您在id和数据上编写匹配代码。例如,如果所有内容都在一个部分堆栈中:

代码语言:javascript
复制
MPartStack partStack = .... get part stack

List<MPart> parts = modelService.findElements(partStack, MPart.class, EModelService.ANYWHERE, new FindPartSelector(id, data));

其中FindPartSelector是您编写的选择器。这只有一个方法:

代码语言:javascript
复制
@Override
public boolean select(final MApplicationElement element)
{
  // TODO match id and transient data
}

请注意,当您退出RCP时,瞬态数据将丢失。如果这些部分在会话之间持久化,则可以使用getPersistedState而不是getTransientData

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46419898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档