Виджеты в ячейках JFace TableViewer?

#eclipse #widget #jface #tableviewer

#eclipse #виджет #jface #средство просмотра таблиц

Вопрос:

Я разрабатываю приложение с использованием JFace в Eclipse 3.6, и я хотел бы иметь реальные виджеты — в основном флажки и кнопки — в средстве просмотра таблиц. Все, что я нашел, похоже, наводит на мысль, что на данный момент это невозможно.

Мой текущий обходной путь предполагает наличие MouseListener для элемента управления обернутой таблицей, где координаты события наведения курсора мыши преобразуются в ячейки с использованием метода getCell() и обрабатываются. Затем я использую контент-провайдера для предоставления изображений и форматированного текста, которые несколько приближены к внешнему виду соответствующих виджетов.

Проблема в том, что результат совсем не похож на родной. Есть несколько обходных путей, связанных со снятием скриншотов реальных встроенных виджетов, но это сопряжено с несколькими проблемами:

  • Это взлом
  • Захваченные виджеты случайно становятся видимыми, создавая мерцающий артефакт на экране
  • Требуются приемы обработки изображений, чтобы полученное изображение сочеталось с цветами таблицы
  • Он плохо масштабируется, например, когда требуются кнопки с другим содержимым

Есть ли способ встроить виджеты в ячейки TableViewer без использования таких громоздких методов? Базовая таблица SWT, безусловно, может это сделать, но интерфейс TableViewer, похоже, этого не поддерживает…

Ответ №1:

Для этого вы можете использовать celleditors. Это не совсем то, что вы хотите, поскольку виджеты отображаются только во время редактирования, но я думаю, что это довольно близко.

Смотрите http://wiki.eclipse.org/JFaceSnippets#Snippet027ComboBoxCellEditors или другие примеры CellEditor на странице wiki.