From 64372ae1220c991e6a46267b714df19cf418cb1d Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 13:25:10 +0900
Subject: [PATCH 01/34] services now have findall built in

---
 .../springdata/serviceimpls/AbstractServiceImpl.java       | 7 ++++++-
 .../se/su/dsv/scipro/springdata/services/CrudService.java  | 2 ++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java
index 8d00eae6e7..cf65f607b4 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java
@@ -43,8 +43,13 @@ public class AbstractServiceImpl<T, ID extends Serializable> implements CrudServ
 		return repository.findOne(id);
 	}
 
+    @Override
+    public Iterable<T> findAll() {
+        return repository.findAll();
+    }
 
-	/**
+
+    /**
 	 * Returns whether an entity with the given id exists.
 	 *
 	 * @param id
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java b/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java
index 28a2d5e65b..3e5c55aeba 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java
@@ -27,6 +27,8 @@ public abstract interface CrudService<T, ID> {
 	 */
 	T findOne(ID id);
 
+    Iterable<T> findAll();
+
 	/**
 	 * Returns whether an entity with the given id exists.
 	 *

From 6bbb4553de70f81a96c66050ad9da981fe4a9f3e Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 13:28:28 +0900
Subject: [PATCH 02/34] new panel added

---
 .../admin/panels/CheckListTemplateDataPanel.html  |  9 +++++++++
 .../admin/panels/CheckListTemplateDataPanel.java  | 15 +++++++++++++++
 2 files changed, 24 insertions(+)
 create mode 100644 src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
 create mode 100644 src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
new file mode 100644
index 0000000000..81047fb14e
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html
+	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
+<body>
+	<wicket:panel>
+
+	</wicket:panel>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
new file mode 100644
index 0000000000..558d9060ad
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -0,0 +1,15 @@
+package se.su.dsv.scipro.admin.panels;
+
+import org.apache.wicket.markup.html.panel.Panel;
+
+/**
+ * Author: fred-fri
+ * Date: 5/2/12
+ */
+public class CheckListTemplateDataPanel extends Panel {
+
+    public CheckListTemplateDataPanel(String id) {
+        super(id);
+    }
+
+}

From 50fb6fa1406b50174153255a113ed5e863860547 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 13:30:49 +0900
Subject: [PATCH 03/34] using new panel

---
 .../dsv/scipro/admin/pages/AdminCheckListPage.html  | 13 ++++---------
 .../dsv/scipro/admin/pages/AdminCheckListPage.java  |  8 +++++---
 2 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html
index 282c25caf8..15e8e148a2 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html
@@ -7,15 +7,10 @@
 <body>
 	<wicket:extend>
 		<div class="span-24 last">
- 		<!-- Left column -->
-<!-- 			<div class="span-11 last"> -->
-<!-- 				<div wicket:id="cCLPanel"></div> -->
-<!-- 			</div> -->
-			<!-- Right column -->
-<!-- 			<div class="span-11 last"> -->
-				<div wicket:id="listCLPanel"></div>
-<!-- 				<div wicket:id="flcltp"></div> -->
-<!-- 			</div> -->
+
+				<!--<div wicket:id="listCLPanel"></div>-->
+            <div wicket:id="datapanel"></div>
+
 		</div>
 		</wicket:extend>
 </body>
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
index 6754ced4c7..787abf8a33 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
@@ -3,6 +3,7 @@ package se.su.dsv.scipro.admin.pages;
 import org.apache.wicket.PageParameters;
 
 import se.su.dsv.scipro.admin.panels.AdminListCheckListTemplatePanel;
+import se.su.dsv.scipro.admin.panels.CheckListTemplateDataPanel;
 import se.su.dsv.scipro.data.enums.CheckListRole;
 import se.su.dsv.scipro.security.auth.Authorization;
 import se.su.dsv.scipro.security.auth.roles.Roles;
@@ -20,9 +21,10 @@ public class AdminCheckListPage extends AbstractAdminPage {
 	
 	public AdminCheckListPage(PageParameters pp) {
 		super(pp);
-//		add(new CreateChecklistTemplatePanel("cCLPanel"));
-		add(new AdminListCheckListTemplatePanel("listCLPanel", pp, CheckListRole.ADMIN));
-//		add(new FunctionalListCheckListTemplatePanel("flcltp"));
+
+//		add(new AdminListCheckListTemplatePanel("listCLPanel", pp, CheckListRole.ADMIN));
+        add(new CheckListTemplateDataPanel("datapanel"));
+
 	}
 
 }

From 7f1bce16e0f76760cdb98145348c0081b0b24d95 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 13:38:26 +0900
Subject: [PATCH 04/34] adding basic datatable stuff

---
 .../admin/panels/CheckListTemplateDataPanel.html  |  2 +-
 .../admin/panels/CheckListTemplateDataPanel.java  | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
index 81047fb14e..21f2aec9c6 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
@@ -3,7 +3,7 @@
 	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
 <body>
 	<wicket:panel>
-
+        <table wicket:id="datatable"></table>
 	</wicket:panel>
 </body>
 </html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index 558d9060ad..b996809014 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -1,6 +1,8 @@
 package se.su.dsv.scipro.admin.panels;
 
+import org.apache.wicket.extensions.markup.html.repeater.data.table.*;
 import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
 
 /**
  * Author: fred-fri
@@ -10,6 +12,19 @@ public class CheckListTemplateDataPanel extends Panel {
 
     public CheckListTemplateDataPanel(String id) {
         super(id);
+
+        IColumn[] columns = new IColumn[2];
+
+        columns[0] = new PropertyColumn(new Model("First Name"), "name.first", "name.first");
+        columns[1] = new PropertyColumn(new Model("Last Name"), "name.last");
+
+        DataTable table = new DataTable("datatable", columns, new UserProvider(), 10);
+        table.add(new NavigationToolbar(table));
+//        table.add(new HeadersToolbar(table));
+        add(table);
+
     }
 
+    
+
 }

From ede7076e172f3bc6c6a3eff4dfdac9e0f6e9dae1 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 13:40:39 +0900
Subject: [PATCH 05/34] some column fixes, sortabledataprovider basics added

---
 .../panels/CheckListTemplateDataPanel.java    | 35 ++++++++++++++++---
 1 file changed, 31 insertions(+), 4 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index b996809014..6ca083a038 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -1,8 +1,13 @@
 package se.su.dsv.scipro.admin.panels;
 
 import org.apache.wicket.extensions.markup.html.repeater.data.table.*;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import java.util.Iterator;
 
 /**
  * Author: fred-fri
@@ -13,10 +18,10 @@ public class CheckListTemplateDataPanel extends Panel {
     public CheckListTemplateDataPanel(String id) {
         super(id);
 
-        IColumn[] columns = new IColumn[2];
+        IColumn[] columns = new IColumn[1];
 
-        columns[0] = new PropertyColumn(new Model("First Name"), "name.first", "name.first");
-        columns[1] = new PropertyColumn(new Model("Last Name"), "name.last");
+        columns[0] = new PropertyColumn(new Model("Name"), "name", "name");
+//        columns[1] = new PropertyColumn(new Model("Last Name"), "name.last");
 
         DataTable table = new DataTable("datatable", columns, new UserProvider(), 10);
         table.add(new NavigationToolbar(table));
@@ -25,6 +30,28 @@ public class CheckListTemplateDataPanel extends Panel {
 
     }
 
-    
+    private static class ChecklistTemplateProvider extends SortableDataProvider {
+
+        //Service
+
+        public ChecklistTemplateProvider() {
+            setSort("name", true);
+        }
+
+        @Override
+        public Iterator iterator(int first, int count) {
+            return null;  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        @Override
+        public int size() {
+            return 0;  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        @Override
+        public IModel model(Object object) {
+            return null;  //To change body of implemented methods use File | Settings | File Templates.
+        }
+    }
 
 }

From 3961053425b9989377e87ae94d7b9677f3394b1b Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 13:43:26 +0900
Subject: [PATCH 06/34] added repo and service classes

---
 .../repos/ChecklistTemplateRepo.java          | 17 ++++++++++
 .../ChecklistTemplateServiceImpl.java         | 33 +++++++++++++++++++
 .../services/ChecklistTemplateService.java    | 13 ++++++++
 3 files changed, 63 insertions(+)
 create mode 100644 src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java
 create mode 100644 src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
 create mode 100644 src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java

diff --git a/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java b/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java
new file mode 100644
index 0000000000..2cde2f65fa
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java
@@ -0,0 +1,17 @@
+package se.su.dsv.scipro.springdata.repos;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.querydsl.QueryDslPredicateExecutor;
+import org.springframework.transaction.annotation.Transactional;
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+
+/**
+ * @author: fred-fri
+ * date: 2012 03 26
+ */
+@Transactional(readOnly = true)
+public interface ChecklistTemplateRepo extends JpaRepository<CheckListTemplate, Long>, QueryDslPredicateExecutor<CheckListTemplate> {
+
+    //nothing here yet
+
+}
diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
new file mode 100644
index 0000000000..48a412c885
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
@@ -0,0 +1,33 @@
+package se.su.dsv.scipro.springdata.serviceimpls;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+import se.su.dsv.scipro.springdata.repos.ChecklistTemplateRepo;
+import se.su.dsv.scipro.springdata.services.ChecklistTemplateService;
+
+
+import javax.annotation.Resource;
+
+/**
+ * @author: fred-fri
+ * date: 2012 03 26
+ */
+@Service ( "checkListTemplateService" )
+@Transactional ( readOnly = true )
+public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckListTemplate, Long> implements ChecklistTemplateService {
+
+	@Resource
+	private ChecklistTemplateRepo checklistTemplateRepo;
+
+	@Autowired
+	public ChecklistTemplateServiceImpl(
+            @Qualifier("checklistTemplateRepo")
+            ChecklistTemplateRepo checklistTemplateRepo) {
+		super(checklistTemplateRepo, checklistTemplateRepo);
+		System.out.println("CheckListTemplateServiceImpl instantiating...");
+	}
+
+}
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
new file mode 100644
index 0000000000..768a8f68c3
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
@@ -0,0 +1,13 @@
+package se.su.dsv.scipro.springdata.services;
+
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+
+/**
+ * @author: fred-fri
+ * date: 2012 03 26
+ */
+public interface ChecklistTemplateService extends CrudService<CheckListTemplate, Long>, QueryService<CheckListTemplate, Long> {
+
+    //nothing here yet
+
+}

From f8f942d9c18427ebc9601d0a409406a5c82885d6 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 13:48:28 +0900
Subject: [PATCH 07/34] a lot of fixes, maybe this will work

---
 .../panels/CheckListTemplateDataPanel.java    | 26 +++++++++++++------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index 6ca083a038..f260843a63 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -6,6 +6,8 @@ import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+import se.su.dsv.scipro.springdata.services.ChecklistTemplateService;
 
 import java.util.Iterator;
 
@@ -23,35 +25,43 @@ public class CheckListTemplateDataPanel extends Panel {
         columns[0] = new PropertyColumn(new Model("Name"), "name", "name");
 //        columns[1] = new PropertyColumn(new Model("Last Name"), "name.last");
 
-        DataTable table = new DataTable("datatable", columns, new UserProvider(), 10);
+        DataTable table = new DataTable("datatable", columns, new ChecklistTemplateProvider(), 10);
         table.add(new NavigationToolbar(table));
 //        table.add(new HeadersToolbar(table));
         add(table);
 
     }
 
-    private static class ChecklistTemplateProvider extends SortableDataProvider {
+    private static class ChecklistTemplateProvider extends SortableDataProvider<CheckListTemplate> {
 
-        //Service
+        @SpringBean
+        ChecklistTemplateService checklistTemplateService;
 
         public ChecklistTemplateProvider() {
             setSort("name", true);
         }
 
         @Override
-        public Iterator iterator(int first, int count) {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
+        public Iterator<? extends CheckListTemplate> iterator(int first, int count) {
+            return checklistTemplateService.findAll().iterator();
         }
 
         @Override
         public int size() {
-            return 0;  //To change body of implemented methods use File | Settings | File Templates.
+            return safeLongToInt(checklistTemplateService.count());
         }
 
         @Override
-        public IModel model(Object object) {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
+        public IModel<CheckListTemplate> model(CheckListTemplate object) {
+            return Model.of(object);
         }
     }
 
+    public static int safeLongToInt(long l) {
+        if (l < Integer.MIN_VALUE || l > Integer.MAX_VALUE) {
+            throw new IllegalArgumentException
+                    (l + " cannot be cast to int without changing its value.");
+        }
+        return (int) l;
+    }
 }

From a12c2c8ddcbfaaec4598f4ede204784c05b5f930 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 13:59:48 +0900
Subject: [PATCH 08/34] with some modifications (making the dataprovider non
 static and putting the service in the panel) it works

---
 .../scipro/admin/panels/CheckListTemplateDataPanel.java   | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index f260843a63..1ec7300c44 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -17,6 +17,9 @@ import java.util.Iterator;
  */
 public class CheckListTemplateDataPanel extends Panel {
 
+    @SpringBean
+    public ChecklistTemplateService checklistTemplateService;
+
     public CheckListTemplateDataPanel(String id) {
         super(id);
 
@@ -32,10 +35,7 @@ public class CheckListTemplateDataPanel extends Panel {
 
     }
 
-    private static class ChecklistTemplateProvider extends SortableDataProvider<CheckListTemplate> {
-
-        @SpringBean
-        ChecklistTemplateService checklistTemplateService;
+    private class ChecklistTemplateProvider extends SortableDataProvider<CheckListTemplate> {
 
         public ChecklistTemplateProvider() {
             setSort("name", true);

From ff9470970bdebfd9669cba2c0efa987f6c32ff03 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 14:04:33 +0900
Subject: [PATCH 09/34] bottom toolbar added, top one doesnt work

---
 .../dsv/scipro/admin/panels/CheckListTemplateDataPanel.java  | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index 1ec7300c44..dc5966f4cc 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -29,8 +29,11 @@ public class CheckListTemplateDataPanel extends Panel {
 //        columns[1] = new PropertyColumn(new Model("Last Name"), "name.last");
 
         DataTable table = new DataTable("datatable", columns, new ChecklistTemplateProvider(), 10);
-        table.add(new NavigationToolbar(table));
+        table.addBottomToolbar(new NavigationToolbar(table));
+//        none of these work
 //        table.add(new HeadersToolbar(table));
+//        table.add(new HeadersToolbar(table, null));
+//        table.addTopToolbar(new HeadersToolbar(table, null));
         add(table);
 
     }

From 5f6df8ce1762b909b7e513309210813f1c141fb5 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 14:06:05 +0900
Subject: [PATCH 10/34] added type to datatable

---
 .../su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index dc5966f4cc..f95f6ee023 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -28,7 +28,7 @@ public class CheckListTemplateDataPanel extends Panel {
         columns[0] = new PropertyColumn(new Model("Name"), "name", "name");
 //        columns[1] = new PropertyColumn(new Model("Last Name"), "name.last");
 
-        DataTable table = new DataTable("datatable", columns, new ChecklistTemplateProvider(), 10);
+        DataTable<CheckListTemplate> table = new DataTable<CheckListTemplate>("datatable", columns, new ChecklistTemplateProvider(), 10);
         table.addBottomToolbar(new NavigationToolbar(table));
 //        none of these work
 //        table.add(new HeadersToolbar(table));

From e4945ba7dae11117b4d4646c3175f5748f5dfbae Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 14:09:07 +0900
Subject: [PATCH 11/34] added creator column

---
 .../su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index f95f6ee023..60c3ab8419 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -23,9 +23,10 @@ public class CheckListTemplateDataPanel extends Panel {
     public CheckListTemplateDataPanel(String id) {
         super(id);
 
-        IColumn[] columns = new IColumn[1];
+        IColumn[] columns = new IColumn[2];
 
         columns[0] = new PropertyColumn(new Model("Name"), "name", "name");
+        columns[1] = new PropertyColumn(new Model("Creator"), "creator", "creator");
 //        columns[1] = new PropertyColumn(new Model("Last Name"), "name.last");
 
         DataTable<CheckListTemplate> table = new DataTable<CheckListTemplate>("datatable", columns, new ChecklistTemplateProvider(), 10);

From 37843c2a2af9c67012251461569359a44aa1dc85 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 14:20:18 +0900
Subject: [PATCH 12/34] added some types

---
 .../admin/panels/CheckListTemplateDataPanel.java     | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index 60c3ab8419..4a0e79d611 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -9,6 +9,7 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
 import se.su.dsv.scipro.springdata.services.ChecklistTemplateService;
 
+import java.util.ArrayList;
 import java.util.Iterator;
 
 /**
@@ -25,9 +26,14 @@ public class CheckListTemplateDataPanel extends Panel {
 
         IColumn[] columns = new IColumn[2];
 
-        columns[0] = new PropertyColumn(new Model("Name"), "name", "name");
-        columns[1] = new PropertyColumn(new Model("Creator"), "creator", "creator");
-//        columns[1] = new PropertyColumn(new Model("Last Name"), "name.last");
+        columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
+        columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");
+
+//        the methods below work too
+//        columns[0] = new PropertyColumn(new Model("Name"), "name", "name");
+//        columns[1] = new PropertyColumn(new Model("Creator"), "creator", "creator");
+//        columns[0] = new PropertyColumn<CheckListTemplate>(new Model("Name"), "name", "name");
+//        columns[1] = new PropertyColumn<CheckListTemplate>(new Model("Creator"), "creator", "creator");
 
         DataTable<CheckListTemplate> table = new DataTable<CheckListTemplate>("datatable", columns, new ChecklistTemplateProvider(), 10);
         table.addBottomToolbar(new NavigationToolbar(table));

From bc7647102dfab8211d183d7e157fc06a5c77ba86 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 14:27:32 +0900
Subject: [PATCH 13/34] added pageable findall method

---
 .../dsv/scipro/admin/panels/CheckListTemplateDataPanel.java | 1 +
 .../serviceimpls/ChecklistTemplateServiceImpl.java          | 6 ++++++
 .../springdata/services/ChecklistTemplateService.java       | 4 +++-
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index 4a0e79d611..1cf38a5ce3 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -53,6 +53,7 @@ public class CheckListTemplateDataPanel extends Panel {
 
         @Override
         public Iterator<? extends CheckListTemplate> iterator(int first, int count) {
+            
             return checklistTemplateService.findAll().iterator();
         }
 
diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
index 48a412c885..d8f732c6ef 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
@@ -2,6 +2,8 @@ package se.su.dsv.scipro.springdata.serviceimpls;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
@@ -30,4 +32,8 @@ public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckList
 		System.out.println("CheckListTemplateServiceImpl instantiating...");
 	}
 
+    @Override
+    public Page<CheckListTemplate> findAll(Pageable pageable) {
+        return checklistTemplateRepo.findAll(pageable);
+    }
 }
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
index 768a8f68c3..48a64cf429 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
@@ -1,5 +1,7 @@
 package se.su.dsv.scipro.springdata.services;
 
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
 
 /**
@@ -8,6 +10,6 @@ import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
  */
 public interface ChecklistTemplateService extends CrudService<CheckListTemplate, Long>, QueryService<CheckListTemplate, Long> {
 
-    //nothing here yet
+    Page<CheckListTemplate> findAll(Pageable pageable);
 
 }

From 30452db124a4ea21b094d7e5d242f85de95dc2e1 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 2 May 2012 18:37:06 +0900
Subject: [PATCH 14/34] ITS WORKING WO FUUUU HOO

---
 .../admin/panels/CheckListTemplateDataPanel.java      | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index 1cf38a5ce3..6795ea181f 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -6,6 +6,7 @@ import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
+import org.springframework.data.domain.PageRequest;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
 import se.su.dsv.scipro.springdata.services.ChecklistTemplateService;
 
@@ -21,6 +22,9 @@ public class CheckListTemplateDataPanel extends Panel {
     @SpringBean
     public ChecklistTemplateService checklistTemplateService;
 
+    DataTable<CheckListTemplate> table;
+    NavigationToolbar navigationToolbar;
+
     public CheckListTemplateDataPanel(String id) {
         super(id);
 
@@ -35,8 +39,8 @@ public class CheckListTemplateDataPanel extends Panel {
 //        columns[0] = new PropertyColumn<CheckListTemplate>(new Model("Name"), "name", "name");
 //        columns[1] = new PropertyColumn<CheckListTemplate>(new Model("Creator"), "creator", "creator");
 
-        DataTable<CheckListTemplate> table = new DataTable<CheckListTemplate>("datatable", columns, new ChecklistTemplateProvider(), 10);
-        table.addBottomToolbar(new NavigationToolbar(table));
+        table = new DataTable<CheckListTemplate>("datatable", columns, new ChecklistTemplateProvider(), 10);
+        table.addBottomToolbar(navigationToolbar = new NavigationToolbar(table));
 //        none of these work
 //        table.add(new HeadersToolbar(table));
 //        table.add(new HeadersToolbar(table, null));
@@ -53,8 +57,7 @@ public class CheckListTemplateDataPanel extends Panel {
 
         @Override
         public Iterator<? extends CheckListTemplate> iterator(int first, int count) {
-            
-            return checklistTemplateService.findAll().iterator();
+            return checklistTemplateService.findAll(new PageRequest(table.getCurrentPage(), count)).iterator();
         }
 
         @Override

From b0b41116dd7d96fc9e7e3395ff0e1249361ed189 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Thu, 3 May 2012 10:25:06 +0900
Subject: [PATCH 15/34] added methods for filtering to service layer

---
 .../ChecklistTemplateServiceImpl.java         | 26 +++++++++++++++++++
 .../services/ChecklistTemplateService.java    |  3 ++-
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
index d8f732c6ef..61077f2e26 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
@@ -1,5 +1,6 @@
 package se.su.dsv.scipro.springdata.serviceimpls;
 
+import com.mysema.query.types.expr.BooleanExpression;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.data.domain.Page;
@@ -7,6 +8,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+import se.su.dsv.scipro.data.dataobjects.QCheckListTemplate;
 import se.su.dsv.scipro.springdata.repos.ChecklistTemplateRepo;
 import se.su.dsv.scipro.springdata.services.ChecklistTemplateService;
 
@@ -36,4 +38,28 @@ public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckList
     public Page<CheckListTemplate> findAll(Pageable pageable) {
         return checklistTemplateRepo.findAll(pageable);
     }
+
+    @Override
+    public Page<CheckListTemplate> find(String filterString, Pageable pageable) {
+        if (filterString==null || filterString.isEmpty()){
+            return checklistTemplateRepo.findAll(pageable);
+        }
+        else {
+            return checklistTemplateRepo.findAll(filterStringIsCreatorName(filterString), pageable);
+        }
+    }
+
+    @Override
+    public Long count(String filterString) {
+        if (filterString==null || filterString.isEmpty()){
+            return checklistTemplateRepo.count();
+        }
+        else {
+            return checklistTemplateRepo.count(filterStringIsCreatorName(filterString));
+        }
+    }
+
+    private BooleanExpression filterStringIsCreatorName(String filterString){
+        return QCheckListTemplate.checkListTemplate.creator.firstName.contains(filterString).or(QCheckListTemplate.checkListTemplate.creator.lastName.contains(filterString));
+    }
 }
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
index 48a64cf429..e10284135d 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
@@ -11,5 +11,6 @@ import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
 public interface ChecklistTemplateService extends CrudService<CheckListTemplate, Long>, QueryService<CheckListTemplate, Long> {
 
     Page<CheckListTemplate> findAll(Pageable pageable);
-
+    Page<CheckListTemplate> find(String filterString, Pageable pageable);
+    Long count(String filterString);
 }

From 12c06a87aa6da9b806ac71ea2e6f98fd2a34b738 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Thu, 3 May 2012 10:29:51 +0900
Subject: [PATCH 16/34] filtering works

---
 .../panels/CheckListTemplateDataPanel.html    |  1 +
 .../panels/CheckListTemplateDataPanel.java    | 28 +++++++++++++++++--
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
index 21f2aec9c6..3d819cb813 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
@@ -3,6 +3,7 @@
 	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
 <body>
 	<wicket:panel>
+        <div wicket:id="filterStringPanel"></div>
         <table wicket:id="datatable"></table>
 	</wicket:panel>
 </body>
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index 6795ea181f..fecfbd7c2e 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -1,5 +1,6 @@
 package se.su.dsv.scipro.admin.panels;
 
+import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.*;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.markup.html.panel.Panel;
@@ -8,6 +9,7 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.springframework.data.domain.PageRequest;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+import se.su.dsv.scipro.reusable.FilterStringPanel;
 import se.su.dsv.scipro.springdata.services.ChecklistTemplateService;
 
 import java.util.ArrayList;
@@ -24,10 +26,21 @@ public class CheckListTemplateDataPanel extends Panel {
 
     DataTable<CheckListTemplate> table;
     NavigationToolbar navigationToolbar;
+    FilterStringPanel filterStringPanel;
+    ChecklistTemplateProvider checklistTemplateProvider;
 
     public CheckListTemplateDataPanel(String id) {
         super(id);
 
+        filterStringPanel = new FilterStringPanel("filterStringPanel") {
+            @Override
+            public void onUpdateFilter(AjaxRequestTarget target) {
+                checklistTemplateProvider.setFilterString(getFilterString());
+                target.addComponent(table);
+            }
+        };
+        add(filterStringPanel);
+
         IColumn[] columns = new IColumn[2];
 
         columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
@@ -39,7 +52,8 @@ public class CheckListTemplateDataPanel extends Panel {
 //        columns[0] = new PropertyColumn<CheckListTemplate>(new Model("Name"), "name", "name");
 //        columns[1] = new PropertyColumn<CheckListTemplate>(new Model("Creator"), "creator", "creator");
 
-        table = new DataTable<CheckListTemplate>("datatable", columns, new ChecklistTemplateProvider(), 10);
+        table = new DataTable<CheckListTemplate>("datatable", columns, checklistTemplateProvider =  new ChecklistTemplateProvider(), 10);
+        table.setOutputMarkupId(true);
         table.addBottomToolbar(navigationToolbar = new NavigationToolbar(table));
 //        none of these work
 //        table.add(new HeadersToolbar(table));
@@ -51,24 +65,32 @@ public class CheckListTemplateDataPanel extends Panel {
 
     private class ChecklistTemplateProvider extends SortableDataProvider<CheckListTemplate> {
 
+        private String filterString;
+
         public ChecklistTemplateProvider() {
             setSort("name", true);
         }
 
         @Override
         public Iterator<? extends CheckListTemplate> iterator(int first, int count) {
-            return checklistTemplateService.findAll(new PageRequest(table.getCurrentPage(), count)).iterator();
+//            return checklistTemplateService.findAll(new PageRequest(table.getCurrentPage(), count)).iterator();
+            return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), count)).iterator();
         }
 
         @Override
         public int size() {
-            return safeLongToInt(checklistTemplateService.count());
+//            return safeLongToInt(checklistTemplateService.count());
+            return safeLongToInt(checklistTemplateService.count(filterString));
         }
 
         @Override
         public IModel<CheckListTemplate> model(CheckListTemplate object) {
             return Model.of(object);
         }
+
+        public void setFilterString(String filterString){
+            this.filterString = filterString;
+        }
     }
 
     public static int safeLongToInt(long l) {

From d0aac89dc3dc9c10e888ee4cf9d086d97dcc4470 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Thu, 3 May 2012 10:33:37 +0900
Subject: [PATCH 17/34] filtering on template name added

---
 .../serviceimpls/ChecklistTemplateServiceImpl.java        | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
index 61077f2e26..8f34bc70e1 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
@@ -45,7 +45,7 @@ public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckList
             return checklistTemplateRepo.findAll(pageable);
         }
         else {
-            return checklistTemplateRepo.findAll(filterStringIsCreatorName(filterString), pageable);
+            return checklistTemplateRepo.findAll(filterStringIsCreatorName(filterString).or(filterStringIsChecklistTemplateName(filterString)), pageable);
         }
     }
 
@@ -55,11 +55,15 @@ public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckList
             return checklistTemplateRepo.count();
         }
         else {
-            return checklistTemplateRepo.count(filterStringIsCreatorName(filterString));
+            return checklistTemplateRepo.count(filterStringIsCreatorName(filterString).or(filterStringIsChecklistTemplateName(filterString)));
         }
     }
 
     private BooleanExpression filterStringIsCreatorName(String filterString){
         return QCheckListTemplate.checkListTemplate.creator.firstName.contains(filterString).or(QCheckListTemplate.checkListTemplate.creator.lastName.contains(filterString));
     }
+
+    private BooleanExpression filterStringIsChecklistTemplateName(String filterString){
+        return QCheckListTemplate.checkListTemplate.name.contains(filterString);
+    }
 }

From 7d35b35ac504b2db970c5bb480c865c77f3e6c06 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Thu, 3 May 2012 10:35:37 +0900
Subject: [PATCH 18/34] added headerstoolbar. third argument when creating
 propertycolumns seems to be some kind of sort object, need to figure that out

---
 .../scipro/admin/panels/CheckListTemplateDataPanel.java  | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index fecfbd7c2e..018d2ca0ae 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -43,8 +43,11 @@ public class CheckListTemplateDataPanel extends Panel {
 
         IColumn[] columns = new IColumn[2];
 
-        columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
-        columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");
+//        columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
+//        columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");
+
+        columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name");
+        columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator");
 
 //        the methods below work too
 //        columns[0] = new PropertyColumn(new Model("Name"), "name", "name");
@@ -58,7 +61,7 @@ public class CheckListTemplateDataPanel extends Panel {
 //        none of these work
 //        table.add(new HeadersToolbar(table));
 //        table.add(new HeadersToolbar(table, null));
-//        table.addTopToolbar(new HeadersToolbar(table, null));
+        table.addTopToolbar(new HeadersToolbar(table, null));
         add(table);
 
     }

From 633015a5cce212a4c57a736e2dad8b7726940bbf Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Thu, 3 May 2012 12:17:57 +0900
Subject: [PATCH 19/34] added rows per page selector

---
 .../panels/CheckListTemplateDataPanel.html    |  1 +
 .../panels/CheckListTemplateDataPanel.java    | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
index 3d819cb813..e702a6c194 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
@@ -4,6 +4,7 @@
 <body>
 	<wicket:panel>
         <div wicket:id="filterStringPanel"></div>
+        <div>Rows per page: <span wicket:id="numberDropDown"></span></div>
         <table wicket:id="datatable"></table>
 	</wicket:panel>
 </body>
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index 018d2ca0ae..c0431a0f80 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -9,6 +9,7 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.springframework.data.domain.PageRequest;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+import se.su.dsv.scipro.reusable.AjaxDropDown;
 import se.su.dsv.scipro.reusable.FilterStringPanel;
 import se.su.dsv.scipro.springdata.services.ChecklistTemplateService;
 
@@ -27,8 +28,11 @@ public class CheckListTemplateDataPanel extends Panel {
     DataTable<CheckListTemplate> table;
     NavigationToolbar navigationToolbar;
     FilterStringPanel filterStringPanel;
+    Integer number;
+    AjaxDropDown<Integer> numberDropDown;
     ChecklistTemplateProvider checklistTemplateProvider;
 
+
     public CheckListTemplateDataPanel(String id) {
         super(id);
 
@@ -41,6 +45,21 @@ public class CheckListTemplateDataPanel extends Panel {
         };
         add(filterStringPanel);
 
+        number = new Integer(10);
+        ArrayList<Integer> numberList = new ArrayList<Integer>();
+        numberList.add(new Integer(10));
+        numberList.add(new Integer(25));
+        numberList.add(new Integer(100));
+
+        numberDropDown = new AjaxDropDown<Integer>("numberDropDown", new Model<Integer>(number), new Model<ArrayList<Integer>>(numberList)) {
+            @Override
+            public void onNewSelection(AjaxRequestTarget target, Integer objectSelected) {
+                table.setRowsPerPage(objectSelected);
+                target.addComponent(table);
+            }
+        };
+        add(numberDropDown);
+
         IColumn[] columns = new IColumn[2];
 
 //        columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");

From cf49243bd88e7c13bc5b837fc93705a7cad1e104 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Thu, 3 May 2012 14:38:34 +0900
Subject: [PATCH 20/34] cleanup

---
 .../admin/panels/CheckListTemplateDataPanel.java | 16 ----------------
 1 file changed, 16 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index c0431a0f80..fe4f20b24e 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -32,7 +32,6 @@ public class CheckListTemplateDataPanel extends Panel {
     AjaxDropDown<Integer> numberDropDown;
     ChecklistTemplateProvider checklistTemplateProvider;
 
-
     public CheckListTemplateDataPanel(String id) {
         super(id);
 
@@ -61,25 +60,12 @@ public class CheckListTemplateDataPanel extends Panel {
         add(numberDropDown);
 
         IColumn[] columns = new IColumn[2];
-
-//        columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
-//        columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");
-
         columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name");
         columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator");
 
-//        the methods below work too
-//        columns[0] = new PropertyColumn(new Model("Name"), "name", "name");
-//        columns[1] = new PropertyColumn(new Model("Creator"), "creator", "creator");
-//        columns[0] = new PropertyColumn<CheckListTemplate>(new Model("Name"), "name", "name");
-//        columns[1] = new PropertyColumn<CheckListTemplate>(new Model("Creator"), "creator", "creator");
-
         table = new DataTable<CheckListTemplate>("datatable", columns, checklistTemplateProvider =  new ChecklistTemplateProvider(), 10);
         table.setOutputMarkupId(true);
         table.addBottomToolbar(navigationToolbar = new NavigationToolbar(table));
-//        none of these work
-//        table.add(new HeadersToolbar(table));
-//        table.add(new HeadersToolbar(table, null));
         table.addTopToolbar(new HeadersToolbar(table, null));
         add(table);
 
@@ -95,13 +81,11 @@ public class CheckListTemplateDataPanel extends Panel {
 
         @Override
         public Iterator<? extends CheckListTemplate> iterator(int first, int count) {
-//            return checklistTemplateService.findAll(new PageRequest(table.getCurrentPage(), count)).iterator();
             return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), count)).iterator();
         }
 
         @Override
         public int size() {
-//            return safeLongToInt(checklistTemplateService.count());
             return safeLongToInt(checklistTemplateService.count(filterString));
         }
 

From 459775991b04870dc137ae82a9b550ef6a86492b Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Thu, 3 May 2012 17:58:38 +0900
Subject: [PATCH 21/34] sorting link now works with header. but sorting needs
 to be send on to db

---
 .../dsv/scipro/admin/panels/CheckListTemplateDataPanel.java   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index fe4f20b24e..c8acbff9dc 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -60,13 +60,13 @@ public class CheckListTemplateDataPanel extends Panel {
         add(numberDropDown);
 
         IColumn[] columns = new IColumn[2];
-        columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name");
+        columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
         columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator");
 
         table = new DataTable<CheckListTemplate>("datatable", columns, checklistTemplateProvider =  new ChecklistTemplateProvider(), 10);
         table.setOutputMarkupId(true);
         table.addBottomToolbar(navigationToolbar = new NavigationToolbar(table));
-        table.addTopToolbar(new HeadersToolbar(table, null));
+        table.addTopToolbar(new HeadersToolbar(table, checklistTemplateProvider));
         add(table);
 
     }

From d763e39a897cd06850ccab6043738fff8d796669 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Fri, 4 May 2012 12:19:19 +0900
Subject: [PATCH 22/34] added some columns

---
 .../scipro/admin/panels/CheckListTemplateDataPanel.java    | 7 +++++--
 .../su/dsv/scipro/data/dataobjects/ChecklistCategory.java  | 6 +++++-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
index c8acbff9dc..5fe790f3ed 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
@@ -59,9 +59,12 @@ public class CheckListTemplateDataPanel extends Panel {
         };
         add(numberDropDown);
 
-        IColumn[] columns = new IColumn[2];
+        IColumn[] columns = new IColumn[4];
         columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
-        columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator");
+        columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");
+        columns[2] = new PropertyColumn<CheckListTemplate>(Model.of("Categories"), "categories", "categories");
+        columns[3] = new PropertyColumn<CheckListTemplate>(Model.of("Created"), "dateCreated", "dateCreated");
+
 
         table = new DataTable<CheckListTemplate>("datatable", columns, checklistTemplateProvider =  new ChecklistTemplateProvider(), 10);
         table.setOutputMarkupId(true);
diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java
index 2256449158..be55dd8ce9 100644
--- a/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java
+++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java
@@ -83,6 +83,10 @@ public class ChecklistCategory extends DomainObject{
 			return false;
 		return true;
 	}
-	
+
+    @Override
+    public String toString(){
+        return categoryName;
+    }
 	
 }

From 6255f6b7bbcc4fb45da22d93712094733a351fc9 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Fri, 4 May 2012 13:05:46 +0900
Subject: [PATCH 23/34] added clickable column

---
 .../admin/pages/AdminCheckListPage.java       |  4 +-
 .../CheckListTemplateDataPanel.html           |  0
 .../CheckListTemplateDataPanel.java           | 13 +++-
 .../ClickablePropertyColumn$LinkPanel.html    |  3 +
 .../datatables/ClickablePropertyColumn.java   | 67 +++++++++++++++++++
 5 files changed, 82 insertions(+), 5 deletions(-)
 rename src/main/java/se/su/dsv/scipro/{admin/panels => datatables}/CheckListTemplateDataPanel.html (100%)
 rename src/main/java/se/su/dsv/scipro/{admin/panels => datatables}/CheckListTemplateDataPanel.java (90%)
 create mode 100644 src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn$LinkPanel.html
 create mode 100644 src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn.java

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
index 787abf8a33..bd92ee5ea5 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
@@ -2,9 +2,7 @@ package se.su.dsv.scipro.admin.pages;
 
 import org.apache.wicket.PageParameters;
 
-import se.su.dsv.scipro.admin.panels.AdminListCheckListTemplatePanel;
-import se.su.dsv.scipro.admin.panels.CheckListTemplateDataPanel;
-import se.su.dsv.scipro.data.enums.CheckListRole;
+import se.su.dsv.scipro.datatables.CheckListTemplateDataPanel;
 import se.su.dsv.scipro.security.auth.Authorization;
 import se.su.dsv.scipro.security.auth.roles.Roles;
 
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html b/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.html
similarity index 100%
rename from src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.html
rename to src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.html
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
similarity index 90%
rename from src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
rename to src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
index 5fe790f3ed..89ee082762 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
@@ -1,4 +1,4 @@
-package se.su.dsv.scipro.admin.panels;
+package se.su.dsv.scipro.datatables;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.*;
@@ -60,7 +60,16 @@ public class CheckListTemplateDataPanel extends Panel {
         add(numberDropDown);
 
         IColumn[] columns = new IColumn[4];
-        columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
+//        columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
+
+        columns[0] = new ClickablePropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name") {
+
+            @Override
+            protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) {
+                System.out.println(clicked.getObject().getName());
+            }
+        };
+
         columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");
         columns[2] = new PropertyColumn<CheckListTemplate>(Model.of("Categories"), "categories", "categories");
         columns[3] = new PropertyColumn<CheckListTemplate>(Model.of("Created"), "dateCreated", "dateCreated");
diff --git a/src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn$LinkPanel.html b/src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn$LinkPanel.html
new file mode 100644
index 0000000000..e3845b572b
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn$LinkPanel.html
@@ -0,0 +1,3 @@
+<wicket:panel>
+    <a wicket:id="link"><span wicket:id="label"></span></a>
+</wicket:panel>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn.java b/src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn.java
new file mode 100644
index 0000000000..072a57e976
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn.java
@@ -0,0 +1,67 @@
+package se.su.dsv.scipro.datatables;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+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.basic.Label;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.PropertyModel;
+
+/**
+ * Author: fred-fri
+ * Date: 5/4/12
+ */
+public abstract class ClickablePropertyColumn<T> extends AbstractColumn<T> {
+
+    private final String property;
+
+    public ClickablePropertyColumn(IModel<String> displayModel,
+                                   String property) {
+        this(displayModel, property, null);
+    }
+
+    public ClickablePropertyColumn(IModel<String> displayModel,
+                                   String property, String sort) {
+        super(displayModel, sort);
+        this.property = property;
+    }
+
+    public void populateItem(Item<ICellPopulator<T>> cellItem,
+                             String componentId, IModel<T> rowModel) {
+        cellItem.add(new LinkPanel(componentId, rowModel,
+                new PropertyModel<Object>(rowModel, property)));
+    }
+
+    protected abstract void onClick(IModel<T> clicked, AjaxRequestTarget target);
+
+    private class LinkPanel extends Panel {
+        public LinkPanel(String id, IModel<T> rowModel, IModel<?>
+                labelModel) {
+            super(id);
+
+//            Link<T> link = new Link<T>("link", rowModel) {
+//                @Override
+//                public void onClick() {
+//                    ClickablePropertyColumn.this.onClick(getModel());
+//                }
+//            };
+//            add(link);
+//            link.add(new Label("label", labelModel));
+
+            AjaxLink<T> link = new AjaxLink<T>("link", rowModel) {
+                @Override
+                public void onClick(AjaxRequestTarget target) {
+                    ClickablePropertyColumn.this.onClick(getModel(), target);
+                }
+            };
+            add(link);
+            link.add(new Label("label", labelModel));
+
+
+        }
+    }
+}
\ No newline at end of file

From bfcd55a825abf643abb5b5214c7082084ce0657d Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Fri, 4 May 2012 20:46:40 +0900
Subject: [PATCH 24/34] sorting added

---
 .../su/dsv/scipro/datatables/CheckListTemplateDataPanel.java | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
index 89ee082762..5fb2cc1177 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
@@ -8,6 +8,7 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
 import se.su.dsv.scipro.reusable.AjaxDropDown;
 import se.su.dsv.scipro.reusable.FilterStringPanel;
@@ -93,7 +94,9 @@ public class CheckListTemplateDataPanel extends Panel {
 
         @Override
         public Iterator<? extends CheckListTemplate> iterator(int first, int count) {
-            return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), count)).iterator();
+//            Sort(Direction direction, String... properties)
+//            new Sort(Sort.Direction.ASC, "name")
+            return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), count, new Sort(Sort.Direction.ASC, "name"))).iterator();
         }
 
         @Override

From 333d8f49f37ab5ac26eb8a360e284ebe34e62380 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Fri, 4 May 2012 20:59:51 +0900
Subject: [PATCH 25/34] more sorting, but some rows mysteriously disapper. try
 sorting on name and see first meeting disappear when sort order is descending

---
 .../datatables/CheckListTemplateDataPanel.java    | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
index 5fb2cc1177..fc389cafee 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
@@ -72,8 +72,9 @@ public class CheckListTemplateDataPanel extends Panel {
         };
 
         columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");
-        columns[2] = new PropertyColumn<CheckListTemplate>(Model.of("Categories"), "categories", "categories");
-        columns[3] = new PropertyColumn<CheckListTemplate>(Model.of("Created"), "dateCreated", "dateCreated");
+        columns[2] = new PropertyColumn<CheckListTemplate>(Model.of("Categories"), "categories");
+//        columns[3] = new PropertyColumn<CheckListTemplate>(Model.of("Created"), "dateCreated", "dateCreated");
+        columns[3] = new PropertyColumn<CheckListTemplate>(Model.of("Updated"), "lastModified", "lastModified");
 
 
         table = new DataTable<CheckListTemplate>("datatable", columns, checklistTemplateProvider =  new ChecklistTemplateProvider(), 10);
@@ -96,7 +97,15 @@ public class CheckListTemplateDataPanel extends Panel {
         public Iterator<? extends CheckListTemplate> iterator(int first, int count) {
 //            Sort(Direction direction, String... properties)
 //            new Sort(Sort.Direction.ASC, "name")
-            return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), count, new Sort(Sort.Direction.ASC, "name"))).iterator();
+            Sort sort;
+            if (getSort().isAscending()){
+                sort = new Sort(Sort.Direction.ASC, getSort().getProperty());
+            }
+            else {
+                sort = new Sort(Sort.Direction.DESC, getSort().getProperty());
+            }
+//            new Sort(Sort.Direction.ASC, getSort().toString())
+            return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), count, sort)).iterator();
         }
 
         @Override

From 918eeb5c519971c18fc3f2015ab9f6587a5156c8 Mon Sep 17 00:00:00 2001
From: Emil Siverhall <emil-siv@dsv.su.se>
Date: Tue, 8 May 2012 11:01:10 +0200
Subject: [PATCH 26/34] changed iterator count to make pagination works
 properly

---
 .../su/dsv/scipro/datatables/CheckListTemplateDataPanel.java | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
index fc389cafee..b40a403d4e 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
@@ -105,7 +105,10 @@ public class CheckListTemplateDataPanel extends Panel {
                 sort = new Sort(Sort.Direction.DESC, getSort().getProperty());
             }
 //            new Sort(Sort.Direction.ASC, getSort().toString())
-            return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), count, sort)).iterator();
+            
+            //Changed from count to table.getRowsPerPage to make pagination work.
+            //return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), count, sort)).iterator();
+            return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), table.getRowsPerPage(), sort)).iterator();
         }
 
         @Override

From 60660ea844a6af4fcf7ad3fb606065a6b22bf0de Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 9 May 2012 10:03:53 +0900
Subject: [PATCH 27/34] adding up down order functionality

---
 .../admin/pages/AdminCheckListPage.java       |  2 +-
 .../CheckListTemplateDataPanel.html           |  1 +
 .../CheckListTemplateDataPanel.java           | 23 ++++---
 .../ClickableOrderColumn$LinkPanel.html       |  3 +
 .../checklist/ClickableOrderColumn.java       | 68 +++++++++++++++++++
 .../ClickableTitleColumn$LinkPanel.html}      |  0
 .../ClickableTitleColumn.java}                | 17 +++--
 .../services/ChecklistTemplateService.java    |  1 +
 8 files changed, 97 insertions(+), 18 deletions(-)
 rename src/main/java/se/su/dsv/scipro/datatables/{ => checklist}/CheckListTemplateDataPanel.html (85%)
 rename src/main/java/se/su/dsv/scipro/datatables/{ => checklist}/CheckListTemplateDataPanel.java (88%)
 create mode 100644 src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html
 create mode 100644 src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
 rename src/main/java/se/su/dsv/scipro/datatables/{ClickablePropertyColumn$LinkPanel.html => checklist/ClickableTitleColumn$LinkPanel.html} (100%)
 rename src/main/java/se/su/dsv/scipro/datatables/{ClickablePropertyColumn.java => checklist/ClickableTitleColumn.java} (75%)

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
index bd92ee5ea5..9398e28e5b 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
@@ -2,7 +2,7 @@ package se.su.dsv.scipro.admin.pages;
 
 import org.apache.wicket.PageParameters;
 
-import se.su.dsv.scipro.datatables.CheckListTemplateDataPanel;
+import se.su.dsv.scipro.datatables.checklist.CheckListTemplateDataPanel;
 import se.su.dsv.scipro.security.auth.Authorization;
 import se.su.dsv.scipro.security.auth.roles.Roles;
 
diff --git a/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.html b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.html
similarity index 85%
rename from src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.html
rename to src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.html
index e702a6c194..316f72bbb5 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.html
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.html
@@ -3,6 +3,7 @@
 	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
 <body>
 	<wicket:panel>
+        <div>Filter by title or creator:</div>
         <div wicket:id="filterStringPanel"></div>
         <div>Rows per page: <span wicket:id="numberDropDown"></span></div>
         <table wicket:id="datatable"></table>
diff --git a/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
similarity index 88%
rename from src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
rename to src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
index b40a403d4e..213d01ff7c 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
@@ -1,4 +1,4 @@
-package se.su.dsv.scipro.datatables;
+package se.su.dsv.scipro.datatables.checklist;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.*;
@@ -60,21 +60,28 @@ public class CheckListTemplateDataPanel extends Panel {
         };
         add(numberDropDown);
 
-        IColumn[] columns = new IColumn[4];
-//        columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
-
-        columns[0] = new ClickablePropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name") {
+        IColumn[] columns = new IColumn[5];
 
+        columns[0] = new ClickableTitleColumn<CheckListTemplate>(Model.of("Name"), "name", "name") {
             @Override
             protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) {
                 System.out.println(clicked.getObject().getName());
             }
         };
-
         columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");
         columns[2] = new PropertyColumn<CheckListTemplate>(Model.of("Categories"), "categories");
-//        columns[3] = new PropertyColumn<CheckListTemplate>(Model.of("Created"), "dateCreated", "dateCreated");
-        columns[3] = new PropertyColumn<CheckListTemplate>(Model.of("Updated"), "lastModified", "lastModified");
+        columns[3] = new ClickableOrderColumn<CheckListTemplate>(Model.of("Order"), "templateNumber", "templateNumber") {
+            @Override
+            protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target, boolean up) {
+                System.out.println(up);
+                if (up){
+
+                } else {
+
+                }
+            }
+        };
+        columns[4] = new PropertyColumn<CheckListTemplate>(Model.of("Updated"), "lastModified", "lastModified");
 
 
         table = new DataTable<CheckListTemplate>("datatable", columns, checklistTemplateProvider =  new ChecklistTemplateProvider(), 10);
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html
new file mode 100644
index 0000000000..ce482f52b6
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html
@@ -0,0 +1,3 @@
+<wicket:panel>
+    <span wicket:id="label"></span> <a wicket:id="uplink">Up</a> <a wicket:id="downlink">Down</a>
+</wicket:panel>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
new file mode 100644
index 0000000000..56d4290eae
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
@@ -0,0 +1,68 @@
+package se.su.dsv.scipro.datatables.checklist;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+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.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.PropertyModel;
+
+/**
+ * Author: fred-fri
+ * Date: 5/4/12
+ */
+public abstract class ClickableOrderColumn<T> extends AbstractColumn<T> {
+
+    private final String property;
+
+    public ClickableOrderColumn(IModel<String> displayModel,
+                                String property) {
+        this(displayModel, property, null);
+    }
+
+    public ClickableOrderColumn(IModel<String> displayModel,
+                                String property, String sort) {
+        super(displayModel, sort);
+        this.property = property;
+    }
+
+    public void populateItem(Item<ICellPopulator<T>> cellItem,
+                             String componentId, IModel<T> rowModel) {
+        cellItem.add(new LinkPanel(componentId, rowModel,
+                new PropertyModel<Object>(rowModel, property)));
+    }
+
+    protected abstract void onClick(IModel<T> clicked, AjaxRequestTarget target, boolean up);
+
+    private class LinkPanel extends Panel {
+        public LinkPanel(String id, IModel<T> rowModel, IModel<?>
+                labelModel) {
+            super(id);
+
+            add(new Label("label", labelModel));
+
+            AjaxLink<T> uplink = new AjaxLink<T>("uplink", rowModel) {
+                @Override
+                public void onClick(AjaxRequestTarget target) {
+                    ClickableOrderColumn.this.onClick(getModel(), target, true);
+                }
+            };
+            add(uplink);
+//            uplink.add(new Label("label", "Up"));
+
+            AjaxLink<T> downlink = new AjaxLink<T>("downlink", rowModel) {
+                @Override
+                public void onClick(AjaxRequestTarget target) {
+                    ClickableOrderColumn.this.onClick(getModel(), target, false);
+                }
+            };
+            add(downlink);
+//            downlink.add(new Label("label", "Down"));
+
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn$LinkPanel.html b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn$LinkPanel.html
similarity index 100%
rename from src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn$LinkPanel.html
rename to src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn$LinkPanel.html
diff --git a/src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn.java
similarity index 75%
rename from src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn.java
rename to src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn.java
index 072a57e976..ff94edf21d 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/ClickablePropertyColumn.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn.java
@@ -1,11 +1,10 @@
-package se.su.dsv.scipro.datatables;
+package se.su.dsv.scipro.datatables.checklist;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 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.basic.Label;
-import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.model.IModel;
@@ -15,17 +14,17 @@ import org.apache.wicket.model.PropertyModel;
  * Author: fred-fri
  * Date: 5/4/12
  */
-public abstract class ClickablePropertyColumn<T> extends AbstractColumn<T> {
+public abstract class ClickableTitleColumn<T> extends AbstractColumn<T> {
 
     private final String property;
 
-    public ClickablePropertyColumn(IModel<String> displayModel,
-                                   String property) {
+    public ClickableTitleColumn(IModel<String> displayModel,
+                                String property) {
         this(displayModel, property, null);
     }
 
-    public ClickablePropertyColumn(IModel<String> displayModel,
-                                   String property, String sort) {
+    public ClickableTitleColumn(IModel<String> displayModel,
+                                String property, String sort) {
         super(displayModel, sort);
         this.property = property;
     }
@@ -46,7 +45,7 @@ public abstract class ClickablePropertyColumn<T> extends AbstractColumn<T> {
 //            Link<T> link = new Link<T>("link", rowModel) {
 //                @Override
 //                public void onClick() {
-//                    ClickablePropertyColumn.this.onClick(getModel());
+//                    ClickableTitleColumn.this.onClick(getModel());
 //                }
 //            };
 //            add(link);
@@ -55,7 +54,7 @@ public abstract class ClickablePropertyColumn<T> extends AbstractColumn<T> {
             AjaxLink<T> link = new AjaxLink<T>("link", rowModel) {
                 @Override
                 public void onClick(AjaxRequestTarget target) {
-                    ClickablePropertyColumn.this.onClick(getModel(), target);
+                    ClickableTitleColumn.this.onClick(getModel(), target);
                 }
             };
             add(link);
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
index e10284135d..7f81eff83a 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
@@ -13,4 +13,5 @@ public interface ChecklistTemplateService extends CrudService<CheckListTemplate,
     Page<CheckListTemplate> findAll(Pageable pageable);
     Page<CheckListTemplate> find(String filterString, Pageable pageable);
     Long count(String filterString);
+    void upChecklistTemplate(CheckListTemplate checkListTemplate);
 }

From 0dd604593ca28b357e6a4ee683ff48a12365a5da Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 9 May 2012 10:18:41 +0900
Subject: [PATCH 28/34] added order up down functionality

---
 .../checklist/CheckListTemplateDataPanel.java |  6 ++--
 .../repos/ChecklistTemplateRepo.java          |  2 +-
 .../ChecklistTemplateServiceImpl.java         | 34 +++++++++++++++++++
 .../services/ChecklistTemplateService.java    |  1 +
 4 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
index 213d01ff7c..4ee110a917 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
@@ -75,9 +75,11 @@ public class CheckListTemplateDataPanel extends Panel {
             protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target, boolean up) {
                 System.out.println(up);
                 if (up){
-
+                    checklistTemplateService.upChecklistTemplate(clicked.getObject());
+                    target.addComponent(table);
                 } else {
-
+                    checklistTemplateService.downChecklistTemplate(clicked.getObject());
+                    target.addComponent(table);
                 }
             }
         };
diff --git a/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java b/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java
index 2cde2f65fa..bdee65bb50 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java
@@ -12,6 +12,6 @@ import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
 @Transactional(readOnly = true)
 public interface ChecklistTemplateRepo extends JpaRepository<CheckListTemplate, Long>, QueryDslPredicateExecutor<CheckListTemplate> {
 
-    //nothing here yet
+    CheckListTemplate findByTemplateNumber(int templateNumber);
 
 }
diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
index 8f34bc70e1..fb42b2cebd 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
@@ -59,6 +59,40 @@ public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckList
         }
     }
 
+    @Transactional ( readOnly = false )
+    @Override
+    public void upChecklistTemplate(CheckListTemplate checkListTemplate) {
+        //if there is one above
+        if (checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() + 1) !=null){
+            //find the one with value 1 higher
+            CheckListTemplate downChecklistTemplate = checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() + 1);
+            //give that one the one to be upped's value
+            downChecklistTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber());
+            //increase the value of the one to be upped with 1
+            checkListTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber() + 1);
+            //save both
+            checklistTemplateRepo.save(downChecklistTemplate);
+            checklistTemplateRepo.save(checkListTemplate);
+        }
+    }
+
+    @Transactional ( readOnly = false )
+    @Override
+    public void downChecklistTemplate(CheckListTemplate checkListTemplate) {
+        //if there is one below
+        if (checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() -1) != null){
+            //find the one with value 1 lower
+            CheckListTemplate upChecklistTemplate = checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() -1);
+            //give that one the one to be downed's value
+            upChecklistTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber());
+            //decrease the value of the one to be downed with 1
+            checkListTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber() -1);
+            //save both
+            checklistTemplateRepo.save(upChecklistTemplate);
+            checklistTemplateRepo.save(checkListTemplate);
+        }
+    }
+
     private BooleanExpression filterStringIsCreatorName(String filterString){
         return QCheckListTemplate.checkListTemplate.creator.firstName.contains(filterString).or(QCheckListTemplate.checkListTemplate.creator.lastName.contains(filterString));
     }
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
index 7f81eff83a..91b506aee9 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
@@ -14,4 +14,5 @@ public interface ChecklistTemplateService extends CrudService<CheckListTemplate,
     Page<CheckListTemplate> find(String filterString, Pageable pageable);
     Long count(String filterString);
     void upChecklistTemplate(CheckListTemplate checkListTemplate);
+    void downChecklistTemplate(CheckListTemplate checkListTemplate);
 }

From 35b69737a80d3a652a6de05437b646a8c2016d1e Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 9 May 2012 10:22:27 +0900
Subject: [PATCH 29/34] added arrows

---
 .../datatables/checklist/ClickableOrderColumn$LinkPanel.html  | 2 +-
 .../dsv/scipro/datatables/checklist/ClickableOrderColumn.java | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html
index ce482f52b6..7c2c2b640e 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html
@@ -1,3 +1,3 @@
 <wicket:panel>
-    <span wicket:id="label"></span> <a wicket:id="uplink">Up</a> <a wicket:id="downlink">Down</a>
+    <span wicket:id="label"></span> <a wicket:id="uplink"><img wicket:id="up"/></a> <a wicket:id="downlink"><img wicket:id="down"/></a>
 </wicket:panel>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
index 56d4290eae..2451c10762 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
@@ -9,6 +9,7 @@ import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.PropertyModel;
+import se.su.dsv.scipro.icons.ImageObject;
 
 /**
  * Author: fred-fri
@@ -52,6 +53,7 @@ public abstract class ClickableOrderColumn<T> extends AbstractColumn<T> {
             };
             add(uplink);
 //            uplink.add(new Label("label", "Up"));
+            uplink.add(new ImageObject("up", ImageObject.SIXTEEN + ImageObject.UPARROW));
 
             AjaxLink<T> downlink = new AjaxLink<T>("downlink", rowModel) {
                 @Override
@@ -61,7 +63,7 @@ public abstract class ClickableOrderColumn<T> extends AbstractColumn<T> {
             };
             add(downlink);
 //            downlink.add(new Label("label", "Down"));
-
+            downlink.add(new ImageObject("down", ImageObject.SIXTEEN + ImageObject.DOWNARROW));
 
         }
     }

From f3003ad67251bc878dd0725027d097a93f1c0943 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 9 May 2012 10:28:45 +0900
Subject: [PATCH 30/34] buttons look best

---
 .../datatables/checklist/CheckListTemplateDataPanel.java     | 4 +---
 .../datatables/checklist/ClickableOrderColumn$LinkPanel.html | 2 +-
 .../scipro/datatables/checklist/ClickableOrderColumn.java    | 5 -----
 3 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
index 4ee110a917..f148fd1a58 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
@@ -60,7 +60,7 @@ public class CheckListTemplateDataPanel extends Panel {
         };
         add(numberDropDown);
 
-        IColumn[] columns = new IColumn[5];
+        IColumn[] columns = new IColumn[4];
 
         columns[0] = new ClickableTitleColumn<CheckListTemplate>(Model.of("Name"), "name", "name") {
             @Override
@@ -83,8 +83,6 @@ public class CheckListTemplateDataPanel extends Panel {
                 }
             }
         };
-        columns[4] = new PropertyColumn<CheckListTemplate>(Model.of("Updated"), "lastModified", "lastModified");
-
 
         table = new DataTable<CheckListTemplate>("datatable", columns, checklistTemplateProvider =  new ChecklistTemplateProvider(), 10);
         table.setOutputMarkupId(true);
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html
index 7c2c2b640e..40a1d9ccd9 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html
@@ -1,3 +1,3 @@
 <wicket:panel>
-    <span wicket:id="label"></span> <a wicket:id="uplink"><img wicket:id="up"/></a> <a wicket:id="downlink"><img wicket:id="down"/></a>
+    <span wicket:id="label"></span> <button wicket:id="uplink">+</button> <button wicket:id="downlink">-</button>
 </wicket:panel>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
index 2451c10762..e319030b1e 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
@@ -52,8 +52,6 @@ public abstract class ClickableOrderColumn<T> extends AbstractColumn<T> {
                 }
             };
             add(uplink);
-//            uplink.add(new Label("label", "Up"));
-            uplink.add(new ImageObject("up", ImageObject.SIXTEEN + ImageObject.UPARROW));
 
             AjaxLink<T> downlink = new AjaxLink<T>("downlink", rowModel) {
                 @Override
@@ -62,9 +60,6 @@ public abstract class ClickableOrderColumn<T> extends AbstractColumn<T> {
                 }
             };
             add(downlink);
-//            downlink.add(new Label("label", "Down"));
-            downlink.add(new ImageObject("down", ImageObject.SIXTEEN + ImageObject.DOWNARROW));
-
         }
     }
 }
\ No newline at end of file

From 33596b79a2dc08edc1a22ed83907b953a6f85e06 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 9 May 2012 10:33:19 +0900
Subject: [PATCH 31/34] set sort by order by default

---
 .../datatables/checklist/CheckListTemplateDataPanel.java       | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
index f148fd1a58..16e4ec7f85 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
@@ -11,6 +11,7 @@ import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Sort;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
 import se.su.dsv.scipro.reusable.AjaxDropDown;
+import se.su.dsv.scipro.reusable.FilterBooleanPanel;
 import se.su.dsv.scipro.reusable.FilterStringPanel;
 import se.su.dsv.scipro.springdata.services.ChecklistTemplateService;
 
@@ -97,7 +98,7 @@ public class CheckListTemplateDataPanel extends Panel {
         private String filterString;
 
         public ChecklistTemplateProvider() {
-            setSort("name", true);
+            setSort("templateNumber", true);
         }
 
         @Override

From d7ec0d52879886be5f351b2cf86e6f118a0ca862 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 9 May 2012 13:48:14 +0900
Subject: [PATCH 32/34] made panel abstract

---
 .../su/dsv/scipro/admin/pages/AdminCheckListPage.java | 10 +++++++++-
 .../checklist/CheckListTemplateDataPanel.java         | 11 +++++++++--
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
index 9398e28e5b..00ccdcbf3d 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
@@ -2,6 +2,9 @@ package se.su.dsv.scipro.admin.pages;
 
 import org.apache.wicket.PageParameters;
 
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.model.IModel;
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
 import se.su.dsv.scipro.datatables.checklist.CheckListTemplateDataPanel;
 import se.su.dsv.scipro.security.auth.Authorization;
 import se.su.dsv.scipro.security.auth.roles.Roles;
@@ -21,7 +24,12 @@ public class AdminCheckListPage extends AbstractAdminPage {
 		super(pp);
 
 //		add(new AdminListCheckListTemplatePanel("listCLPanel", pp, CheckListRole.ADMIN));
-        add(new CheckListTemplateDataPanel("datapanel"));
+        add(new CheckListTemplateDataPanel("datapanel") {
+            @Override
+            public void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) {
+                System.out.println(clicked.getObject().getCreator());
+            }
+        });
 
 	}
 
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
index 16e4ec7f85..f6fb8754e8 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
@@ -22,11 +22,13 @@ import java.util.Iterator;
  * Author: fred-fri
  * Date: 5/2/12
  */
-public class CheckListTemplateDataPanel extends Panel {
+public abstract class CheckListTemplateDataPanel extends Panel {
 
     @SpringBean
     public ChecklistTemplateService checklistTemplateService;
 
+    CheckListTemplateDataPanel cltdp; //must be kept as a reference to self for abstract method cascading
+
     DataTable<CheckListTemplate> table;
     NavigationToolbar navigationToolbar;
     FilterStringPanel filterStringPanel;
@@ -34,9 +36,13 @@ public class CheckListTemplateDataPanel extends Panel {
     AjaxDropDown<Integer> numberDropDown;
     ChecklistTemplateProvider checklistTemplateProvider;
 
+    public abstract void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target);
+
     public CheckListTemplateDataPanel(String id) {
         super(id);
 
+        cltdp = this;
+
         filterStringPanel = new FilterStringPanel("filterStringPanel") {
             @Override
             public void onUpdateFilter(AjaxRequestTarget target) {
@@ -66,7 +72,8 @@ public class CheckListTemplateDataPanel extends Panel {
         columns[0] = new ClickableTitleColumn<CheckListTemplate>(Model.of("Name"), "name", "name") {
             @Override
             protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) {
-                System.out.println(clicked.getObject().getName());
+//                System.out.println(clicked.getObject().getName());
+                cltdp.onClick(clicked, target);
             }
         };
         columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");

From 9cc6cd4be4adab3d9e60fcc71de9ff202bf209a0 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 9 May 2012 13:51:30 +0900
Subject: [PATCH 33/34] added admin privileges boolean to control visibility of
 components

---
 .../su/dsv/scipro/admin/pages/AdminCheckListPage.java |  2 +-
 .../checklist/CheckListTemplateDataPanel.java         |  4 ++--
 .../datatables/checklist/ClickableOrderColumn.java    | 11 ++++++++---
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
index 00ccdcbf3d..52b3357810 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
@@ -24,7 +24,7 @@ public class AdminCheckListPage extends AbstractAdminPage {
 		super(pp);
 
 //		add(new AdminListCheckListTemplatePanel("listCLPanel", pp, CheckListRole.ADMIN));
-        add(new CheckListTemplateDataPanel("datapanel") {
+        add(new CheckListTemplateDataPanel("datapanel", true) {
             @Override
             public void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) {
                 System.out.println(clicked.getObject().getCreator());
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
index f6fb8754e8..74b20738f2 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
@@ -38,7 +38,7 @@ public abstract class CheckListTemplateDataPanel extends Panel {
 
     public abstract void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target);
 
-    public CheckListTemplateDataPanel(String id) {
+    public CheckListTemplateDataPanel(String id, boolean adminPrivileges) {
         super(id);
 
         cltdp = this;
@@ -78,7 +78,7 @@ public abstract class CheckListTemplateDataPanel extends Panel {
         };
         columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");
         columns[2] = new PropertyColumn<CheckListTemplate>(Model.of("Categories"), "categories");
-        columns[3] = new ClickableOrderColumn<CheckListTemplate>(Model.of("Order"), "templateNumber", "templateNumber") {
+        columns[3] = new ClickableOrderColumn<CheckListTemplate>(Model.of("Order"), "templateNumber", "templateNumber", adminPrivileges) {
             @Override
             protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target, boolean up) {
                 System.out.println(up);
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
index e319030b1e..683882351f 100644
--- a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
@@ -8,6 +8,7 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import se.su.dsv.scipro.icons.ImageObject;
 
@@ -17,17 +18,19 @@ import se.su.dsv.scipro.icons.ImageObject;
  */
 public abstract class ClickableOrderColumn<T> extends AbstractColumn<T> {
 
+    private boolean adminPrivileges;
     private final String property;
 
     public ClickableOrderColumn(IModel<String> displayModel,
-                                String property) {
-        this(displayModel, property, null);
+                                String property, boolean adminPrivileges) {
+        this(displayModel, property, null, adminPrivileges);
     }
 
     public ClickableOrderColumn(IModel<String> displayModel,
-                                String property, String sort) {
+                                String property, String sort, boolean adminPrivileges) {
         super(displayModel, sort);
         this.property = property;
+        this.adminPrivileges = adminPrivileges;
     }
 
     public void populateItem(Item<ICellPopulator<T>> cellItem,
@@ -51,6 +54,7 @@ public abstract class ClickableOrderColumn<T> extends AbstractColumn<T> {
                     ClickableOrderColumn.this.onClick(getModel(), target, true);
                 }
             };
+            uplink.setVisible(adminPrivileges);
             add(uplink);
 
             AjaxLink<T> downlink = new AjaxLink<T>("downlink", rowModel) {
@@ -59,6 +63,7 @@ public abstract class ClickableOrderColumn<T> extends AbstractColumn<T> {
                     ClickableOrderColumn.this.onClick(getModel(), target, false);
                 }
             };
+            downlink.setVisible(adminPrivileges);
             add(downlink);
         }
     }

From aa8c53c2de00508067e8c56c79d9460a3338bfd5 Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 9 May 2012 14:01:34 +0900
Subject: [PATCH 34/34] hooked up edit panel

---
 .../admin/pages/AdminCheckListPage.html       |  4 ++
 .../admin/pages/AdminCheckListPage.java       | 44 +++++++++++++++----
 2 files changed, 39 insertions(+), 9 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html
index 15e8e148a2..24d89c1df7 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html
@@ -8,6 +8,10 @@
 	<wicket:extend>
 		<div class="span-24 last">
 
+            <div wicket:id="dialog">
+                <div wicket:id="editpanel"></div>
+            </div>
+
 				<!--<div wicket:id="listCLPanel"></div>-->
             <div wicket:id="datapanel"></div>
 
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
index 52b3357810..26dc471f3a 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
@@ -3,7 +3,11 @@ package se.su.dsv.scipro.admin.pages;
 import org.apache.wicket.PageParameters;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
 import org.apache.wicket.model.IModel;
+import org.odlabs.wiquery.ui.dialog.Dialog;
+import se.su.dsv.scipro.checklists.panels.FunctionalEditChecklistTemplatePanel;
+import se.su.dsv.scipro.checklists.panels.FunctionalListCheckListTemplatePanel;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
 import se.su.dsv.scipro.datatables.checklist.CheckListTemplateDataPanel;
 import se.su.dsv.scipro.security.auth.Authorization;
@@ -11,26 +15,48 @@ import se.su.dsv.scipro.security.auth.roles.Roles;
 
 /**
  * @author Fredrik Norberg - fnorbe@dsv.su.se
- *
  */
 
-@Authorization(authorizedRoles={Roles.SYSADMIN, Roles.ADMIN})
+@Authorization(authorizedRoles = {Roles.SYSADMIN, Roles.ADMIN})
 public class AdminCheckListPage extends AbstractAdminPage {
-	
 
-	public static final String MAIN_MENU_LABEL = "CheckLists";
-	
-	public AdminCheckListPage(PageParameters pp) {
-		super(pp);
+
+    public static final String MAIN_MENU_LABEL = "CheckLists";
+    private Dialog dialog;
+    private CheckListTemplateDataPanel cltdp;
+
+    public AdminCheckListPage(PageParameters pp) {
+        super(pp);
 
 //		add(new AdminListCheckListTemplatePanel("listCLPanel", pp, CheckListRole.ADMIN));
-        add(new CheckListTemplateDataPanel("datapanel", true) {
+
+
+        dialog = new Dialog("dialog");
+        dialog.setModal(true);
+        dialog.setAutoOpen(false);
+        dialog.setWidth(550);
+        dialog.setHeight(700);
+        dialog.add(new EmptyPanel("editpanel"));
+        add(dialog);
+
+
+        add(cltdp = new CheckListTemplateDataPanel("datapanel", true) {
             @Override
             public void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) {
                 System.out.println(clicked.getObject().getCreator());
+                dialog.replace(new FunctionalEditChecklistTemplatePanel("editpanel", clicked.getObject()) {
+                    @Override
+                    public void onUpdate(AjaxRequestTarget target) {
+                        dialog.close(target);
+                        target.addComponent(cltdp);
+                    }
+                });
+                target.addComponent(dialog);
+                dialog.open(target);
             }
         });
+        cltdp.setOutputMarkupId(true);
 
-	}
+    }
 
 }