/* * Copyright 2016 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.ide.eclipse.main.plugin.tableeditor; import java.util.ArrayList; import java.util.List; import org.eclipse.nebula.widgets.nattable.tree.ITreeRowModel; import org.eclipse.nebula.widgets.nattable.tree.TreeLayer; /** * @author mmarzec */ public class TreeLayerAccessor { private TreeLayer treeLayer; public TreeLayerAccessor(final TreeLayer treeLayer) { this.treeLayer = treeLayer; } public void expandAll() { treeLayer.expandAll(); } public void collapseAll() { treeLayer.collapseAll(); } public List<Integer> expandCollapsedRowsBeforeRowCountChange(final int currentRowCount) { final List<Integer> expandedRowsIndexes = new ArrayList<>(); final ITreeRowModel<?> model = treeLayer.getModel(); for (int i = 0; i < currentRowCount; i++) { if (model.isCollapsed(i)) { expandedRowsIndexes.add(i); } } for (final Integer rowIndex : expandedRowsIndexes) { treeLayer.expandTreeRow(rowIndex); } return expandedRowsIndexes; } public void collapseRowsAfterRowCountChange(final List<Integer> expandedRowIndexes, final int lastSelectedRowPosition, final int rowCountChange) { for (final Integer expandedRowIndex : expandedRowIndexes) { if (expandedRowIndex >= lastSelectedRowPosition) { if ((expandedRowIndex + rowCountChange) >= 0) { treeLayer.collapseTreeRow(expandedRowIndex + rowCountChange); } } else { treeLayer.collapseTreeRow(expandedRowIndex); } } } }