NatTable 1.6 - TreeLayer - треугольники развертывания/свертывания не следуют своим строкам после свертывания строки выше

Когда я сворачиваю строку в TreeLayer в NatTable, ее дочерние элементы исчезают, а другие строки перемещаются вверх.

В NatTable 1.5.0 значки развертывания/свертывания перемещаются вверх вместе со своими строками.

В NatTable 1.6.0 значки развертывания/свертывания остаются в исходном индексе строки, где раньше были их строки.

Нужно ли мне делать что-то дополнительно в 1.6? Например, чтобы слой дерева обновлялся из его модели ITreeRowModel?

ИЗМЕНИТЬ

Вот иллюстрация проблемы. Это происходит при обновлении NatTable до версии 1.6 без каких-либо других изменений кода.

иллюстрация выпуска


person Andy Thomas    schedule 04.11.2019    source источник
comment
Я не понимаю, что вы имеете в виду. Любые скриншоты или примеры, чтобы показать это?   -  person Dirk Fauth    schedule 05.11.2019
comment
Я тестировал в примерах NatTable и не вижу никаких проблем. Используете ли вы механизмы по умолчанию или переопределили/настроили что-то?   -  person Dirk Fauth    schedule 05.11.2019
comment
@DirkFauth - я добавил иллюстрацию. Я также не вижу, чтобы это происходило в примерах. Я вообще не использую глазированные списки. Модели данных и дерева определяются поверх пользовательского слоя данных. Да, я воспользовался возможностью настройки NatTable. Я понимаю, что ответить на этот вопрос может быть сложно без небольшого автономного примера, который я еще не построил.   -  person Andy Thomas    schedule 05.11.2019
comment
Возможно, какое-то исправление вызывает это с вашей настройкой. Похоже на проблему с преобразованием индекса позиции, но без дополнительных сведений о вашей настройке я не могу помочь.   -  person Dirk Fauth    schedule 05.11.2019
comment
Может быть регресс, хотя я не уверен, почему. Вы можете попробовать выполнить отладку в TreeLayer#getConfigLabelsByPosition(), чтобы увидеть, не происходит ли какая-либо внутренняя обработка.   -  person Dirk Fauth    schedule 05.11.2019
comment
@DirkFauth - Спасибо за идею. Возможно, мы полагались на какое-то поведение, которое не было гарантировано и изменено. Ваше наблюдение, что примеры работают, предполагает, что мы можем что-то сделать в нашем собственном коде. Но в настоящее время я приближаюсь к концу выпуска. Я понизил обратно до 1,5 на ближайшее время.   -  person Andy Thomas    schedule 06.11.2019


Ответы (1)


К сожалению, это регресс, который не был замечен. Главным образом потому, что большинство людей используют 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.

person Dirk Fauth    schedule 06.11.2019
comment
Спасибо за решение проблемы, несмотря на ограниченную информацию в моем вопросе. Я впечатлен. - person Andy Thomas; 06.11.2019