NatTable 1.6 - TreeLayer - expand/collapse 三角形在折叠上面的一行后不跟随它们的行

NatTable 1.6 - TreeLayer - expand/collapse triangles don't follow their rows after collapsing a row above

当我在 NatTable 的 TreeLayer 中折叠一行时,它的子行消失,而其他行向上移动。

在 NatTable 1.5.0 中,expand/collapse 图标随着它们的行向上移动。

在 NatTable 1.6.0 中,expand/collapse 图标保留在它们原来的行索引处,它们的行曾经所在的位置。

我需要在 1.6 中做一些额外的事情吗?例如,要使树层从其 ITreeRowModel 更新?

编辑

这是问题的说明。当 NatTable 升级到 1.6 时发生,没有其他代码更改。

不幸的是,这是一个没有被注意到的倒退。主要是因为大多数人似乎将 TreeLayer 与 GlazedLists 一起使用。而 NatTable 项目甚至没有没有 GlazedLists 的使用示例。

我已经创建了工单并解决了问题:https://bugs.eclipse.org/bugs/show_bug.cgi?id=552727

您可以同时通过以下方式覆盖 TreeLayer#getConfigLabelsByPosition(int, int) 来解决此问题:

public LabelStack getConfigLabelsByPosition(int columnPosition, int rowPosition) {
    LabelStack configLabels = super.getConfigLabelsByPosition(columnPosition, rowPosition);

    if (isTreeColumn(columnPosition)) {
        configLabels.addLabelOnTop(TREE_COLUMN_CELL);

        ILayerCell cell = getCellByPosition(columnPosition, rowPosition);
        if (cell != null) {
            int rowIndex = getRowIndexByPosition(cell.getOriginRowPosition());
            configLabels.addLabelOnTop(
                    DefaultTreeLayerConfiguration.TREE_DEPTH_CONFIG_TYPE + this.treeRowModel.depth(rowIndex));
            if (!this.treeRowModel.hasChildren(rowIndex)) {
                configLabels.addLabelOnTop(DefaultTreeLayerConfiguration.TREE_LEAF_CONFIG_TYPE);
            } else {
                if (this.treeRowModel.isCollapsed(rowIndex)) {
                    configLabels.addLabelOnTop(DefaultTreeLayerConfiguration.TREE_COLLAPSED_CONFIG_TYPE);
                } else {
                    configLabels.addLabelOnTop(DefaultTreeLayerConfiguration.TREE_EXPANDED_CONFIG_TYPE);
                }
            }
        }
    }
    return configLabels;
}

主要问题是在 1.6 实现中缺少原始行位置到索引的转换。