使用CellList禁用选择

时间:2012-05-14 20:57:16

标签: java gwt celllist

我有CellList

friendCellList = new CellList<PlayerDataEntity>(new PlayerCell());
friendCellList.setSelectionModel(new NoSelectionModel<PlayerDataEntity>());

我希望传递NoSelectionModel会阻止用户界面对用户选择单元格列表中的项目作出反应。但是,用户可以正常选择元素。我没有正确应用选择模型吗?

1 个答案:

答案 0 :(得分:3)

来自NoSelectionModel的Javadoc:

  

选择模型,不允许选择,但会激活选择更改    事件。如果您想知道用户何时选择项目,请使用此模型    不希望视图根据选择进行更新。

它的作用是:在标准主题中,这将导致行不再以蓝色突出显示(“cellListSelectedItem”样式类)。但是,它仍将以黄色突出显示(“cellListKeyboardSelectedItem”样式类)。此外,SelectionChangeEvent仍将被触发。

要关闭SelectionChangeEvent,请使用

cellList.setSelectionModel(new NoSelectionModel<String>(), 
  DefaultSelectionEventManager.<PlayerDataEntity>createWhitelistManager());

没有参数的白名单管理器意味着您无法选择任何列。

如果您还想关闭“黄色”突出显示,则应使用不同的CellList.Resources实例实例化CellList:

public interface MyResources extends CellList.Resources {
  @Override
  @Source("com/mypackage/my.css")
    Style cellListStyle();
}
...
friendCellList = new CellList<PlayerDataEntity>(new PlayerCell(),
    (MyResources) GWT.create(MyResources.class);

my.css:

.cellListEvenItem {}
.cellListKeyboardSelectedItem {}
.cellListOddItem {}
.cellListSelectedItem {}
.cellListWidget {}