Я использую ЗК 6.5.1.
Иногда дерево может содержать некоторую логику, например делать что-то, когда пользователь выбирает/отменяет выбор элемента, это можно легко сделать, прослушивая подобное событие.
@Listen("onSelect = #tree")
public void onSelect(SelectEvent<Treeitem, String> event) {
Treeitem ref = event.getReference();
if (ref.isSelected()) {
// do things when item is selected
} else {
// do things when item is deselected
}
}
С другой стороны, ZK предоставляет функции, которые пользователь может использовать с помощью вверх, вниз, Page Up, Page Down, Главная, Конец на дереве в "Переместить выделение". Это действие также отправит событие выбора для нового выбранного элемента, но не отправит события для невыбранных элементов. Поэтому предыдущие фрагменты кода не работают, когда пользователь использует эти клавиши.
Мои вопросы:
- Как мне сделать, чтобы я мог точно знать, какие элементы отменяются, когда пользователь «Перемещает выделение»?
- Если нет, могу ли я отключить эти клавиши?
Вот пример SSCCE, если кто-то хочет знать. Или в ZKFiddle
Композитор:
public class TestComposer extends SelectorComposer<Div> {
@Listen("onSelect = #tree")
public void onSelect(SelectEvent<Treeitem, String> event) {
Treeitem ref = event.getReference();
if (ref.isSelected()) {
Clients.log("Selected " + ref.getLabel());
} else {
Clients.log("Deselected " + ref.getLabel());
}
}
}
ЗУЛ:
<div apply="mytest.TestComposer">
<tree id="tree" multiple="true" checkmark="true">
<treechildren>
<treeitem label="A" />
<treeitem label="B" />
<treeitem label="C" />
</treechildren>
</tree>
</div>