/*******************************************************************************
* Copyright (c) 2012 Original authors and others.
* 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:
* Original authors and others - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.layer.cell;
import java.io.Serializable;
import java.util.List;
import org.eclipse.nebula.widgets.nattable.data.IRowDataProvider;
import org.eclipse.nebula.widgets.nattable.data.IRowIdAccessor;
import org.eclipse.nebula.widgets.nattable.layer.LabelStack;
/**
* @see ColumnOverrideLabelAccumulator
* @param <T>
* type of the bean used as the data source for a row
*/
public class RowOverrideLabelAccumulator<T> extends AbstractOverrider {
private IRowDataProvider<T> dataProvider;
private IRowIdAccessor<T> idAccessor;
public RowOverrideLabelAccumulator(IRowDataProvider<T> dataProvider, IRowIdAccessor<T> idAccessor) {
this.dataProvider = dataProvider;
this.idAccessor = idAccessor;
}
@Override
public void accumulateConfigLabels(LabelStack configLabels, int columnPosition, int rowPosition) {
T rowObject = this.dataProvider.getRowObject(rowPosition);
Serializable rowId = this.idAccessor.getRowId(rowObject);
List<String> overrides = getOverrides(rowId);
if (overrides != null) {
for (String configLabel : overrides) {
configLabels.addLabel(configLabel);
}
}
}
/**
* Gets the unique id for the row with the given index and registers the
* labels for that id.
*
* @param rowIndex
* The index of the row for which element the override should be
* registered.
* @param configLabels
* The labels to register.
*/
public void registerRowOverrides(int rowIndex, String... configLabels) {
Serializable id = this.idAccessor.getRowId(this.dataProvider.getRowObject(rowIndex));
registerOverrides(id, configLabels);
}
}