blob: bdc6f47ec16c4e5ea4d55bd5e1365b100515e95b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2020 Dirk Fauth and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Dirk Fauth <dirk.fauth@googlemail.com> - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.extension.glazedlists.groupBy;
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
import org.eclipse.nebula.widgets.nattable.layer.cell.IConfigLabelAccumulator;
import org.eclipse.nebula.widgets.nattable.tree.TreeLayer;
/**
* This is a special kind of {@link IConfigLabelAccumulator} since it doesn't
* add a label but remove one on a special condition. If the {@link LabelStack}
* of a cell contains the {@link TreeLayer#TREE_COLUMN_CELL} label but there is
* no active grouping, the label gets removed so there is no tree styling
* (mainly left horizontal alignment) for the tree column.
* <p>
* Since the {@link TreeLayer#TREE_COLUMN_CELL} label will be removed by this
* {@link IConfigLabelAccumulator}, it needs to be set to a label that is
* located on top of the {@link TreeLayer} who adds the label. This for example
* can be the ViewportLayer.
* </p>
*/
public class GroupByConfigLabelModifier implements IConfigLabelAccumulator {
private GroupByModel groupByModel;
/**
* Create a new {@link GroupByConfigLabelModifier} that removes the
* {@link TreeLayer#TREE_COLUMN_CELL} label if no grouping is active.
*
* @param groupByModel
* The {@link GroupByModel} which is used to check whether a
* grouping is active or not.
*/
public GroupByConfigLabelModifier(GroupByModel groupByModel) {
this.groupByModel = groupByModel;
}
@Override
public void accumulateConfigLabels(LabelStack configLabels, int columnPosition, int rowPosition) {
if (configLabels.hasLabel(TreeLayer.TREE_COLUMN_CELL)
&& this.groupByModel.getGroupByColumnIndexes().isEmpty()) {
configLabels.removeLabel(TreeLayer.TREE_COLUMN_CELL);
}
}
}