From cb0387472ae446eb8633a335db446fdb0e854170 Mon Sep 17 00:00:00 2001 From: Emil Siverhall <emil-siv@dsv.su.se> Date: Thu, 2 Aug 2012 15:52:58 +0200 Subject: [PATCH] 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 --- .../BooleanIconColumn$IconPanel.html | 3 ++ .../scipro/datatables/BooleanIconColumn.java | 49 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 src/main/java/se/su/dsv/scipro/datatables/BooleanIconColumn$IconPanel.html create mode 100644 src/main/java/se/su/dsv/scipro/datatables/BooleanIconColumn.java diff --git a/src/main/java/se/su/dsv/scipro/datatables/BooleanIconColumn$IconPanel.html b/src/main/java/se/su/dsv/scipro/datatables/BooleanIconColumn$IconPanel.html new file mode 100644 index 0000000000..18441b3293 --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/datatables/BooleanIconColumn$IconPanel.html @@ -0,0 +1,3 @@ +<wicket:panel> + <img wicket:id="icon"/> +</wicket:panel> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/datatables/BooleanIconColumn.java b/src/main/java/se/su/dsv/scipro/datatables/BooleanIconColumn.java new file mode 100644 index 0000000000..3db5d36cf4 --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/datatables/BooleanIconColumn.java @@ -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); +} \ No newline at end of file