/**
* Copyright 2013 Tommi S.E. Laukkanen
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.bubblecloud.ilves.component.grid;
import com.vaadin.data.Container;
import com.vaadin.data.Property;
import com.vaadin.data.util.PropertyFormatter;
import com.vaadin.ui.Table;
import java.util.HashMap;
/**
* Table implementation which supports formatting of cell values with
* PropertyFormatters.
*
* @author Tommi S.E. Laukkanen
*/
public class FormattingTable extends Table {
/** Default serial version UID. */
private static final long serialVersionUID = 1L;
/** Value formatters. */
private final HashMap<Object, PropertyFormatter> formatters = new HashMap<Object, PropertyFormatter>();
/**
* Default constructor which sets default page length to 50.
*/
public FormattingTable() {
super();
}
/**
* Default constructor which sets default page length to 50.
* @param caption the caption
* @param dataSource the data source
*/
public FormattingTable(final String caption, final Container dataSource) {
super(caption, dataSource);
setPageLength(50);
}
/**
* Default constructor which sets default page length to 50.
* @param caption the caption
*/
public FormattingTable(final String caption) {
super(caption);
setPageLength(50);
}
/**
* Set value formatter for given column.
* @param columnId the column ID
* @param propertyFormatter the PropertyFormatter
*/
public final void setFormatter(final Object columnId, final PropertyFormatter propertyFormatter) {
formatters.put(columnId, propertyFormatter);
}
@Override
protected final String formatPropertyValue(final Object rowId, final Object colId, final Property property) {
if (formatters.containsKey(colId)) {
return formatters.get(colId).format(property.getValue());
} else {
return super.formatPropertyValue(rowId, colId, property);
}
}
}