/******************************************************************************* * Copyright (c) 2014 Dirk Fauth. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Dirk Fauth <dirk.fauth@googlemail.com> - initial API and implementation ******************************************************************************/ package org.eclipse.nebula.widgets.nattable.grid.data; import org.eclipse.nebula.widgets.nattable.grid.layer.RowHeaderLayer; import org.eclipse.nebula.widgets.nattable.layer.ILayer; import org.eclipse.nebula.widgets.nattable.layer.IUniqueIndexLayer; import org.eclipse.nebula.widgets.nattable.layer.LabelStack; import org.eclipse.nebula.widgets.nattable.painter.layer.ILayerPainter; import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer; import org.eclipse.nebula.widgets.nattable.summaryrow.SummaryRowLayer; /** * Using this specialization of {@link RowHeaderLayer} adds support for * configuring a fixed {@link SummaryRowLayer} in the body region of a grid. */ public class FixedSummaryRowHeaderLayer extends RowHeaderLayer { public static final String DEFAULT_SUMMARY_ROW_LABEL = "Summary"; //$NON-NLS-1$ protected String summaryRowLabel = DEFAULT_SUMMARY_ROW_LABEL; public FixedSummaryRowHeaderLayer( IUniqueIndexLayer baseLayer, ILayer verticalLayerDependency, SelectionLayer selectionLayer) { super(baseLayer, verticalLayerDependency, selectionLayer); } public FixedSummaryRowHeaderLayer( IUniqueIndexLayer baseLayer, ILayer verticalLayerDependency, SelectionLayer selectionLayer, boolean useDefaultConfiguration) { super(baseLayer, verticalLayerDependency, selectionLayer, useDefaultConfiguration); } public FixedSummaryRowHeaderLayer( IUniqueIndexLayer baseLayer, ILayer verticalLayerDependency, SelectionLayer selectionLayer, boolean useDefaultConfiguration, ILayerPainter layerPainter) { super(baseLayer, verticalLayerDependency, selectionLayer, useDefaultConfiguration, layerPainter); } @Override public Object getDataValueByPosition(int columnPosition, int rowPosition) { if (rowPosition == 0) { return this.summaryRowLabel; } return super.getDataValueByPosition(columnPosition, rowPosition); } @Override public LabelStack getConfigLabelsByPosition(int columnPosition, int rowPosition) { LabelStack labelStack = super.getConfigLabelsByPosition(columnPosition, rowPosition); // add a label to the row header summary row cell aswell, so // it can be styled differently too in this case it will simply use // the same styling as the summary row in the body if (rowPosition == 0) labelStack.addLabelOnTop(SummaryRowLayer.DEFAULT_SUMMARY_ROW_CONFIG_LABEL); return labelStack; } /** * * @return The label that is used as data value for the horizontal dependent * cell to the row header column. */ public String getSummaryRowLabel() { return this.summaryRowLabel; } /** * * @param summaryRowLabel * The label that should be used as data value for the horizontal * dependent cell to the row header column. */ public void setSummaryRowLabel(String summaryRowLabel) { this.summaryRowLabel = summaryRowLabel; } }