У меня есть NatTable (table
) с настраиваемой конфигурацией меню заголовка, настроенной следующим образом:
table.addConfiguration(new CustomHeaderMenuConfiguration(table, columnHeaderLayer));
Класс конфигурации строит меню следующим образом:
@Override
protected PopupMenuBuilder createColumnHeaderMenu(NatTable natTable) {
return super.createColumnHeaderMenu(natTable).withHideColumnMenuItem("Hide column(s)")
.withColumnRenameDialog("Change annotation name").withVisibleState(
PopupMenuBuilder.COLUMN_RENAME_MENU_ITEM_ID, new ValidRenamableHeaderState());
}
Видимое состояние срабатывает, как и ожидалось. В конфигурации я также настраиваю слой для регистрации команды с моим конкретным слоем заголовка столбца:
@Override
public void configureLayer(ILayer layer) {
layer.registerCommandHandler(
new DisplayColumnRenameDialogCommandHandler(this.columnHeaderLayer));
}
Теперь, просматривая API DisplayColumnRenameDialogCommandHandler
и т. д., я ожидаю, что в какой-то момент новое значение достигнет поставщика данных заголовка столбца через уровень заголовка столбца.
Сам слой заголовка столбца настраивается в классе редактора следующим образом:
final IDataProvider columnHeaderDataProvider = new ColumnHeaderDataProvider(bodyDataProvider);
final ColumnHeaderLayer columnHeaderLayer =
new ColumnHeaderLayer(new DefaultColumnHeaderDataLayer(columnHeaderDataProvider),
compositeFreezeLayer, selectionLayer);
ColumnHeaderDataProvider
реализует IDataProvider
, а getDataValue(int, int)
прекрасно работает.
Проблема, с которой я сталкиваюсь, заключается в том, что ColumnHeaderDataProvider.setData(int, int, newValue)
никогда не вызывается, и, следовательно, данные модели никогда не обновляются, хотя метка в заголовке столбца меняется.
Что мне не хватает?