Я пытаюсь в GWT создать дерево с множественным выбором для узлов и столкнулся с проблемой, подобной этому вопросу Shift Key в GWT? .
Когда событие SelectionEvent вызывается из дерева, я хотел бы знать, нажата ли клавиша Shift или нет.
SelectionHandler<TreeItem> getSelectionHandler() {
return new SelectionHandler<TreeItem>(){
@Override
public void onSelection(SelectionEvent<TreeItem> event) {
// is shift key pressed ?
}
};
}
Решение в приведенном выше вопросе не может применяться в этом случае, так как класс SelectionHandler не наследуется от DOMEvent, а затем не имеет функции getNativeEvent ().
Я попробовал грязное решение, добавив keyDownEventHandler и keyUpEventHandler в дерево с логическим флагом, но обработчики вызываются только тогда, когда фокус находится на дереве, поэтому это не работает.
Есть ли простое решение (или просто решение, даже если оно не простое)? Благодаря.
Изменить ответ aem:
Решение может работать, заключая компоненты в FocusPanel с помощью keyUp / DownHandler, но тогда я не могу добавить какой-либо компонент, требующий ввода с клавиатуры, такой как TextArea, так как «глобальный» обработчик имеет приоритет ... Так что это не решает моя проблема.