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); - } + } }