Eclipse rcp 表1.6-树层-展开/折叠三角形don';在上面折叠一行后,不要跟随他们的行

Eclipse rcp 表1.6-树层-展开/折叠三角形don';在上面折叠一行后,不要跟随他们的行,eclipse-rcp,nattable,Eclipse Rcp,Nattable,当我在NatTable中折叠树层中的一行时,它的子行消失,其他行向上移动 在表1.5.0中,展开/折叠图标随行向上移动 在表1.6.0中,展开/折叠图标保留在原来的行索引中,它们的行以前是在那里的 我需要在1.6中做些额外的事情吗?例如,要使树层从其ITreeRowModel更新 编辑 这里有一个问题的例子。它发生在NatTable升级到1.6时,没有其他代码更改 不幸的是,这是一个没有被注意到的回归。主要是因为大多数人似乎都在玻璃窗上使用TreeLayer。NatTable项目甚至没有一个没有

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

在表1.5.0中,展开/折叠图标随行向上移动

在表1.6.0中,展开/折叠图标保留在原来的行索引中,它们的行以前是在那里的

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

编辑

这里有一个问题的例子。它发生在NatTable升级到1.6时,没有其他代码更改


不幸的是,这是一个没有被注意到的回归。主要是因为大多数人似乎都在玻璃窗上使用
TreeLayer
。NatTable项目甚至没有一个没有GlazedList的使用示例

我已创建了一张票证并解决了问题:

同时,您可以通过以下方式覆盖
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实现中缺少从原点行位置到索引的转换。

我不明白您的意思。有没有屏幕截图或示例来说明这一点?我在NatTable示例中进行了测试,没有发现任何问题。您是在使用默认机制还是覆盖/自定义内容?@DirkFauth-我添加了一个说明。我在示例中也没有看到这种情况。我根本就没有使用上釉的列表。数据和树模型是在自定义数据层上定义的。是的,我利用了NatTable的可配置性。我知道,如果没有一个我还没有构建的小的、自包含的示例,回答这个问题可能会很困难。可能是一些修复导致了您的定制。似乎是位置索引转换的问题,但没有关于您的自定义的进一步详细信息,我无法提供帮助。可能是回归,尽管我不确定原因。您可以尝试在TreeLayer#getConfigLabelsByPosition()中进行调试,以查看是否存在内部处理以某种方式失败。感谢您解决了此问题,尽管我的问题中的信息有限。我印象深刻。