2017-09-26 147 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」。 –