#eclipse-rcp #nattable
#eclipse-rcp #nattable
Вопрос:
Некоторые списки и таблицы выделяются серым цветом, когда теряют фокус клавиатуры.
При наличии нескольких списков / таблиц это помогает сообщить пользователю, какой выбор активен.
Есть ли простой способ сделать это с помощью NatTable?
Лучшее, что я придумал на данный момент, это переключаться между различными атрибутами для DisplayMode.SELECT
того, как фокус приходит и уходит — но я не уверен, что смогу сделать это после того, как NatTable.configure()
был вызван.
Ответ №1:
Да, вы можете динамически изменять атрибуты конфигурации после NatTable#configure()
вызова. Это обычный подход для динамических изменений. Другим подходом было бы настроить стиль выделения для специальной метки и применить эту метку только в том случае, если таблица активна. Этот подход можно увидеть в этом примере.
Ответ №2:
У меня это работает после ответа @ DirkFauth. Этот ответ включает в себя некоторые особенности.
После того, как таблица была настроена с помощью NatTable.configure()
, вы можете изменить конфигурацию не с помощью NatTable.addConfiguration(IConfiguration)
, а вместо этого с помощью вызова IConfiguration.configureRegistry(IConfigRegistry)
. Например:
myConfiguration.configureRegistry( myTable.getConfigRegistry() )
В рамках этой реализации configureRegistry() вы можете задать стиль для выделенных и привязанных ячеек:
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE,
selectedStyle, DisplayMode.SELECT, GridRegion.BODY);
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE,
anchorStyle, DisplayMode.SELECT,
SelectionStyleLabels.SELECTION_ANCHOR_STYLE);
Когда таблица неактивна, selectedStyle
и anchorStyle
могут быть изменены клоны их обычной настройки. Например:
private static Color myInactiveColor = ...;
public static Style makeInactiveBodyCellStyleFrom(@Nonnull Style style) {
Style rv = style.clone();
rv.setAttributeValue( CellStyleAttributes.BACKGROUND_COLOR,
myInactiveColor );
return rv;
}
Аналогичную работу можно выполнить для стилей заголовков выбранных строк и столбцов.