代码之家  ›  专栏  ›  技术社区  ›  ssdimmanuel

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

  •  0
  • ssdimmanuel  · 技术社区  · 6 年前

    我正在使用PartDescriptor创建同一个的多个实例 MPart . ViewPart

    1 回复  |  直到 6 年前
        1
  •  1
  •   greg-449    6 年前

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

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

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

    并通过以下方式读取id:

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

    要找到零件,可以使用 findElements EModelService . 带有 Selector

    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