Отключение выделения с помощью CellList
У меня есть CellList
:
friendCellList = new CellList<PlayerDataEntity>(new PlayerCell());
friendCellList.setSelectionModel(new NoSelectionModel<PlayerDataEntity>());
Я надеюсь, что прохождение NoSelectionModel
предотвратит реакцию пользовательского интерфейса на выбор пользователем элементов в списке ячеек. Тем не менее, пользователь может выбрать элементы нормально. Я неправильно применяю модель выбора?
1 ответ
Из Javadoc NoSelectionModel:
Модель выбора, которая не допускает выбор, но запускает события изменения выбора. Используйте эту модель, если вы хотите знать, когда пользователь выбирает элемент, но не хотите, чтобы представление обновлялось в зависимости от выбора.
Вот что он делает: в теме "Стандарт" это приводит к тому, что строка больше не выделяется синим цветом (класс стиля "cellListSelectedItem"). Тем не менее, он все равно будет выделен желтым цветом (класс стиля "cellListKeyboardSelectedItem"). Кроме того, SelectionChangeEvent все еще будет запущен.
Чтобы отключить SelectionChangeEvent, используйте
cellList.setSelectionModel(new NoSelectionModel<String>(),
DefaultSelectionEventManager.<PlayerDataEntity>createWhitelistManager());
Менеджер белого списка без аргументов означает, что вы не можете выбрать ни один столбец.
Если вы также хотите отключить "желтое" выделение, вам следует создать экземпляр CellList с другим экземпляром CellList.Resources:
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 {}