Author: bbrossaud Date: 2010-08-19 18:58:08 +0200 (Thu, 19 Aug 2010) New Revision: 133 Url: http://chorem.org/repositories/revision/bonzoms/133 Log: addition macro Added: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemListboxMacro.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ProjectBandboxMacro.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ProjectModel.java trunk/bonzoms-ui-zk/src/main/webapp/exportReportItemFormPage.zul trunk/bonzoms-ui-zk/src/main/webapp/macros/exportReportItemListboxMacro.zul trunk/bonzoms-ui-zk/src/main/webapp/macros/projectBandboxMacro.zul Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemModel.java trunk/bonzoms-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml trunk/bonzoms-ui-zk/src/main/webapp/exportReportFormPage.zul trunk/bonzoms-ui-zk/src/main/webapp/exportReportPage.zul Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportController.java 2010-08-18 15:17:57 UTC (rev 132) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportController.java 2010-08-19 16:58:08 UTC (rev 133) @@ -36,6 +36,7 @@ protected ExportReportModel exportReportModel = new ExportReportModel(pageSize); protected Paging exportReportPaging; + protected ExportReportItemListboxMacro exportReportItemListboxMacro; @Override public void doAfterCompose(Component comp) throws Exception { @@ -164,6 +165,14 @@ createWindowExportReportForm(exportReport.getWikittyId()); } }); + + item.addEventListener(Events.ON_CLICK, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + exportReportItemListboxMacro.setExportReportId(exportReport.getWikittyId()); + } + }); } }; } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportFormController.java 2010-08-18 15:17:57 UTC (rev 132) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportFormController.java 2010-08-19 16:58:08 UTC (rev 133) @@ -1,45 +1,23 @@ package org.chorem.bonzoms.ui; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - import org.chorem.data.bonzoms.ExportReport; import org.chorem.data.bonzoms.ExportReportImpl; -import org.chorem.data.bonzoms.ExportReportItem; -import org.chorem.data.bonzoms.ExportReportItemImpl; -import org.nuiton.wikitty.Criteria; import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.search.Search; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; -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.util.GenericForwardComposer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.DataBinder; -import org.zkoss.zul.Datebox; -import org.zkoss.zul.Doublebox; -import org.zkoss.zul.Listbox; -import org.zkoss.zul.Listcell; -import org.zkoss.zul.Listitem; -import org.zkoss.zul.ListitemRenderer; import org.zkoss.zul.Window; -import org.zkoss.zul.api.Textbox; public class ExportReportFormController extends GenericForwardComposer { protected WikittyProxy proxy = ChoremDataProxy.getInstance(); - protected ExportReport exportReport = new ExportReportImpl(); - protected ExportReportItemModel itemsModel = new ExportReportItemModel(); - protected ExportReportItem selectedItem = null; - protected List<String> removedItems = new ArrayList<String>(); + + protected PersonBandboxMacro personBandboxMacro; - protected Listbox itemListbox; - public static final String EVENT_ON_SAVE_EXPORTREPORT = "onSaveExportReport"; @Override @@ -58,177 +36,31 @@ binder.loadAll(); } - protected void init(String exportReportId) { - if (exportReportId == null) { - initDefaultExportReport(); - } else { - initExportReport(exportReportId); + protected void init(String id) { + if (id != null) { + ExportReport tmp = proxy.restore(ExportReport.class, id); + if (tmp != null) { + exportReport = tmp; + } } + personBandboxMacro.setPersonId(exportReport.getPerson()); } - protected void initDefaultExportReport() { - ExportReportItem item = newItem(); - itemsModel.addData(item); - selectedItem = item; - } - - protected void initExportReport(String id) { - exportReport = proxy.restore(ExportReport.class, id); - Criteria criteria = Search.query().eq(ExportReportItem.FQ_FIELD_EXPORTREPORTITEM_EXPORTREPORT, id).criteria(); - List<ExportReportItem> items = proxy.findAllByCriteria(ExportReportItem.class, criteria).getAll(); - items = new ArrayList<ExportReportItem>(items); - if (items.size() == 0) { - ExportReportItem item = newItem(); - items.add(item); - } - selectedItem = items.get(0); - itemsModel.setItems(items); - } - - protected ExportReportItem newItem() { - ExportReportItem item = new ExportReportItemImpl(); - item.setCompany(""); - item.setDate(new Date()); - return item; - } - - protected void saveItems() { - List<ExportReportItem> items = itemsModel.getItems(); - for (ExportReportItem item : items) { - item.setExportReport(exportReport.getWikittyId()); - } - proxy.store(items); - proxy.delete(removedItems); - } - - protected void setItemBox() { - Textbox textbox = (Textbox) self.getFellow("exportReportJustifyNumber"); - textbox.setValue(selectedItem.getJustifyNumber()); - - Doublebox doublebox = (Doublebox) self.getFellow("exportReportHTAmount"); - doublebox.setValue(selectedItem.getHTAmount()); - - doublebox = (Doublebox) self.getFellow("exportReportTTCAmount"); - doublebox.setValue(selectedItem.getTTCAmount()); - - doublebox = (Doublebox) self.getFellow("exportReportTVA"); - doublebox.setValue(selectedItem.getTVA()); - - Datebox datebox = (Datebox) self.getFellow("exportReportDate"); - datebox.setValue(selectedItem.getDate()); - } - - protected Listcell getDateCell(Date date) { - Listcell cell = new Listcell(); - if (date != null) { - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - String label = sdf.format(date); - cell.setLabel(label); - } - return cell; - } - - protected Listcell getJustifyNumberCell(String number) { - Listcell cell = new Listcell(); - if (number != null) { - cell.setLabel(number); - } - return cell; - } - /* - * Renderers - */ - public ListitemRenderer getExportReportItemRenderer() { - return new ListitemRenderer() { - - @Override - public void render(Listitem item, Object data) throws Exception { - item.setValue(data); - final ExportReportItem exportReportitem = (ExportReportItem) data; - - Listcell date = getDateCell(exportReportitem.getDate()); - item.appendChild(date); - - Listcell justifyNumber = getJustifyNumberCell(exportReportitem.getJustifyNumber()); - item.appendChild(justifyNumber); - - Listcell HT = new Listcell(String.valueOf(exportReportitem.getHTAmount())); - item.appendChild(HT); - - Listcell TVA = new Listcell(String.valueOf(exportReportitem.getTVA())); - item.appendChild(TVA); - - Listcell TTC = new Listcell(String.valueOf(exportReportitem.getTTCAmount())); - item.appendChild(TTC); - - item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { - - @Override - public void onEvent(Event event) throws Exception { - selectedItem = exportReportitem; - setItemBox(); - } - }); - } - }; - } - - /* * Events */ - public void onClick$saveItem() { - if (selectedItem != null) { - int rowIndex = itemsModel.indexOf(selectedItem); - itemsModel.reloadContent(rowIndex); - } - } - public void onClick$saveExportReport() { + String id = personBandboxMacro.getPersonId(); + exportReport.setPerson(id); exportReport = proxy.store(exportReport); - saveItems(); Events.postEvent(EVENT_ON_SAVE_EXPORTREPORT, this.self, exportReport.getWikittyId()); self.detach(); } - public void onClick$addItem() { - ExportReportItem item = newItem(); - selectedItem = item; - setItemBox(); - itemsModel.addData(item); - } - - public void onClick$deleteItem() { - if (itemsModel.getSize() > 1) { - Listitem item = itemListbox.getSelectedItem(); - if (item != null) { - ExportReportItem exportReportItem = (ExportReportItem) item.getValue(); - if (exportReportItem != null) { - itemsModel.removeData(exportReportItem); - String id = exportReportItem.getWikittyId(); - if (id != null && !id.isEmpty()) { - removedItems.add(id); - } - selectedItem = (ExportReportItem) itemsModel.getElementAt(0); - setItemBox(); - itemListbox.setSelectedIndex(0); - } - } - } - } - /* * Getters */ public ExportReport getExportReport() { return exportReport; } - - public ExportReportItemModel getItemsModel() { - return itemsModel; - } - - public ExportReportItem getSelectedItem() { - return selectedItem; - } } Added: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemFormController.java (rev 0) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemFormController.java 2010-08-19 16:58:08 UTC (rev 133) @@ -0,0 +1,70 @@ +package org.chorem.bonzoms.ui; + +import org.chorem.data.bonzoms.ExportReportItem; +import org.chorem.data.bonzoms.ExportReportItemImpl; +import org.nuiton.wikitty.WikittyProxy; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.util.GenericForwardComposer; +import org.zkoss.zkplus.databind.AnnotateDataBinder; +import org.zkoss.zkplus.databind.DataBinder; +import org.zkoss.zul.Window; + +public class ExportReportItemFormController extends GenericForwardComposer { + + protected WikittyProxy proxy = ChoremDataProxy.getInstance(); + protected ExportReportItem item = new ExportReportItemImpl(); + + protected CompanyBandboxMacro companyBandboxMacro; + protected ProjectBandboxMacro projectBandboxMacro; + + public static final String EVENT_ON_SAVE_EXPORTREPORTITEM = "onSaveExportReportItem"; + + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + Window win = (Window) self; + win.doModal(); + win.setPosition("center"); + String id = Executions.getCurrent().getParameter("exportReportItemId"); + if (id == null) { + id = (String) arg.get("exportReportItemId"); + } + init(id); + DataBinder binder = new AnnotateDataBinder(comp); + binder.bindBean("composer", this); + binder.loadAll(); + } + + protected void init(String id) { + if (id != null) { + ExportReportItem obj = proxy.restore(ExportReportItem.class, id); + if (obj != null) { + item = obj; + } + } + projectBandboxMacro.setProjectId(item.getProject()); + companyBandboxMacro.setCompanyId(item.getCompany()); + } + + /* + * Events + */ + public void onClick$saveItem() { + String id = projectBandboxMacro.getProjectId(); + item.setProject(id); + id = companyBandboxMacro.getCompanyId(); + item.setCompany(id); + item = proxy.store(item); + Events.postEvent(EVENT_ON_SAVE_EXPORTREPORTITEM, this.self, item.getWikittyId()); + self.detach(); + } + + /* + * Getter + */ + public ExportReportItem getItem() { + return item; + } +} Added: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemListboxMacro.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemListboxMacro.java (rev 0) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemListboxMacro.java 2010-08-19 16:58:08 UTC (rev 133) @@ -0,0 +1,176 @@ +package org.chorem.bonzoms.ui; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.chorem.data.bonzoms.ExportReportItem; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Search; +import org.zkoss.zk.ui.Executions; +import org.zkoss.zk.ui.HtmlMacroComponent; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zul.Button; +import org.zkoss.zul.Listbox; +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; +import org.zkoss.zul.Window; + +public class ExportReportItemListboxMacro extends HtmlMacroComponent { + + protected WikittyProxy proxy = ChoremDataProxy.getInstance(); + protected String exportReportId = null; + protected ExportReportItemModel itemsModel = new ExportReportItemModel(); + + @Override + public void afterCompose() { + super.afterCompose(); + initButton(); + initListbox(); + } + + protected void initButton() { + Button button = (Button) getFellow("deleteItem"); + button.addEventListener(Events.ON_CLICK, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + if (itemsModel.getSize() > 1) { + Listbox itemListbox = (Listbox) getFellow("itemListbox"); + Listitem item = itemListbox.getSelectedItem(); + if (item != null) { + ExportReportItem exportReportItem = (ExportReportItem) item.getValue(); + if (exportReportItem != null) { + itemsModel.removeData(exportReportItem); + String id = exportReportItem.getWikittyId(); + proxy.delete(id); + itemListbox.setSelectedIndex(0); + } + } + } + } + }); + Button newItem = (Button) getFellow("newItem"); + newItem.addEventListener(Events.ON_CLICK, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + if (exportReportId != null) { + createExportReportItemFormWindow(null); + } + } + }); + + } + + protected void initListbox() { + initItemsModel(); + Listbox listbox = (Listbox) getFellow("itemListbox"); + listbox.setModel(itemsModel); + ListitemRenderer renderer = getExportReportItemRenderer(); + listbox.setItemRenderer(renderer); + } + + protected void initItemsModel() { + if (exportReportId != null) { + Criteria criteria = Search.query().eq(ExportReportItem.FQ_FIELD_EXPORTREPORTITEM_EXPORTREPORT, exportReportId).criteria(); + List<ExportReportItem> items = proxy.findAllByCriteria(ExportReportItem.class, criteria).getAll(); + items = new ArrayList<ExportReportItem>(items); + itemsModel.setItems(items); + } + } + + protected void createExportReportItemFormWindow(String id) { + Map<String, Object> map = new HashMap<String, Object>(); + if (id != null) { + map.put("exportReportItemId", id); + } + Window win = (Window) Executions.createComponents("exportReportItemFormPage.zul", null, map); + win.addEventListener(ExportReportItemFormController.EVENT_ON_SAVE_EXPORTREPORTITEM, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + String id = (String) event.getData(); + ExportReportItem item = proxy.restore(ExportReportItem.class, id); + if (item.getExportReport() == null || item.getExportReport().isEmpty()) { + item.setExportReport(exportReportId); + item = proxy.store(item); + } + int rowIndex = itemsModel.indexOf(item); + if (rowIndex != -1) { + itemsModel.reloadContent(rowIndex); + } else { + itemsModel.addData(item); + } + } + }); + } + + protected Listcell getDateCell(Date date) { + Listcell cell = new Listcell(); + if (date != null) { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + String label = sdf.format(date); + cell.setLabel(label); + } + return cell; + } + + protected Listcell getJustifyNumberCell(String number) { + Listcell cell = new Listcell(); + if (number != null) { + cell.setLabel(number); + } + return cell; + } + + /* + * Renderers + */ + protected ListitemRenderer getExportReportItemRenderer() { + return new ListitemRenderer() { + + @Override + public void render(Listitem item, Object data) throws Exception { + item.setValue(data); + final ExportReportItem exportReportitem = (ExportReportItem) data; + + Listcell date = getDateCell(exportReportitem.getDate()); + item.appendChild(date); + + Listcell justifyNumber = getJustifyNumberCell(exportReportitem.getJustifyNumber()); + item.appendChild(justifyNumber); + + Listcell HT = new Listcell(String.valueOf(exportReportitem.getHTAmount())); + item.appendChild(HT); + + Listcell TVA = new Listcell(String.valueOf(exportReportitem.getTVA())); + item.appendChild(TVA); + + Listcell TTC = new Listcell(String.valueOf(exportReportitem.getTTCAmount())); + item.appendChild(TTC); + + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + createExportReportItemFormWindow(exportReportitem.getWikittyId()); + } + }); + } + }; + } + + public void setExportReportId(String id) { + if (id != null) { + exportReportId = id; + initListbox(); + } + } +} Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemModel.java 2010-08-18 15:17:57 UTC (rev 132) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ExportReportItemModel.java 2010-08-19 16:58:08 UTC (rev 133) @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.List; +import org.chorem.data.bonzoms.Employee; import org.chorem.data.bonzoms.ExportReportItem; import org.zkoss.zkplus.databind.BindingListModel; import org.zkoss.zul.AbstractListModel; @@ -24,7 +25,16 @@ @Override public int indexOf(Object obj) { - return items.indexOf(obj); + int index = -1; + String id = ((ExportReportItem) obj).getWikittyId(); + for (ExportReportItem data : items) { + String dataId = data.getWikittyId(); + if (id.equals(dataId)) { + index = items.indexOf(data); + break; + } + } + return index; } public void setItems(List<ExportReportItem> items) { Added: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ProjectBandboxMacro.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ProjectBandboxMacro.java (rev 0) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ProjectBandboxMacro.java 2010-08-19 16:58:08 UTC (rev 133) @@ -0,0 +1,135 @@ +package org.chorem.bonzoms.ui; + +import org.chorem.data.bonzoms.Project; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Element; +import org.nuiton.wikitty.search.Search; +import org.zkoss.zk.ui.HtmlMacroComponent; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zul.Bandbox; +import org.zkoss.zul.Listbox; +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; +import org.zkoss.zul.Paging; +import org.zkoss.zul.event.PagingEvent; + +public class ProjectBandboxMacro extends HtmlMacroComponent { + + private final int pageSize = 5; + + protected WikittyProxy proxy = ChoremDataProxy.getInstance(); + protected ProjectModel projectModel = new ProjectModel(pageSize); + protected String projectId = null; + + @Override + public void afterCompose() { + super.afterCompose(); + initPaging(); + initBandbox(); + initListbox(); + } + + protected void initPaging() { + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Project.EXT_PROJECT).criteria(); + projectModel.setCriteria(criteria); + + int totalSize = projectModel.getTotalSize(); + Paging projectPaging = (Paging) getFellow("projectPaging"); + projectPaging.setTotalSize(totalSize); + projectPaging.setPageSize(pageSize); + projectPaging.addEventListener("onPaging", new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + PagingEvent pagingEvent = (PagingEvent) event; + int activePage = pagingEvent.getActivePage(); + projectModel.setActivePage(activePage); + } + }); + } + + protected void initBandbox() { + final Bandbox projectBandbox = (Bandbox) getFellow("projectBandbox"); + projectBandbox.addEventListener(Events.ON_OK, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + String search = projectBandbox.getValue(); + Search query = Search.query().eq(Element.ELT_EXTENSION, Project.EXT_PROJECT); + if (search != null && !search.isEmpty()) { + query = query.keyword(search); + } + Criteria criteria = query.criteria(); + projectModel.setCriteria(criteria); + int totalSize = projectModel.getTotalSize(); + Paging projectPaging = (Paging) getFellow("projectPaging"); + projectPaging.setTotalSize(totalSize); + projectPaging.setActivePage(0); + projectBandbox.open(); + } + }); + } + + protected void initListbox() { + Listbox projectListbox = (Listbox) getFellow("projectListbox"); + projectListbox.setModel(projectModel); + ListitemRenderer renderer = getProjectRenderer(); + projectListbox.setItemRenderer(renderer); + } + + /* + * Renderers + */ + public ListitemRenderer getProjectRenderer() { + return new ListitemRenderer() { + + @Override + public void render(Listitem item, Object data) throws Exception { + item.setValue(data); + final Project project = (Project) data; + final String name = project.getName(); + Listcell cell = new Listcell(name); + item.appendChild(cell); + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + projectId = project.getWikittyId(); + Bandbox projectBandbox = (Bandbox) getFellow("projectBandbox"); + projectBandbox.setValue(name); + projectBandbox.close(); + } + }); + } + }; + } + + /* + * Setters + */ + public void setProjectId(String id) { + projectId = id; + if (id != null) { + Project project = proxy.restore(Project.class, id); + if (project != null) { + Bandbox projectBandbox = (Bandbox) getFellow("projectBandbox"); + String name = project.getName(); + if (name != null) { + projectBandbox.setValue(name); + projectBandbox.close(); + } + } + } + } + + /* + * Getters + */ + public String getProjectId() { + return projectId; + } +} Added: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ProjectModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ProjectModel.java (rev 0) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ProjectModel.java 2010-08-19 16:58:08 UTC (rev 133) @@ -0,0 +1,115 @@ +package org.chorem.bonzoms.ui; + +import java.util.ArrayList; +import java.util.List; + +import org.chorem.data.bonzoms.Project; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.WikittyProxy; +import org.zkoss.zkplus.databind.BindingListModel; +import org.zkoss.zul.AbstractListModel; +import org.zkoss.zul.event.ListDataEvent; + +public class ProjectModel extends AbstractListModel implements BindingListModel { + + protected WikittyProxy proxy = ChoremDataProxy.getInstance(); + protected Criteria criteria = null; + protected int activePage = 0; + protected int pageSize = 1; + protected List<Project> projects = new ArrayList<Project>(); + + public ProjectModel(int pageSize) { + this.pageSize = pageSize; + createList(); + } + + @Override + public Object getElementAt(int index) { + Project Project = projects.get(index); + return Project; + } + + @Override + public int getSize() { + return projects.size(); + } + + @Override + public int indexOf(Object obj) { + int index = -1; + String id = ((Project) obj).getWikittyId(); + for (Project data : projects) { + String dataId = data.getWikittyId(); + if (id.equals(dataId)) { + index = projects.indexOf(data); + break; + } + } + return index; + } + + public int getTotalSize() { + if (criteria == null) { + return 0; + } + Criteria criteria = this.criteria.setFirstIndex(0).setEndIndex(0); + PagedResult<Project> result = proxy.findAllByCriteria(Project.class, criteria); + return result.getNumFound(); + } + + public void addData(Project newData) { + int listSize = projects.size(); + if (listSize < (pageSize)) { + projects.add(newData); + } + int size = getSize(); + fireEvent(ListDataEvent.INTERVAL_ADDED, size - 1, size - 1); + } + + public void removeData(Project data) { + int interval = projects.indexOf(data); + if (interval != -1) { + projects.remove(interval); + fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); + } + } + + public void reloadContent(int rowIndex) { + Project project = projects.get(rowIndex); + project = proxy.restore(Project.class, project.getWikittyId()); + fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); + } + + public void reload() { + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); + } + + public Criteria getCriteria() { + return criteria; + } + + public void setCriteria(Criteria criteria) { + if (criteria != null) { + this.criteria = criteria; + activePage = 0; + createList(); + } + } + + protected void createList() { + if (criteria != null) { + int first = activePage * pageSize; + int end = first + (pageSize - 1); + Criteria criteria = this.criteria.setFirstIndex(first).setEndIndex(end); + List<Project> projects = proxy.findAllByCriteria(Project.class, criteria).getAll(); + this.projects = new ArrayList<Project>(projects); + } + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); + } + + public void setActivePage(int activePage) { + this.activePage = activePage; + createList(); + } +} Modified: trunk/bonzoms-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml 2010-08-18 15:17:57 UTC (rev 132) +++ trunk/bonzoms-ui-zk/src/main/webapp/WEB-INF/lang-addon.xml 2010-08-19 16:58:08 UTC (rev 133) @@ -32,5 +32,19 @@ <component-class>org.chorem.bonzoms.ui.ServiceBandboxMacro</component-class> <macro-uri>macros/serviceBandboxMacro.zul</macro-uri> </component> + + <!-- project macro --> + <component> + <component-name>projectBandboxMacro</component-name> + <component-class>org.chorem.bonzoms.ui.ProjectBandboxMacro</component-class> + <macro-uri>macros/projectBandboxMacro.zul</macro-uri> + </component> + <!-- exportReportItemListbox macro --> + <component> + <component-name>exportReportItemListboxMacro</component-name> + <component-class>org.chorem.bonzoms.ui.ExportReportItemListboxMacro</component-class> + <macro-uri>macros/exportReportItemListboxMacro.zul</macro-uri> + </component> + </language-addon> Modified: trunk/bonzoms-ui-zk/src/main/webapp/exportReportFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/exportReportFormPage.zul 2010-08-18 15:17:57 UTC (rev 132) +++ trunk/bonzoms-ui-zk/src/main/webapp/exportReportFormPage.zul 2010-08-19 16:58:08 UTC (rev 133) @@ -3,93 +3,32 @@ <window closable="true" maximizable="true" sizable="true" width="650px" contentStyle="overflow:auto" apply="org.chorem.bonzoms.ui.ExportReportFormController"> <caption label="Export report"/> - <vbox> - <groupbox> <caption label="Export report" /> - <hbox> + <vbox> - <vbox> - State - <listbox id="stateListbox" mold="select"> - <listitem label="Writing" /> - <listitem label="Waiting for payment" /> - <listitem label="Waiting for validation" /> - <listitem label="Payed" /> - </listbox> - </vbox> + State + <listbox id="stateListbox" mold="select"> + <listitem label="Writing" /> + <listitem label="Waiting for payment" /> + <listitem label="Waiting for validation" /> + <listitem label="Payed" /> + </listbox> <space /> - <vbox> - Payment date - <datebox value="@{composer.exportReport.payment, save-when='saveExportReport.onClick'}" /> - </vbox> + Payment date + <datebox value="@{composer.exportReport.payment, save-when='saveExportReport.onClick'}" /> <space /> - <vbox> - Number - <textbox value="@{composer.exportReport.number, save-when='saveExportReport.onClick'}" /> - </vbox> - - </hbox> - </groupbox> - - - <groupbox> - <caption label="Items" /> - <hbox> - <vbox> - Date - <datebox id="exportReportDate" value="@{composer.selectedItem.date, save-when='saveItem.onClick'}" /> - </vbox> + Number + <textbox value="@{composer.exportReport.number, save-when='saveExportReport.onClick'}" /> - <vbox> - Justify number - <textbox id="exportReportJustifyNumber" value="@{composer.selectedItem.justifyNumber, save-when='saveItem.onClick'}" /> - </vbox> - - <vbox> - HT amount - <doublebox id="exportReportHTAmount" value="@{composer.selectedItem.hTAmount, save-when='saveItem.onClick'}" /> - </vbox> - - <vbox> - TVA - <doublebox id="exportReportTVA" value="@{composer.selectedItem.tVA, save-when='saveItem.onClick'}" /> - </vbox> - - <vbox> - TTC amount - <doublebox id="exportReportTTCAmount" value="@{composer.selectedItem.tTCAmount, save-when='saveItem.onClick'}" /> - </vbox> - <space /> - <vbox> - <separator /> - <button id="saveItem" label="Save" /> - </vbox> - </hbox> - - <vbox> - <separator /> - <listbox id="itemListbox" model="@{composer.itemsModel}" itemRenderer="@{composer.exportReportItemRenderer}" autopaging="true" mold="paging" rows="5" > - <listhead> - <listheader label="Date" /> - <listheader label="Justify number" /> - <listheader label="HT amount" /> - <listheader label="TVA" /> - <listheader label="TTC amount" /> - </listhead> - </listbox> - <hbox> - <button id="addItem" label="Add item" /> - <space /> - <button id="deleteItem" label="Delete item" /> - </hbox> + <personBandboxMacro id="personBandboxMacro" /> + </vbox> + </groupbox> - - </vbox> <button id="saveExportReport" label="Save" /> </window> Added: trunk/bonzoms-ui-zk/src/main/webapp/exportReportItemFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/exportReportItemFormPage.zul (rev 0) +++ trunk/bonzoms-ui-zk/src/main/webapp/exportReportItemFormPage.zul 2010-08-19 16:58:08 UTC (rev 133) @@ -0,0 +1,33 @@ +<?page title="new page title" contentType="text/html;charset=UTF-8"?> +<window closable="true" maximizable="true" sizable="true" contentStyle="overflow:auto" apply="org.chorem.bonzoms.ui.ExportReportItemFormController"> + <caption label="Item"/> + <groupbox> + <caption label="Item" /> + <vbox> + + Date + <datebox id="exportReportDate" value="@{composer.item.date, save-when='saveItem.onClick'}" /> + + Justify number + <textbox id="exportReportJustifyNumber" value="@{composer.item.justifyNumber, save-when='saveItem.onClick'}" /> + + HT amount + <doublebox id="exportReportHTAmount" value="@{composer.item.hTAmount, save-when='saveItem.onClick'}" /> + + TVA + <doublebox id="exportReportTVA" value="@{composer.item.tVA, save-when='saveItem.onClick'}" /> + + TTC amount + <doublebox id="exportReportTTCAmount" value="@{composer.item.tTCAmount, save-when='saveItem.onClick'}" /> + + <companyBandboxMacro id="companyBandboxMacro" /> + + <projectBandboxMacro id="projectBandboxMacro" /> + + <space /> + + <separator /> + <button id="saveItem" label="Save" /> + </vbox> + </groupbox> +</window> Modified: trunk/bonzoms-ui-zk/src/main/webapp/exportReportPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/exportReportPage.zul 2010-08-18 15:17:57 UTC (rev 132) +++ trunk/bonzoms-ui-zk/src/main/webapp/exportReportPage.zul 2010-08-19 16:58:08 UTC (rev 133) @@ -2,19 +2,25 @@ <?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?> <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" root="./exportReport"?> - <window id="exportReport" apply="org.chorem.bonzoms.ui.ExportReportController"> Export report: <toolbarbutton id="newExportReport" label="Add new export report" /> - <listbox id="exportReportListbox" rows="20" model="@{exportReport$composer.exportReportModel}" - itemRenderer="@{exportReport$composer.exportReportRenderer}"> - <listhead> - <listheader label="Creation Date" /> - <listheader label="Number" /> - <listheader label="State" /> - <listheader label="Person" /> - <listheader label="Payment date" /> - <listheader label="TTC Price" /> - </listhead> - </listbox> - <paging id="exportReportPaging" /> + <hbox> + <vbox> + <listbox id="exportReportListbox" rows="20" model="@{exportReport$composer.exportReportModel}" + itemRenderer="@{exportReport$composer.exportReportRenderer}"> + <listhead> + <listheader label="Creation Date" /> + <listheader label="Number" /> + <listheader label="State" /> + <listheader label="Person" /> + <listheader label="Payment date" /> + <listheader label="TTC Price" /> + </listhead> + </listbox> + <paging id="exportReportPaging" /> + </vbox> + + <exportReportItemListboxMacro id="exportReportItemListboxMacro" /> + </hbox> + </window> \ No newline at end of file Added: trunk/bonzoms-ui-zk/src/main/webapp/macros/exportReportItemListboxMacro.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/macros/exportReportItemListboxMacro.zul (rev 0) +++ trunk/bonzoms-ui-zk/src/main/webapp/macros/exportReportItemListboxMacro.zul 2010-08-19 16:58:08 UTC (rev 133) @@ -0,0 +1,18 @@ +<?page title="Export report item" contentType="text/html;charset=UTF-8"?> +<zk> + <vbox> + <listbox id="itemListbox" autopaging="true" mold="paging" rows="20"> + <listhead> + <listheader label="Date" /> + <listheader label="Justify number" /> + <listheader label="HT amount" /> + <listheader label="TVA" /> + <listheader label="TTC amount" /> + </listhead> + </listbox> + <hbox> + <button id="newItem" label="Add new item" /> + <button id="deleteItem" label="Delete item" /> + </hbox> + </vbox> +</zk> \ No newline at end of file Added: trunk/bonzoms-ui-zk/src/main/webapp/macros/projectBandboxMacro.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/macros/projectBandboxMacro.zul (rev 0) +++ trunk/bonzoms-ui-zk/src/main/webapp/macros/projectBandboxMacro.zul 2010-08-19 16:58:08 UTC (rev 133) @@ -0,0 +1,16 @@ +<?page title="new page title" contentType="text/html;charset=UTF-8"?> +<zk> + Project: + <bandbox id="projectBandbox" mold="rounded"> + <bandpopup> + <vbox> + <listbox rows="5" id="projectListbox" width="200px"> + <listhead> + <listheader label="Name" /> + </listhead> + </listbox> + <paging id="projectPaging" width="200px"/> + </vbox> + </bandpopup> + </bandbox> +</zk> \ No newline at end of file