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