blob: 71c58b4496027a689c804cb55f23a388ae5b032b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2020 Edwin Park, 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:
* Edwin Park - initial API and implementation
* Dirk Fauth <dirk.fauth@googlemail.com> - Bug 448115, 449361
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.extension.glazedlists.groupBy;
import org.eclipse.nebula.widgets.nattable.config.AbstractRegistryConfiguration;
import org.eclipse.nebula.widgets.nattable.config.CellConfigAttributes;
import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry;
import org.eclipse.nebula.widgets.nattable.config.IEditableRule;
import org.eclipse.nebula.widgets.nattable.edit.EditConfigAttributes;
import org.eclipse.nebula.widgets.nattable.painter.cell.BackgroundPainter;
import org.eclipse.nebula.widgets.nattable.style.DisplayMode;
public class GroupByDataLayerConfiguration<T> extends AbstractRegistryConfiguration {
private final GroupByDataLayer<T> groupByDataLayer;
public GroupByDataLayerConfiguration(GroupByDataLayer<T> groupByDataLayer) {
this.groupByDataLayer = groupByDataLayer;
}
@Override
public void configureRegistry(IConfigRegistry configRegistry) {
// register a TextPainter to ensure that the GroupBy objects are
// rendered as text even if in the first column by default another
// painter is registered
// necessary for example if a different painter is registered for a
// column (e.g. CheckBoxPainter) that needs a special data type
configRegistry.registerConfigAttribute(
CellConfigAttributes.CELL_PAINTER,
new BackgroundPainter(new GroupByCellTextPainter()),
DisplayMode.NORMAL,
GroupByDataLayer.GROUP_BY_OBJECT);
// register a converter for GroupByObjects that also handles GroupBy
// summary values
configRegistry.registerConfigAttribute(
CellConfigAttributes.DISPLAY_CONVERTER,
new GroupByDisplayConverter<T>(this.groupByDataLayer),
DisplayMode.NORMAL,
GroupByDataLayer.GROUP_BY_OBJECT);
// make the GroupByObject cells always non-editable as editing such
// fields can have an effect since the value of thos cells can't be
// changed
configRegistry.registerConfigAttribute(
EditConfigAttributes.CELL_EDITABLE_RULE,
IEditableRule.NEVER_EDITABLE,
DisplayMode.NORMAL,
GroupByDataLayer.GROUP_BY_OBJECT);
}
}