0
我使用PartDescriptors創建相同MPart
的多個實例。 如何識別每個部分?我eclipse rcp 3.x很容易找到一個ViewPart
其主要和Seconday id。我如何在e4 rcp編程模型中實現這一點?eclipse e4 - 如何識別eclipse e4視圖(零件)?
我使用PartDescriptors創建相同MPart
的多個實例。 如何識別每個部分?我eclipse rcp 3.x很容易找到一個ViewPart
其主要和Seconday id。我如何在e4 rcp編程模型中實現這一點?eclipse e4 - 如何識別eclipse e4視圖(零件)?
所有的描述符創建的部件將具有相同的ID,因此它是由你來添加一些額外的識別信息。要做到這一點
一種方法是你自己獨特的數據,當您創建零件到零件的瞬態數據:
Object uniqueId = .....
part.getTransientData().put("part id key", uniqueId);
與和讀取ID:
part.getTransientData().get("part id key");
要找到可以使用的EModelService
的findElements
方法之一的部分。帶有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
。
確定我將永遠有通過所有部件遍歷'partService.getParts(GOT)'然後找我的一部分。是對的嗎 ? – ssdimmanuel
可以使用的''EModelService'方法findElements'一個做搜索 - 看到更新的答案。 –
請記住,當工作臺模型持久化(-clearPersistedData PARAM未設置),瞬態數據被丟棄。現在,如果工作臺模型在下次啓動時恢復,則這些部件將不具有該「輔助ID」。 –