added new column that may be used with datatables. the column takes two icons in the constructor and displaying appropriate icon in the column depending on a boolean value

This commit is contained in:
Emil Siverhall 2012-08-02 15:52:58 +02:00
parent 9484791d60
commit cb0387472a
2 changed files with 52 additions and 0 deletions
src/main/java/se/su/dsv/scipro/datatables

@ -0,0 +1,3 @@
<wicket:panel>
<img wicket:id="icon"/>
</wicket:panel>

@ -0,0 +1,49 @@
package se.su.dsv.scipro.datatables;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import se.su.dsv.scipro.icons.ImageObject;
/**
* Column that displays different icons depending on a boolean value defined in abstract method booleanValue()
*
* @author emil-siv
*
*/
public abstract class BooleanIconColumn<T> extends AbstractColumn<T> {
private static final long serialVersionUID = -9034393574179345237L;
private final String yesIconString;
private final String noIconString;
public BooleanIconColumn(IModel<String> displayModel, String yesIconString, String noIconString) {
super(displayModel, null);
this.yesIconString = yesIconString;
this.noIconString = noIconString;
}
public void populateItem(Item<ICellPopulator<T>> cellItem,
String componentId, IModel<T> rowModel) {
cellItem.add(new IconPanel(componentId, rowModel));
}
private class IconPanel extends Panel {
private static final long serialVersionUID = 5301911716927261302L;
public IconPanel(String id, IModel<T> rowModel) {
super(id);
if(booleanValue(rowModel))
add(new ImageObject("icon", ImageObject.SIXTEEN + yesIconString));
else
add(new ImageObject("icon", ImageObject.SIXTEEN + noIconString));
}
}
protected abstract boolean booleanValue(IModel<T> rowModel);
}