2017-09-26 109 views

回答

1

所有的描述符创建的部件将具有相同的ID,因此它是由你来添加一些额外的识别信息。要做到这一点

一种方法是你自己独特的数据,当您创建零件到零件的瞬态数据:

Object uniqueId = ..... 

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

与和读取ID:

part.getTransientData().get("part id key"); 

要找到可以使用的EModelServicefindElements方法之一的部分。带有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

+0

确定我将永远有通过所有部件遍历'partService.getParts(GOT)'然后找我的一部分。是对的吗 ? – ssdimmanuel

+1

可以使用的''EModelService'方法findElements'一个做搜索 - 看到更新的答案。 –

+1

请记住,当工作台模型持久化(-clearPersistedData PARAM未设置),瞬态数据被丢弃。现在,如果工作台模型在下次启动时恢复,则这些部件将不具有该“辅助ID”。 –