首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >父节点的GWT CellTree选择

父节点的GWT CellTree选择
EN

Stack Overflow用户
提问于 2011-09-27 00:35:02
回答 1查看 2.9K关注 0票数 0

我正在尝试使用GWT CellTree来显示异构的分层数据模型。我需要能够进行单一选择,但能够选择父节点以及子节点。例如,如果查看GWT自己的example,就会发现它们只为leave节点提供了一个选择模型。

我试图通过为所有节点提供一个选择模型来扩展他们的示例。然而,这似乎是不可能的。所以我最终得到了3个SelectionModels,每个节点类型(Composer,PlayList,Song)一个。

我遗漏了什么?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-27 18:47:45

getNodeInfoTreeViewModel函数中,您必须将selectionModel传递给每个级别的每个新have实例。

代码语言:javascript
复制
return new DefaultNodeInfo<MyDTO>(dataProvider,new MyDTOCell(),selectionModel,null);

然后在SelectionChangeEventHandler中,你需要这样做:

代码语言:javascript
复制
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
    @Override
    public void onSelectionChange(SelectionChangeEvent event) {
        Object object = selectionModel.getSelectedObject();
        if (object instanceof MyRootDTO)
        {
              // DO SOMETHING with root level selected node
        }
        else if (object instanceof MySecondLevelDTO) {
        // DO SOMETHING WITH 2. level selected node
        }
        // additional levels
});

更新

为了绕过类型问题,您可以定义一个抽象基类,所有DTO都可以扩展这个抽象基类。

代码语言:javascript
复制
public abstract class BaseModel  {

    public static final ProvidesKey<BaseModel> KEY_PROVIDER = new ProvidesKey<BaseModel>() {
      public Object getKey(BaseModel item) {
        return item == null ? null : item.getId();
      }
    };

    public abstract Object getId();
}

在DTO中,您扩展了BaseModel并实现了抽象的getId()方法:

代码语言:javascript
复制
public class MyDTO extends BaseModel {
        @Override
        public Object getId() {
             //return unique ID (i.e. MyDTO_1)
        }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7558254

复制
相关文章

相似问题

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