Клавиатурная навигация в GWT CellTable - PullRequest
9 голосов
/ 20 января 2011

Мы пытаемся создать редактируемую сетку, используя CellTable.Вариант использования - это достаточно большой объем ввода данных для бухгалтеров, которые привыкли вводить 10 таблиц в электронные таблицы.Мы пытаемся максимально точно воспроизвести навигацию клавиатуры в виде таблицы.

  1. Есть ли способ избежать нажатия клавиши Enter, чтобы войти в режим редактирования для TextInputCell?Я попытался переопределить TextInputCell.onBrowserEvent() для вызова onEnterKeyDown() при получении события фокуса, но это не сработало.

  2. Есть ли способ использовать Tab и Shift - Вкладка для перемещения между столбцами вместо стрелок влево и вправо?CellTable, кажется, жестко запрограммирован на использование стрелок влево и вправо и трудно расширяется.

1 Ответ

6 голосов
/ 26 января 2011

После долгих усилий мы решили, что CellTable недостаточно расширяем, чтобы делать то, что нам нужно. В итоге мы расширили класс GWT Grid, взяв за основу дизайн CellTable, чтобы он работал достаточно хорошо для наших нужд.

В нашем случае использования 80% просмотров страниц будут отображать менее 10 строк, и у нас никогда не будет более 600 строк на 10 столбцов (<0,5% случаев имеют более 500 строк). Вместо полноценных шаблонов веса, мы использовали ленивый шаблон загрузки. Когда сетка изначально заполнена, виджеты только для отображения используются для отображения данных из базовых объектов значений. FocusHandler прикреплен к каждому виджету только для отображения. Когда пользователь щелкает или вкладывает вкладку в отображаемый виджет, FocusHander заменяет только отображаемые виджеты для этой строки на редактируемые виджеты. </p>

Виджеты только для отображения ограничены легкими виджетами, такими как TextBox и CheckBox, поэтому время рендеринга приемлемо. 100 строк x 5 столбцов отображаются менее чем за 2 секунды. SuggestBoxes, DateBoxes и другие композиты ограничены использованием только в качестве редактируемых виджетов.

Преимущества

  1. Гибкость использования любого из стандартные виджеты
  2. Расширяемость - мы не ограничены выбор реализации сделан в CellTable
  3. Простота разработки - прототип в менее 3 дней разработки
  4. Работает достаточно хорошо, чтобы соответствовать необходимо
  5. Вкладки работают из коробки, как и следовало ожидать

Недостатки

  • Не так масштабируемо, как CellTable. это реализация не собирается оказывать тысячи строк
  • Мы должны поддерживать это сами Class Model
...