r130 - in trunk: . bonzoms-ui-zk bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui bonzoms-ui-zk/src/main/webapp
Author: bbrossaud Date: 2010-08-13 17:20:22 +0200 (Fri, 13 Aug 2010) New Revision: 130 Url: http://chorem.org/repositories/revision/bonzoms/130 Log: modification pagination Modified: trunk/bonzoms-ui-zk/pom.xml trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyModel.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractModel.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeModel.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonModel.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ResultController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceModel.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/WikittyModel.java trunk/bonzoms-ui-zk/src/main/webapp/companyPage.zul trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul trunk/bonzoms-ui-zk/src/main/webapp/employeePage.zul trunk/bonzoms-ui-zk/src/main/webapp/personPage.zul trunk/bonzoms-ui-zk/src/main/webapp/resultPage.zul trunk/bonzoms-ui-zk/src/main/webapp/servicePage.zul trunk/pom.xml Modified: trunk/bonzoms-ui-zk/pom.xml =================================================================== --- trunk/bonzoms-ui-zk/pom.xml 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/pom.xml 2010-08-13 15:20:22 UTC (rev 130) @@ -74,6 +74,16 @@ <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + </dependency> + + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> </dependencies> Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyController.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyController.java 2010-08-13 15:20:22 UTC (rev 130) @@ -1,26 +1,3 @@ -/* - * #%L - * Bonzoms : bonzoms-zk - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2010 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ package org.chorem.bonzoms.ui; import java.util.ArrayList; @@ -41,12 +18,15 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.event.ForwardEvent; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Label; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; +import org.zkoss.zul.Paging; import org.zkoss.zul.Window; +import org.zkoss.zul.event.PagingEvent; /** * @@ -54,17 +34,32 @@ */ public class CompanyController extends GenericForwardComposer { + protected final int pageSize = 20; + protected WikittyProxy proxy = ChoremDataProxy.getInstance(); - protected CompanyModel companyModel = new CompanyModel(20); + protected CompanyModel companyModel = new CompanyModel(pageSize); + + protected Paging companyPaging; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Company.EXT_COMPANY).criteria(); + initCompanyModel(); + initPaging(); + } + + protected void initCompanyModel() { + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Company.EXT_COMPANY).criteria(); companyModel.setCriteria(criteria); } - - public void createWindowCompanyForm(String id) throws SuspendNotAllowedException, InterruptedException { + + protected void initPaging() { + companyPaging.setPageSize(pageSize); + int totalSize = companyModel.getTotalSize(); + companyPaging.setTotalSize(totalSize); + } + + protected void createWindowCompanyForm(String id) throws SuspendNotAllowedException, InterruptedException { Map<String, Object> map = new HashMap<String, Object>(); if (id != null) { map.put("companyId", id); @@ -74,7 +69,16 @@ @Override public void onEvent(Event event) throws Exception { - companyModel.reload(); + String id = (String) event.getData(); + Company company = proxy.restore(Company.class, id); + int rowIndex = companyModel.indexOf(company); + if (rowIndex != -1) { + companyModel.reloadContent(rowIndex); + } else { + companyModel.addData(company); + } + int totalSize = companyModel.getTotalSize(); + companyPaging.setTotalSize(totalSize); } }); } @@ -86,6 +90,12 @@ createWindowCompanyForm(null); } + public void onPaging$companyPaging(ForwardEvent event) { + PagingEvent pagingEvent = (PagingEvent) event.getOrigin(); + int activePage = pagingEvent.getActivePage(); + companyModel.setActivePage(activePage); + } + /* * Renderers */ Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyFormController.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyFormController.java 2010-08-13 15:20:22 UTC (rev 130) @@ -273,7 +273,7 @@ company = proxy.store(company); - Events.postEvent(EVENT_ON_SAVE_COMPANY, this.self, company); + Events.postEvent(EVENT_ON_SAVE_COMPANY, this.self, company.getWikittyId()); this.self.detach(); } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyModel.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyModel.java 2010-08-13 15:20:22 UTC (rev 130) @@ -1,31 +1,9 @@ -/* - * #%L - * Bonzoms : bonzoms-zk - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2010 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ package org.chorem.bonzoms.ui; import java.util.ArrayList; import java.util.List; +import org.chorem.bonzoms.ui.ChoremDataProxy; import org.chorem.data.bonzoms.Company; import org.nuiton.wikitty.Criteria; import org.nuiton.wikitty.PagedResult; @@ -34,58 +12,56 @@ import org.zkoss.zul.AbstractListModel; import org.zkoss.zul.event.ListDataEvent; -/** - * - * @author bbrossaud - */ public class CompanyModel extends AbstractListModel implements BindingListModel { protected WikittyProxy proxy = ChoremDataProxy.getInstance(); protected Criteria criteria = null; - protected int itemsByPage = 1; - protected int currentPage = 0; + protected int activePage = 0; + protected int pageSize = 1; protected List<Company> companies = new ArrayList<Company>(); - public CompanyModel(int itemsByPage) { - this.itemsByPage = itemsByPage; + public CompanyModel(int pageSize) { + this.pageSize = pageSize; createList(); } @Override public Object getElementAt(int index) { - pageChange(index); - int indexList = index % itemsByPage; - Company Company = companies.get(indexList); - return Company; + Company company = companies.get(index); + return company; } @Override public int getSize() { - if (criteria == null) { - return 0; - } - Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); - PagedResult<Company> result = proxy.findAllByCriteria(Company.class, criteria); - return result.getNumFound(); + return companies.size(); } @Override public int indexOf(Object obj) { - int index = 0; + int index = -1; String id = ((Company) obj).getWikittyId(); for (Company data : companies) { String dataId = data.getWikittyId(); if (id.equals(dataId)) { - index = companies.indexOf(data) + (itemsByPage * currentPage); + index = companies.indexOf(data); break; } } return index; } + public int getTotalSize() { + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<Company> result = proxy.findAllByCriteria(Company.class, criteria); + return result.getNumFound(); + } + public void addData(Company newData) { - int listSize = companies.size(); - if (listSize < (itemsByPage)) { + int listSize = companies.size(); + if (listSize < (pageSize)) { companies.add(newData); } int size = getSize(); @@ -93,23 +69,21 @@ } public void removeData(Company data) { - int index = companies.indexOf(data); - if (index != -1) { - companies.remove(index); - int interval = index + (itemsByPage * currentPage); + int interval = companies.indexOf(data); + if (interval != -1) { + companies.remove(interval); fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); } } public void reloadContent(int rowIndex) { - int indexList = rowIndex % itemsByPage; - Company Company = companies.get(indexList); - Company = proxy.restore(Company.class, Company.getWikittyId()); + Company company = companies.get(rowIndex); + company = proxy.restore(Company.class, company.getWikittyId()); + companies.set(rowIndex, company); fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); } public void reload() { - createList(); fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } @@ -120,26 +94,24 @@ public void setCriteria(Criteria criteria) { if (criteria != null) { this.criteria = criteria; - reload(); - } - } - - public void pageChange(int index) { - int item = index; - int page = item / itemsByPage; - if (page != currentPage ) { - currentPage = page; + activePage = 0; createList(); } } protected void createList() { if (criteria != null) { - int first = currentPage * itemsByPage; - int end = first + (itemsByPage - 1); + int first = activePage * pageSize; + int end = first + (pageSize - 1); Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); - List<Company> Companies = proxy.findAllByCriteria(Company.class, criteria).getAll(); - this.companies = new ArrayList<Company>(Companies); + List<Company> companies = proxy.findAllByCriteria(Company.class, criteria).getAll(); + this.companies = new ArrayList<Company>(companies); } + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } + + public void setActivePage(int activePage) { + this.activePage = activePage; + createList(); + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractController.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractController.java 2010-08-13 15:20:22 UTC (rev 130) @@ -20,12 +20,15 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.event.ForwardEvent; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; +import org.zkoss.zul.Paging; import org.zkoss.zul.Window; +import org.zkoss.zul.event.PagingEvent; /** * @@ -33,17 +36,34 @@ */ public class ContractController extends GenericForwardComposer { + protected final int pageSize = 20; + protected WikittyProxy proxy = ChoremDataProxy.getInstance(); - protected ContractModel contractModel = new ContractModel(20); + protected ContractModel contractModel = new ContractModel(pageSize); protected Checkbox checkbox1; + + protected Paging contractPaging; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); + initContractModel(); + initPaging(); Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, EmploymentContract.EXT_EMPLOYMENTCONTRACT).criteria(); contractModel.setCriteria(criteria); } + protected void initContractModel() { + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, EmploymentContract.EXT_EMPLOYMENTCONTRACT).criteria(); + contractModel.setCriteria(criteria); + } + + protected void initPaging() { + contractPaging.setPageSize(pageSize); + int totalSize = contractModel.getTotalSize(); + contractPaging.setTotalSize(totalSize); + } + protected void createWindowContractForm(String id) throws InterruptedException { Map<String, Object> map = new HashMap<String, Object>(); if (id != null) { @@ -54,7 +74,16 @@ @Override public void onEvent(Event event) throws Exception { - contractModel.reload(); + String id = (String) event.getData(); + EmploymentContract contract = proxy.restore(EmploymentContract.class, id); + int rowIndex = contractModel.indexOf(contract); + if (rowIndex != -1) { + contractModel.reloadContent(rowIndex); + } else { + contractModel.addData(contract); + } + int totalSize = contractModel.getTotalSize(); + contractPaging.setTotalSize(totalSize); } }); } @@ -143,12 +172,15 @@ } } - public void onCreate$contract(Event event) { - } - public void onClick$newContract() throws SuspendNotAllowedException, InterruptedException { createWindowContractForm(null); } + + public void onPaging$contractPaging(ForwardEvent event) { + PagingEvent pagingEvent = (PagingEvent) event.getOrigin(); + int activePage = pagingEvent.getActivePage(); + contractModel.setActivePage(activePage); + } /* * Getters Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractModel.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractModel.java 2010-08-13 15:20:22 UTC (rev 130) @@ -1,26 +1,3 @@ -/* - * #%L - * Bonzoms : bonzoms-zk - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2010 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * #L% - */ package org.chorem.bonzoms.ui; import java.util.ArrayList; @@ -36,58 +13,58 @@ /** * - * @author sherkhan + * @author bbrossaud */ public class ContractModel extends AbstractListModel implements BindingListModel { protected WikittyProxy proxy = ChoremDataProxy.getInstance(); protected Criteria criteria = null; - protected int itemsByPage = 1; - protected int size = 0; - protected int currentPage = 0; + protected int activePage = 0; + protected int pageSize = 1; protected List<EmploymentContract> contracts = new ArrayList<EmploymentContract>(); - public ContractModel(int itemsByPage) { - this.itemsByPage = itemsByPage; - size = getSize(); + public ContractModel(int pageSize) { + this.pageSize = pageSize; createList(); } @Override public Object getElementAt(int index) { - pageChange(index); - int indexList = index % itemsByPage; - EmploymentContract contract = contracts.get(indexList); + EmploymentContract contract = contracts.get(index); return contract; } @Override public int getSize() { - if (criteria == null) { - return 0; - } - Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); - PagedResult<EmploymentContract> result = proxy.findAllByCriteria(EmploymentContract.class, criteria); - return result.getNumFound(); + return contracts.size(); } @Override public int indexOf(Object obj) { - int index = 0; + int index = -1; String id = ((EmploymentContract) obj).getWikittyId(); for (EmploymentContract data : contracts) { String dataId = data.getWikittyId(); if (id.equals(dataId)) { - index = contracts.indexOf(data) + (itemsByPage * currentPage); + index = contracts.indexOf(data); break; } } return index; } + public int getTotalSize() { + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<EmploymentContract> result = proxy.findAllByCriteria(EmploymentContract.class, criteria); + return result.getNumFound(); + } + public void addData(EmploymentContract newData) { - int listSize = contracts.size(); - if (listSize < (itemsByPage)) { + int listSize = contracts.size(); + if (listSize < (pageSize)) { contracts.add(newData); } int size = getSize(); @@ -95,24 +72,21 @@ } public void removeData(EmploymentContract data) { - int index = contracts.indexOf(data); - if (index != -1) { - contracts.remove(index); - int interval = index + (itemsByPage * currentPage); + int interval = contracts.indexOf(data); + if (interval != -1) { + contracts.remove(interval); fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); } } public void reloadContent(int rowIndex) { - int indexList = rowIndex % itemsByPage; - EmploymentContract contract = contracts.get(indexList); + EmploymentContract contract = contracts.get(rowIndex); contract = proxy.restore(EmploymentContract.class, contract.getWikittyId()); + contracts.set(rowIndex, contract); fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); } public void reload() { - createList(); - size = getSize(); fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } @@ -123,26 +97,24 @@ public void setCriteria(Criteria criteria) { if (criteria != null) { this.criteria = criteria; - reload(); - } - } - - public void pageChange(int index) { - int item = index; - int page = item / itemsByPage; - if (page != currentPage ) { - currentPage = page; + activePage = 0; createList(); } } protected void createList() { if (criteria != null) { - int first = currentPage * itemsByPage; - int end = first + (itemsByPage - 1); + int first = activePage * pageSize; + int end = first + (pageSize - 1); Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); List<EmploymentContract> contracts = proxy.findAllByCriteria(EmploymentContract.class, criteria).getAll(); this.contracts = new ArrayList<EmploymentContract>(contracts); } + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } -} + + public void setActivePage(int activePage) { + this.activePage = activePage; + createList(); + } +} \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeController.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeController.java 2010-08-13 15:20:22 UTC (rev 130) @@ -38,11 +38,14 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.event.ForwardEvent; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; +import org.zkoss.zul.Paging; import org.zkoss.zul.Window; +import org.zkoss.zul.event.PagingEvent; /** * @@ -50,17 +53,32 @@ */ public class EmployeeController extends GenericForwardComposer { + protected final int pageSize = 20; + protected WikittyProxy proxy = ChoremDataProxy.getInstance(); - protected EmployeeModel employeeModel = new EmployeeModel(20); + protected EmployeeModel employeeModel = new EmployeeModel(pageSize); + protected Paging employeePaging; + @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Employee.EXT_EMPLOYEE).criteria(); + initEmployeeModel(); + initPaging(); + } + + protected void initEmployeeModel() { + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Employee.EXT_EMPLOYEE).criteria(); employeeModel.setCriteria(criteria); } - - public void createWindowEmployeeForm(String id) throws SuspendNotAllowedException, InterruptedException { + + protected void initPaging() { + employeePaging.setPageSize(pageSize); + int totalSize = employeeModel.getTotalSize(); + employeePaging.setTotalSize(totalSize); + } + + protected void createWindowEmployeeForm(String id) throws SuspendNotAllowedException, InterruptedException { Map<String, Object> map = new HashMap<String, Object>(); if (id != null) { map.put("employeeId", id); @@ -70,7 +88,16 @@ @Override public void onEvent(Event event) throws Exception { - employeeModel.reload(); + String id = (String) event.getData(); + Employee employee = proxy.restore(Employee.class, id); + int rowIndex = employeeModel.indexOf(employee); + if (rowIndex != -1) { + employeeModel.reloadContent(rowIndex); + } else { + employeeModel.addData(employee); + } + int totalSize = employeeModel.getTotalSize(); + employeePaging.setTotalSize(totalSize); } }); } @@ -124,6 +151,12 @@ public void onClick$newEmployee() throws SuspendNotAllowedException, InterruptedException { createWindowEmployeeForm(null); } + + public void onPaging$employeePaging(ForwardEvent event) { + PagingEvent pagingEvent = (PagingEvent) event.getOrigin(); + int activePage = pagingEvent.getActivePage(); + employeeModel.setActivePage(activePage); + } /* * Getters Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeModel.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmployeeModel.java 2010-08-13 15:20:22 UTC (rev 130) @@ -42,51 +42,52 @@ protected WikittyProxy proxy = ChoremDataProxy.getInstance(); protected Criteria criteria = null; - protected int itemsByPage = 1; - protected int currentPage = 0; + protected int activePage = 0; + protected int pageSize = 1; protected List<Employee> employees = new ArrayList<Employee>(); - public EmployeeModel(int itemsByPage) { - this.itemsByPage = itemsByPage; + public EmployeeModel(int pageSize) { + this.pageSize = pageSize; createList(); } @Override public Object getElementAt(int index) { - pageChange(index); - int indexList = index % itemsByPage; - Employee employee = employees.get(indexList); + Employee employee = employees.get(index); return employee; } @Override public int getSize() { - if (criteria == null) { - return 0; - } - Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); - PagedResult<Employee> result = proxy.findAllByCriteria(Employee.class, criteria); - return result.getNumFound(); + return employees.size(); } @Override public int indexOf(Object obj) { - int index = 0; - Employee employee = (Employee) obj; - String id = employee.getWikittyId(); + int index = -1; + String id = ((Employee) obj).getWikittyId(); for (Employee data : employees) { String dataId = data.getWikittyId(); if (id.equals(dataId)) { - index = employees.indexOf(data) + (itemsByPage * currentPage); + index = employees.indexOf(data); break; } } return index; } + public int getTotalSize() { + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<Employee> result = proxy.findAllByCriteria(Employee.class, criteria); + return result.getNumFound(); + } + public void addData(Employee newData) { - int listSize = employees.size(); - if (listSize < (itemsByPage)) { + int listSize = employees.size(); + if (listSize < (pageSize)) { employees.add(newData); } int size = getSize(); @@ -94,23 +95,21 @@ } public void removeData(Employee data) { - int index = employees.indexOf(data); - if (index != -1) { - employees.remove(index); - int interval = index + (itemsByPage * currentPage); + int interval = employees.indexOf(data); + if (interval != -1) { + employees.remove(interval); fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); } } public void reloadContent(int rowIndex) { - int indexList = rowIndex % itemsByPage; - Employee employee = employees.get(indexList); + Employee employee = employees.get(rowIndex); employee = proxy.restore(Employee.class, employee.getWikittyId()); + employees.set(rowIndex, employee); fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); } public void reload() { - createList(); fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } @@ -121,26 +120,24 @@ public void setCriteria(Criteria criteria) { if (criteria != null) { this.criteria = criteria; - reload(); - } - } - - public void pageChange(int index) { - int item = index; - int page = item / itemsByPage; - if (page != currentPage ) { - currentPage = page; + activePage = 0; createList(); } } protected void createList() { if (criteria != null) { - int first = currentPage * itemsByPage; - int end = first + (itemsByPage - 1); - Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); - List<Employee> employees = proxy.findAllByCriteria(Employee.class, criteria).getAll(); - this.employees = new ArrayList<Employee>(employees); + int first = activePage * pageSize; + int end = first + (pageSize - 1); + Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); + List<Employee> employees = proxy.findAllByCriteria(Employee.class, criteria).getAll(); + this.employees = new ArrayList<Employee>(employees); } + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } + + public void setActivePage(int activePage) { + this.activePage = activePage; + createList(); + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonController.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonController.java 2010-08-13 15:20:22 UTC (rev 130) @@ -40,11 +40,14 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.event.ForwardEvent; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; +import org.zkoss.zul.Paging; import org.zkoss.zul.Window; +import org.zkoss.zul.event.PagingEvent; /** * @@ -52,18 +55,32 @@ */ public class PersonController extends GenericForwardComposer { + protected final int pageSize = 20; + protected WikittyProxy proxy = ChoremDataProxy.getInstance(); + protected PersonModel personModel = new PersonModel(pageSize); + + protected Paging personPaging; - protected PersonModel personModel = new PersonModel(20); - @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Person.EXT_PERSON).criteria(); + initPersonModel(); + initPaging(); + } + + protected void initPersonModel() { + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Person.EXT_PERSON).criteria(); personModel.setCriteria(criteria); } - public void createWindowPersonForm(String id) throws SuspendNotAllowedException, InterruptedException { + protected void initPaging() { + personPaging.setPageSize(pageSize); + int totalSize = personModel.getTotalSize(); + personPaging.setTotalSize(totalSize); + } + + protected void createWindowPersonForm(String id) throws SuspendNotAllowedException, InterruptedException { Map<String, Object> map = new HashMap<String, Object>(); if (id != null) { map.put("personId", id); @@ -73,7 +90,16 @@ @Override public void onEvent(Event event) throws Exception { - personModel.reload(); + String id = (String) event.getData(); + Person person = proxy.restore(Person.class, id); + int rowIndex = personModel.indexOf(person); + if (rowIndex != -1) { + personModel.reloadContent(rowIndex); + } else { + personModel.addData(person); + } + int totalSize = personModel.getTotalSize(); + personPaging.setTotalSize(totalSize); } }); } @@ -85,6 +111,12 @@ createWindowPersonForm(null); } + public void onPaging$personPaging(ForwardEvent event) { + PagingEvent pagingEvent = (PagingEvent) event.getOrigin(); + int activePage = pagingEvent.getActivePage(); + personModel.setActivePage(activePage); + } + /* * Renderers */ Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonModel.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonModel.java 2010-08-13 15:20:22 UTC (rev 130) @@ -19,50 +19,52 @@ protected WikittyProxy proxy = ChoremDataProxy.getInstance(); protected Criteria criteria = null; - protected int itemsByPage = 1; - protected int currentPage = 0; + protected int activePage = 0; + protected int pageSize = 1; protected List<Person> persons = new ArrayList<Person>(); - public PersonModel(int itemsByPage) { - this.itemsByPage = itemsByPage; + public PersonModel(int pageSize) { + this.pageSize = pageSize; createList(); } @Override public Object getElementAt(int index) { - pageChange(index); - int indexList = index % itemsByPage; - Person Person = persons.get(indexList); - return Person; + Person person = persons.get(index); + return person; } @Override public int getSize() { - if (criteria == null) { - return 0; - } - Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); - PagedResult<Person> result = proxy.findAllByCriteria(Person.class, criteria); - return result.getNumFound(); + return persons.size(); } @Override public int indexOf(Object obj) { - int index = 0; + int index = -1; String id = ((Person) obj).getWikittyId(); for (Person data : persons) { String dataId = data.getWikittyId(); if (id.equals(dataId)) { - index = persons.indexOf(data) + (itemsByPage * currentPage); + index = persons.indexOf(data); break; } } return index; } + public int getTotalSize() { + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<Person> result = proxy.findAllByCriteria(Person.class, criteria); + return result.getNumFound(); + } + public void addData(Person newData) { int listSize = persons.size(); - if (listSize < (itemsByPage)) { + if (listSize < (pageSize)) { persons.add(newData); } int size = getSize(); @@ -70,23 +72,21 @@ } public void removeData(Person data) { - int index = persons.indexOf(data); - if (index != -1) { - persons.remove(index); - int interval = index + (itemsByPage * currentPage); + int interval = persons.indexOf(data); + if (interval != -1) { + persons.remove(interval); fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); } } public void reloadContent(int rowIndex) { - int indexList = rowIndex % itemsByPage; - Person Person = persons.get(indexList); - Person = proxy.restore(Person.class, Person.getWikittyId()); + Person person = persons.get(rowIndex); + person = proxy.restore(Person.class, person.getWikittyId()); + persons.set(rowIndex, person); fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); } public void reload() { - createList(); fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } @@ -97,26 +97,24 @@ public void setCriteria(Criteria criteria) { if (criteria != null) { this.criteria = criteria; - reload(); - } - } - - public void pageChange(int index) { - int item = index; - int page = item / itemsByPage; - if (page != currentPage ) { - currentPage = page; + activePage = 0; createList(); } } protected void createList() { if (criteria != null) { - int first = currentPage * itemsByPage; - int end = first + (itemsByPage - 1); + int first = activePage * pageSize; + int end = first + (pageSize - 1); Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); List<Person> persons = proxy.findAllByCriteria(Person.class, criteria).getAll(); this.persons = new ArrayList<Person>(persons); } + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } + + public void setActivePage(int activePage) { + this.activePage = activePage; + createList(); + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ResultController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ResultController.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ResultController.java 2010-08-13 15:20:22 UTC (rev 130) @@ -49,12 +49,16 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.event.ForwardEvent; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Label; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; +import org.zkoss.zul.Paging; import org.zkoss.zul.Toolbarbutton; +import org.zkoss.zul.Window; +import org.zkoss.zul.event.PagingEvent; /** * @@ -62,8 +66,12 @@ */ public class ResultController extends GenericForwardComposer { + protected final int pageSize = 10; + protected WikittyProxy proxy = ChoremDataProxy.getInstance(); - protected WikittyModel wikittyModel = new WikittyModel(10); + protected WikittyModel wikittyModel = new WikittyModel(pageSize); + + protected Paging wikittyPaging; @Override public void doAfterCompose(Component comp) throws Exception { @@ -72,6 +80,7 @@ Criteria criteria = getCriteriaBySearch(str); wikittyModel.setCriteria(criteria); + initPaging(); } protected Criteria getCriteriaBySearch(String str) { @@ -87,13 +96,35 @@ Criteria criteria = search.criteria(); return criteria; } + + protected void initPaging() { + wikittyPaging.setPageSize(pageSize); + int totalSize = wikittyModel.getTotalSize(); + wikittyPaging.setTotalSize(totalSize); + } - protected void createEmploymentContractPage(String id) throws SuspendNotAllowedException, InterruptedException { + protected void createEmploymentContractPage(String id) throws SuspendNotAllowedException, InterruptedException { Map<String, Object> map = new HashMap<String, Object>(); if (id != null) { map.put("contractId", id); } - Executions.createComponents("contractFormPage.zul", null, map); + Window win = (Window) Executions.createComponents("contractFormPage.zul", null, map); + win.addEventListener(ContractFormController.EVENT_ON_SAVE_CONTRACT, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + String id = (String) event.getData(); + Wikitty wikitty = proxy.restore(id); + int rowIndex = wikittyModel.indexOf(wikitty); + if (rowIndex != -1) { + wikittyModel.reloadContent(rowIndex); + } else { + wikittyModel.addData(wikitty); + } + int totalSize = wikittyModel.getTotalSize(); + wikittyPaging.setTotalSize(totalSize); + } + }); } protected void createPersonPage(String id) throws SuspendNotAllowedException, InterruptedException { @@ -101,7 +132,23 @@ if (id != null) { map.put("personId", id); } - Executions.createComponents("personFormPage.zul", null, map); + Window win = (Window) Executions.createComponents("personFormPage.zul", null, map); + win.addEventListener(PersonFormController.EVENT_ON_SAVE_PERSON, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + String id = (String) event.getData(); + Wikitty wikitty = proxy.restore(id); + int rowIndex = wikittyModel.indexOf(wikitty); + if (rowIndex != -1) { + wikittyModel.reloadContent(rowIndex); + } else { + wikittyModel.addData(wikitty); + } + int totalSize = wikittyModel.getTotalSize(); + wikittyPaging.setTotalSize(totalSize); + } + }); } protected void createEmployeePage(String id) throws SuspendNotAllowedException, InterruptedException { @@ -109,7 +156,23 @@ if (id != null) { map.put("employeeId", id); } - Executions.createComponents("employeeFormPage.zul", null, map); + Window win = (Window) Executions.createComponents("employeeFormPage.zul", null, map); + win.addEventListener(EmployeeFormController.EVENT_ON_SAVE_EMPLOYEE, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + String id = (String) event.getData(); + Wikitty wikitty = proxy.restore(id); + int rowIndex = wikittyModel.indexOf(wikitty); + if (rowIndex != -1) { + wikittyModel.reloadContent(rowIndex); + } else { + wikittyModel.addData(wikitty); + } + int totalSize = wikittyModel.getTotalSize(); + wikittyPaging.setTotalSize(totalSize); + } + }); } protected void createAddressPage(String id) throws SuspendNotAllowedException, InterruptedException { @@ -117,7 +180,23 @@ if (id != null) { map.put("addressId", id); } - Executions.createComponents("addressFormPage.zul", null, map); + Window win = (Window) Executions.createComponents("addressFormPage.zul", null, map); + win.addEventListener(AddressFormController.EVENT_ON_SAVE_ADDRESS, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + String id = (String) event.getData(); + Wikitty wikitty = proxy.restore(id); + int rowIndex = wikittyModel.indexOf(wikitty); + if (rowIndex != -1) { + wikittyModel.reloadContent(rowIndex); + } else { + wikittyModel.addData(wikitty); + } + int totalSize = wikittyModel.getTotalSize(); + wikittyPaging.setTotalSize(totalSize); + } + }); } protected void createServicePage(String id) throws SuspendNotAllowedException, InterruptedException { @@ -125,7 +204,23 @@ if (id != null) { map.put("serviceId", id); } - Executions.createComponents("serviceFormPage.zul", null, map); + Window win = (Window) Executions.createComponents("serviceFormPage.zul", null, map); + win.addEventListener(ServiceFormController.EVENT_ON_SAVE_SERVICE, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + String id = (String) event.getData(); + Wikitty wikitty = proxy.restore(id); + int rowIndex = wikittyModel.indexOf(wikitty); + if (rowIndex != -1) { + wikittyModel.reloadContent(rowIndex); + } else { + wikittyModel.addData(wikitty); + } + int totalSize = wikittyModel.getTotalSize(); + wikittyPaging.setTotalSize(totalSize); + } + }); } protected void createCompanyPage(String id) throws SuspendNotAllowedException, InterruptedException { @@ -133,7 +228,23 @@ if (id != null) { map.put("companyId", id); } - Executions.createComponents("companyFormPage.zul", null, map); + Window win = (Window) Executions.createComponents("companyFormPage.zul", null, map); + win.addEventListener(CompanyFormController.EVENT_ON_SAVE_COMPANY, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + String id = (String) event.getData(); + Wikitty wikitty = proxy.restore(id); + int rowIndex = wikittyModel.indexOf(wikitty); + if (rowIndex != -1) { + wikittyModel.reloadContent(rowIndex); + } else { + wikittyModel.addData(wikitty); + } + int totalSize = wikittyModel.getTotalSize(); + wikittyPaging.setTotalSize(totalSize); + } + }); } protected void createPageByWikitty(Wikitty wikitty) throws SuspendNotAllowedException, InterruptedException { @@ -158,6 +269,12 @@ * Events */ + public void onPaging$wikittyPaging(ForwardEvent event) { + PagingEvent pagingEvent = (PagingEvent) event.getOrigin(); + int activePage = pagingEvent.getActivePage(); + wikittyModel.setActivePage(activePage); + } + /* * Renderers */ Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceController.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceController.java 2010-08-13 15:20:22 UTC (rev 130) @@ -14,12 +14,15 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.event.ForwardEvent; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Label; import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; +import org.zkoss.zul.Paging; import org.zkoss.zul.Window; +import org.zkoss.zul.event.PagingEvent; /** * @@ -27,17 +30,31 @@ */ public class ServiceController extends GenericForwardComposer { + protected final int pageSize = 20; + protected WikittyProxy proxy = ChoremDataProxy.getInstance(); + protected ServiceModel serviceModel = new ServiceModel(pageSize); + + protected Paging servicePaging; - protected ServiceModel serviceModel = new ServiceModel(20); - @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); - Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Service.EXT_SERVICE).criteria(); + initServiceModel(); + initPaging(); + } + + protected void initServiceModel() { + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Service.EXT_SERVICE).criteria(); serviceModel.setCriteria(criteria); } - + + protected void initPaging() { + servicePaging.setPageSize(pageSize); + int totalSize = serviceModel.getTotalSize(); + servicePaging.setTotalSize(totalSize); + } + public void createWindowServiceForm(String id) throws SuspendNotAllowedException, InterruptedException { Map<String, Object> map = new HashMap<String, Object>(); if (id != null) { @@ -48,7 +65,16 @@ @Override public void onEvent(Event event) throws Exception { - serviceModel.reload(); + String id = (String) event.getData(); + Service service = proxy.restore(Service.class, id); + int rowIndex = serviceModel.indexOf(service); + if (rowIndex != -1) { + serviceModel.reloadContent(rowIndex); + } else { + serviceModel.addData(service); + } + int totalSize = serviceModel.getTotalSize(); + servicePaging.setTotalSize(totalSize); } }); } @@ -72,6 +98,12 @@ createWindowServiceForm(null); } + public void onPaging$servicePaging(ForwardEvent event) { + PagingEvent pagingEvent = (PagingEvent) event.getOrigin(); + int activePage = pagingEvent.getActivePage(); + serviceModel.setActivePage(activePage); + } + /* * Renderers */ Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceModel.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ServiceModel.java 2010-08-13 15:20:22 UTC (rev 130) @@ -19,50 +19,52 @@ protected WikittyProxy proxy = ChoremDataProxy.getInstance(); protected Criteria criteria = null; - protected int itemsByPage = 1; - protected int currentPage = 0; + protected int activePage = 0; + protected int pageSize = 1; protected List<Service> services = new ArrayList<Service>(); - public ServiceModel(int itemsByPage) { - this.itemsByPage = itemsByPage; + public ServiceModel(int pageSize) { + this.pageSize = pageSize; createList(); } @Override public Object getElementAt(int index) { - pageChange(index); - int indexList = index % itemsByPage; - Service Service = services.get(indexList); - return Service; + Service service = services.get(index); + return service; } @Override public int getSize() { - if (criteria == null) { - return 0; - } - Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); - PagedResult<Service> result = proxy.findAllByCriteria(Service.class, criteria); - return result.getNumFound(); + return services.size(); } @Override public int indexOf(Object obj) { - int index = 0; + int index = -1; String id = ((Service) obj).getWikittyId(); for (Service data : services) { String dataId = data.getWikittyId(); if (id.equals(dataId)) { - index = services.indexOf(data) + (itemsByPage * currentPage); + index = services.indexOf(data); break; } } return index; } + public int getTotalSize() { + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<Service> result = proxy.findAllByCriteria(Service.class, criteria); + return result.getNumFound(); + } + public void addData(Service newData) { - int listSize = services.size(); - if (listSize < (itemsByPage)) { + int listSize = services.size(); + if (listSize < (pageSize)) { services.add(newData); } int size = getSize(); @@ -70,23 +72,21 @@ } public void removeData(Service data) { - int index = services.indexOf(data); - if (index != -1) { - services.remove(index); - int interval = index + (itemsByPage * currentPage); + int interval = services.indexOf(data); + if (interval != -1) { + services.remove(interval); fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); } } public void reloadContent(int rowIndex) { - int indexList = rowIndex % itemsByPage; - Service Service = services.get(indexList); - Service = proxy.restore(Service.class, Service.getWikittyId()); + Service service = services.get(rowIndex); + service = proxy.restore(Service.class, service.getWikittyId()); + services.set(rowIndex, service); fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); } public void reload() { - createList(); fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } @@ -97,26 +97,24 @@ public void setCriteria(Criteria criteria) { if (criteria != null) { this.criteria = criteria; - reload(); - } - } - - public void pageChange(int index) { - int item = index; - int page = item / itemsByPage; - if (page != currentPage ) { - currentPage = page; + activePage = 0; createList(); } } protected void createList() { if (criteria != null) { - int first = currentPage * itemsByPage; - int end = first + (itemsByPage - 1); + int first = activePage * pageSize; + int end = first + (pageSize - 1); Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); - List<Service> Services = proxy.findAllByCriteria(Service.class, criteria).getAll(); - this.services = new ArrayList<Service>(Services); + List<Service> services = proxy.findAllByCriteria(Service.class, criteria).getAll(); + this.services = new ArrayList<Service>(services); } + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } + + public void setActivePage(int activePage) { + this.activePage = activePage; + createList(); + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/WikittyModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/WikittyModel.java 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/WikittyModel.java 2010-08-13 15:20:22 UTC (rev 130) @@ -7,7 +7,6 @@ import org.nuiton.wikitty.PagedResult; import org.nuiton.wikitty.Wikitty; import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.WikittyService; import org.zkoss.zkplus.databind.BindingListModel; import org.zkoss.zul.AbstractListModel; import org.zkoss.zul.event.ListDataEvent; @@ -20,52 +19,52 @@ protected WikittyProxy proxy = ChoremDataProxy.getInstance(); protected Criteria criteria = null; - protected int itemsByPage = 1; - protected int currentPage = 0; + protected int activePage = 0; + protected int pageSize = 1; protected List<Wikitty> wikitties = new ArrayList<Wikitty>(); - public WikittyModel(int itemsByPage) { - this.itemsByPage = itemsByPage; + public WikittyModel(int pageSize) { + this.pageSize = pageSize; createList(); } @Override public Object getElementAt(int index) { - pageChange(index); - int indexList = index % itemsByPage; - Wikitty Wikitty = wikitties.get(indexList); - return Wikitty; + Wikitty wikitty = wikitties.get(index); + return wikitty; } @Override public int getSize() { - if (criteria == null) { - return 0; - } - Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); - WikittyService service = proxy.getWikittyService(); - String securityToken = proxy.getSecurityToken(); - PagedResult<?> result = service.findAllByCriteria(securityToken, criteria); - return result.getNumFound(); + return wikitties.size(); } @Override public int indexOf(Object obj) { - int index = 0; + int index = -1; String id = ((Wikitty) obj).getId(); for (Wikitty data : wikitties) { String dataId = data.getId(); if (id.equals(dataId)) { - index = wikitties.indexOf(data) + (itemsByPage * currentPage); + index = wikitties.indexOf(data); break; } } return index; } + public int getTotalSize() { + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<Wikitty> result = proxy.findAllByCriteria(criteria); + return result.getNumFound(); + } + public void addData(Wikitty newData) { - int listSize = wikitties.size(); - if (listSize < (itemsByPage)) { + int listSize = wikitties.size(); + if (listSize < (pageSize)) { wikitties.add(newData); } int size = getSize(); @@ -73,25 +72,21 @@ } public void removeData(Wikitty data) { - int index = wikitties.indexOf(data); - if (index != -1) { - wikitties.remove(index); - int interval = index + (itemsByPage * currentPage); + int interval = wikitties.indexOf(data); + if (interval != -1) { + wikitties.remove(interval); fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); } } public void reloadContent(int rowIndex) { - int indexList = rowIndex % itemsByPage; - Wikitty wikitty = wikitties.get(indexList); - WikittyService service = proxy.getWikittyService(); - String securityToken = proxy.getSecurityToken(); - wikitty = service.restore(securityToken, wikitty.getId()); + Wikitty wikitty = wikitties.get(rowIndex); + wikitty = proxy.restore(wikitty.getId()); + wikitties.set(rowIndex, wikitty); fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); } public void reload() { - createList(); fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } @@ -102,28 +97,24 @@ public void setCriteria(Criteria criteria) { if (criteria != null) { this.criteria = criteria; - reload(); - } - } - - public void pageChange(int index) { - int item = index; - int page = item / itemsByPage; - if (page != currentPage ) { - currentPage = page; + activePage = 0; createList(); } } protected void createList() { if (criteria != null) { - int first = currentPage * itemsByPage; - int end = first + (itemsByPage - 1); + int first = activePage * pageSize; + int end = first + (pageSize - 1); Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); - WikittyService service = proxy.getWikittyService(); - String securityToken = proxy.getSecurityToken(); - PagedResult<?> result = service.findAllByCriteria(securityToken, criteria); - this.wikitties = new ArrayList<Wikitty>(result.cast(securityToken, service).getAll()); + List<Wikitty> wikitties = proxy.findAllByCriteria(criteria).getAll(); + this.wikitties = new ArrayList<Wikitty>(wikitties); } + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); } + + public void setActivePage(int activePage) { + this.activePage = activePage; + createList(); + } } Modified: trunk/bonzoms-ui-zk/src/main/webapp/companyPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/companyPage.zul 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/webapp/companyPage.zul 2010-08-13 15:20:22 UTC (rev 130) @@ -4,7 +4,7 @@ <window id="company" apply="org.chorem.bonzoms.ui.CompanyController"> Companies: <toolbarbutton id="newCompany" label="Add new company" /> - <listbox autopaging="true" mold="paging" id="companyListBox" rows="20" model="@{company$composer.companyModel}" + <listbox id="companyListBox" rows="20" model="@{company$composer.companyModel}" itemRenderer="@{company$composer.companyRenderer}"> <listhead> <listheader label="Name" /> @@ -15,4 +15,5 @@ <listheader label="Type" /> </listhead> </listbox> + <paging id="companyPaging" /> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul 2010-08-13 15:20:22 UTC (rev 130) @@ -5,7 +5,7 @@ <window id="contract" apply="org.chorem.bonzoms.ui.ContractController"> Contracts: <toolbarbutton id="newContract" label="Add new contract" /> <checkbox id="checkbox1" label="Hide out of date contracts" /> - <listbox autopaging="true" mold="paging" id="contractListBox" rows="20" model="@{contract$composer.contractModel}" + <listbox id="contractListBox" rows="20" model="@{contract$composer.contractModel}" itemRenderer="@{contract$composer.contractRenderer}"> <listhead> <listheader label="Person name" /> @@ -18,4 +18,5 @@ <listheader label="End date" /> </listhead> </listbox> + <paging id="contractPaging" /> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/employeePage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/employeePage.zul 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/webapp/employeePage.zul 2010-08-13 15:20:22 UTC (rev 130) @@ -4,7 +4,7 @@ <window id="employee" apply="org.chorem.bonzoms.ui.EmployeeController"> Employees: <toolbarbutton id="newEmployee" label="Add new employee" /> - <listbox autopaging="true" mold="paging" id="employeeListbox" rows="20" model="@{employee$composer.employeeModel}" + <listbox id="employeeListbox" rows="20" model="@{employee$composer.employeeModel}" itemRenderer="@{employee$composer.employeeRenderer}"> <listhead> <listheader label="First name" /> @@ -13,4 +13,5 @@ <listheader label="Working phone" /> </listhead> </listbox> + <paging id="employeePaging" /> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/personPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/personPage.zul 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/webapp/personPage.zul 2010-08-13 15:20:22 UTC (rev 130) @@ -4,7 +4,7 @@ <window id="person" apply="org.chorem.bonzoms.ui.PersonController"> Persons: <toolbarbutton id="newPerson" label="Add new person" /> - <listbox autopaging="true" mold="paging" id="personListBox" rows="20" model="@{person$composer.personModel}" + <listbox id="personListBox" rows="20" model="@{person$composer.personModel}" itemRenderer="@{person$composer.personRenderer}"> <listhead> <listheader label="First name" /> @@ -12,4 +12,5 @@ <listheader label="Birthday" /> </listhead> </listbox> + <paging id="personPaging" /> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/resultPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/resultPage.zul 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/webapp/resultPage.zul 2010-08-13 15:20:22 UTC (rev 130) @@ -3,7 +3,7 @@ <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./result"?> <window id="result" apply="org.chorem.bonzoms.ui.ResultController"> - <listbox autopaging="true" mold="paging" id="wikittyListBox" rows="10" model="@{result$composer.wikittyModel}" + <listbox id="wikittyListBox" rows="10" model="@{result$composer.wikittyModel}" itemRenderer="@{result$composer.wikittyRenderer}"> <listhead> <listheader label="Extensions" /> @@ -11,4 +11,5 @@ <listheader label="Dependances" /> </listhead> </listbox> + <paging id="wikittyPaging" /> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/servicePage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/servicePage.zul 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/bonzoms-ui-zk/src/main/webapp/servicePage.zul 2010-08-13 15:20:22 UTC (rev 130) @@ -11,4 +11,5 @@ <listheader label="Address" /> </listhead> </listbox> + <paging id="servicePaging" /> </window> \ No newline at end of file Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2010-08-13 12:15:16 UTC (rev 129) +++ trunk/pom.xml 2010-08-13 15:20:22 UTC (rev 130) @@ -100,6 +100,12 @@ <artifactId>data-bonzoms</artifactId> <version>${chorem-data.version}</version> </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + <version>${nuiton-utils.version}</version> + </dependency> <dependency> <groupId>jasperreports</groupId> @@ -149,6 +155,7 @@ <artifactId>wikitty-jdbc-impl</artifactId> <version>${wikitty.version}</version> </dependency> + <dependency> <groupId>com.h2database</groupId> @@ -229,11 +236,12 @@ <!-- Nuiton librairies --> <topia.version>2.2.0</topia.version> <generator.version>1.0.0</generator.version> + <nuiton-utils.version>1.3.2-SNAPSHOT</nuiton-utils.version> <!-- ChoReg --> <choreg.version>1.0.0-alpha-2-SNAPSHOT</choreg.version> <!-- commons-lang for ToPIA --> - <lang.version>2.4</lang.version> + <lang.version>2.5</lang.version> <!-- Hibernate for ToPIA --> <hibernate.version>3.3.1.GA</hibernate.version>
participants (1)
-
bbrossaudï¼ users.chorem.org