PopupMenuBuilder.withColumnRenameDialog不会更改标题模型数据

问题描述 投票:0回答:1

我有一个具有自定义标题菜单配置的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));
  }

现在从通过DisplayColumnRenameDialogCommandHandler的API进行爬网,我希望在某个时候,新值将通过列标题层到达列标题数据提供者。

列标题层本身是在编辑器类中这样设置的:

    final IDataProvider columnHeaderDataProvider = new ColumnHeaderDataProvider(bodyDataProvider);
    final ColumnHeaderLayer columnHeaderLayer =
        new ColumnHeaderLayer(new DefaultColumnHeaderDataLayer(columnHeaderDataProvider),
            compositeFreezeLayer, selectionLayer);

[ColumnHeaderDataProvider实现IDataProvidergetDataValue(int, int)正常工作。

我遇到的问题是,尽管列标题上的label发生了变化,但从未调用过[[ColumnHeaderDataProvider.setData(int, int, newValue),因此从未更新过模型数据。]我想念什么?

我有一个带有自定义标题菜单配置的NatTable(表),设置如下:table.addConfiguration(new CustomHeaderMenuConfiguration(table,columnHeaderLayer));配置类...

eclipse-rcp nattable
1个回答
0
投票
通用ColumnHeaderLayer并不绑定到实际的列标题数据,而是绑定到助手类提供的内部Map。 (可能)是因为在通常的使用情况下,列并不与主体数据提供程序(如我的情况)相关,而是与一堆字符串相关。

0
投票
ColumnHeaderLayer内跟踪列标题的重命名。
© www.soinside.com 2019 - 2024. All rights reserved.