Author: bbrossaud Date: 2010-08-05 17:23:21 +0200 (Thu, 05 Aug 2010) New Revision: 124 Url: http://chorem.org/repositories/revision/bonzoms/124 Log: addition contracts Added: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsModel.java 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/ContractsFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonFormController.java trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul trunk/bonzoms-ui-zk/src/main/webapp/contractsFormPage.zul trunk/bonzoms-ui-zk/src/main/webapp/employeeFormPage.zul 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-05 12:52:18 UTC (rev 123) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyFormController.java 2010-08-05 15:23:21 UTC (rev 124) @@ -32,12 +32,19 @@ import org.chorem.data.bonzoms.CompanyImpl; import org.nuiton.wikitty.WikittyProxy; import org.zkoss.zk.ui.Component; +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.Caption; 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; import org.zkoss.zk.ui.Executions; /** @@ -49,7 +56,8 @@ protected WikittyProxy proxy = BonzomsProxy.getInstance(); protected Company company = new CompanyImpl(); - protected AddressModel addressesModel = new AddressModel(); + protected AddressModel addressModel = new AddressModel(); + protected Address selectedAddress = null; protected PhonesModel phonesModel = new PhonesModel(); protected EmailsModel emailsModel = new EmailsModel(); @@ -87,8 +95,10 @@ } protected void initDefaultCompany() { - Address address = new AddressImpl(); - addressesModel.addData(address); + Address address = new AddressImpl(); + address.setName("New address"); + addressModel.addData(address); + selectedAddress = address; Phone phone = new Phone(); phonesModel.addData(phone); @@ -101,7 +111,8 @@ this.company = proxy.restore(Company.class, companyId); List<Address> addresses = proxy.restore(Address.class, new ArrayList<String>(company.getAddress())); addresses = new ArrayList<Address>(addresses); - addressesModel.setAddresses(addresses); + addressModel.setAddresses(addresses); + selectedAddress = addresses.get(0); emailsModel.setEmails(company.getEmails()); phonesModel.setPhones(company.getPhones()); } @@ -113,7 +124,7 @@ } protected void saveAddresses() { - List<Address> addresses = proxy.store(addressesModel.getAddresses()); + List<Address> addresses = proxy.store(addressModel.getAddresses()); if (!removedAddresses.isEmpty()) { proxy.delete(removedAddresses); removeCompanyAddresses(); @@ -133,28 +144,86 @@ company.setPhones(phones); } + protected void setAddressBox() { + Caption caption = (Caption) self.getFellow("captionName"); + caption.setLabel(selectedAddress.getName()); + Textbox box = (Textbox) self.getFellow("name"); + box.setValue(selectedAddress.getName()); + box = (Textbox) self.getFellow("address1"); + box.setValue(selectedAddress.getAddress1()); + box = (Textbox) self.getFellow("address2"); + box.setValue(selectedAddress.getAddress2()); + box = (Textbox) self.getFellow("zipcode"); + box.setValue(selectedAddress.getZipCode()); + box = (Textbox) self.getFellow("city"); + box.setValue(selectedAddress.getCity()); + box = (Textbox) self.getFellow("country"); + box.setValue(selectedAddress.getCountry()); + } + /* + * Renderers + */ + public ListitemRenderer getAddressRenderer() { + return new ListitemRenderer() { + + @Override + public void render(Listitem item, Object data) throws Exception { + item.setValue(data); + final Address address = (Address) data; + Listcell name = new Listcell(address.getName()); + item.appendChild(name); + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + selectedAddress = address; + setAddressBox(); + } + }); + } + }; + } + + /* * Events */ + public void onClick$saveAddress() { + int rowIndex = addressModel.indexOf(selectedAddress); + Caption caption = (Caption) self.getFellow("captionName"); + caption.setLabel(selectedAddress.getName()); + addressModel.reloadContent(rowIndex); + } + public void onClose() { Events.postEvent(EVENT_ON_CLOSE_COMPANY, this.self, null); } public void onClick$addAddress() { - Address address = new AddressImpl(); - addressesModel.addData(address); + Address address = new AddressImpl(); + address.setName("New address"); + selectedAddress = address; + setAddressBox(); + addressModel.addData(address); } public void onClick$deleteAddress() { - int size = addressListbox.getItemCount(); - if (size > 1) { - Address address = (Address) addressesModel.getElementAt(size -1); - addressesModel.removeData(address); - String id = address.getWikittyId(); - if (!id.isEmpty()) { - removedAddresses.add(id); - } - } + if (addressListbox.getItemCount() > 1) { + Listitem item = addressListbox.getSelectedItem(); + if (item != null) { + Address address = (Address) item.getValue(); + if (address != null) { + addressModel.removeData(address); + String id = address.getWikittyId(); + if (id != null && !id.isEmpty()) { + removedAddresses.add(id); + } + selectedAddress = (Address) addressModel.getElementAt(0); + setAddressBox(); + addressListbox.setSelectedIndex(0); + } + } + } } public void onClick$addPhone() { @@ -203,7 +272,7 @@ } public AddressModel getAddressesModel() { - return addressesModel; + return addressModel; } public PhonesModel getPhonesModel() { @@ -213,4 +282,8 @@ public EmailsModel getEmailsModel() { return emailsModel; } + + public Address getSelectedAddress() { + return selectedAddress; + } } Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsFormController.java 2010-08-05 12:52:18 UTC (rev 123) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsFormController.java 2010-08-05 15:23:21 UTC (rev 124) @@ -1,7 +1,10 @@ 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.EmploymentContract; import org.chorem.data.bonzoms.EmploymentContractImpl; import org.nuiton.wikitty.Criteria; @@ -9,12 +12,21 @@ 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.Caption; +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; /** * @@ -24,8 +36,9 @@ protected WikittyProxy proxy = BonzomsProxy.getInstance(); - protected ContractModel contractModel = new ContractModel(20); + protected ContractsModel contractsModel = new ContractsModel(); protected List<String> removedContracts = new ArrayList<String>(); + protected EmploymentContract selectedContract = null; protected String employeeId = null; protected Listbox contractListbox; @@ -43,6 +56,7 @@ employeeId = (String) arg.get("employeeId"); } this.employeeId = employeeId; + init(); DataBinder binder = new AnnotateDataBinder(comp); binder.bindBean("composer", this); binder.loadAll(); @@ -58,40 +72,129 @@ protected void initDefaultContracts() { EmploymentContract contract = new EmploymentContractImpl(); + contract.setType("New contract"); contract.setEmployee(employeeId); - contractModel.addData(contract); + selectedContract = contract; + contractsModel.addData(contract); } protected void initContracts() { if (employeeId != null) { Criteria criteria = Search.query().eq(EmploymentContract.FQ_FIELD_EMPLOYEE, employeeId).criteria(); - contractModel.setCriteria(criteria); + List<EmploymentContract> contracts = proxy.findAllByCriteria(EmploymentContract.class, criteria).getAll(); + contracts = new ArrayList<EmploymentContract>(contracts); + contractsModel.setContracts(contracts); + if (contracts.size() == 0) { + onClick$addContract(); + } + selectedContract = (EmploymentContract) contractsModel.getElementAt(0); } } + + protected void setContractBox() { + Caption caption = (Caption) self.getFellow("captionName"); + caption.setLabel(selectedContract.getType()); + + Textbox box = (Textbox) self.getFellow("contractWorkingTime"); + box.setValue(String.valueOf(selectedContract.getWorkingTime())); + box = (Textbox) self.getFellow("contractType"); + box.setValue(selectedContract.getType()); + box = (Textbox) self.getFellow("contractAdvantages"); + box.setValue(selectedContract.getAdvantages()); + box = (Textbox) self.getFellow("contractDescription"); + box.setValue(selectedContract.getDescription()); + + Doublebox doublebox = (Doublebox) self.getFellow("contractSalary"); + doublebox.setValue(selectedContract.getSalary()); + + Datebox datebox = (Datebox) self.getFellow("contractEnd"); + datebox.setValue(selectedContract.getEnd()); + datebox = (Datebox) self.getFellow("contractStart"); + datebox.setValue(selectedContract.getStart()); + } /* + * Renderers + */ + public ListitemRenderer getContractsRenderer() { + return new ListitemRenderer() { + + @Override + public void render(Listitem item, Object data) throws Exception { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); + item.setValue(data); + final EmploymentContract contract = (EmploymentContract) data; + Listcell type = new Listcell(contract.getType()); + String str = ""; + Date date = contract.getStart(); + if (date != null) { + str = sdf.format(date); + } + Listcell start = new Listcell(str); + str = ""; + date = contract.getEnd(); + if (date != null) { + str = sdf.format(date); + } + Listcell end = new Listcell(str); + Listcell salary = new Listcell(String.valueOf(contract.getSalary())); + item.appendChild(type); + item.appendChild(start); + item.appendChild(end); + item.appendChild(salary); + item.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + selectedContract = contract; + setContractBox(); + } + }); + } + }; + } + + /* * Events */ public void onClick$addContract() { - EmploymentContract contract = new EmploymentContractImpl(); + EmploymentContract contract = new EmploymentContractImpl(); + contract.setType("New contract"); contract.setEmployee(employeeId); - contractModel.addData(contract); + selectedContract = contract; + setContractBox(); + contractsModel.addData(contract); } public void onClick$deleteContract() { -// int size = contractListbox.getItemCount(); -// if (size > 1) { -// EmploymentContract contract = (EmploymentContract) contractModel.getElementAt(size -1); -// contractModel.removeData(contract); -// String id = contract.getWikittyId(); -// if (!id.isEmpty()) { -// removedContracts.add(id); -// } -// } + if (contractListbox.getItemCount() > 1) { + Listitem item = contractListbox.getSelectedItem(); + if (item != null) { + EmploymentContract contract = (EmploymentContract) item.getValue(); + if (contract != null) { + contractsModel.removeData(contract); + String id = contract.getWikittyId(); + if (id != null && !id.isEmpty()) { + removedContracts.add(id); + } + selectedContract = (EmploymentContract) contractsModel.getElementAt(0); + setContractBox(); + contractListbox.setSelectedIndex(0); + } + } + } } - public void onClick$saveContracts() { + public void onClick$saveContract() { + int rowIndex = contractsModel.indexOf(selectedContract); + Caption caption = (Caption) self.getFellow("captionName"); + caption.setLabel(selectedContract.getType()); + contractsModel.reloadContent(rowIndex); + } + + public void onClick$save() { proxy.delete(removedContracts); + proxy.store(contractsModel.getContracts()); Events.postEvent(EVENT_ON_SAVE_CONTRACTS, this.self, null); self.detach(); } @@ -99,7 +202,11 @@ /* * Getters */ - public ContractModel getContractModel() { - return contractModel; + public ContractsModel getContractsModel() { + return contractsModel; } + + public EmploymentContract getSelectedContract() { + return selectedContract; + } } Added: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsModel.java (rev 0) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/ContractsModel.java 2010-08-05 15:23:21 UTC (rev 124) @@ -0,0 +1,57 @@ +package org.chorem.bonzoms.ui; + +import java.util.ArrayList; +import java.util.List; + +import org.chorem.data.bonzoms.EmploymentContract; +import org.zkoss.zkplus.databind.BindingListModel; +import org.zkoss.zul.AbstractListModel; +import org.zkoss.zul.event.ListDataEvent; + +public class ContractsModel extends AbstractListModel implements BindingListModel { + + List<EmploymentContract> contracts = new ArrayList<EmploymentContract>(); + + @Override + public Object getElementAt(int index) { + return contracts.get(index); + } + + @Override + public int getSize() { + return contracts.size(); + } + + @Override + public int indexOf(Object obj) { + return contracts.indexOf(obj); + } + + public void setContracts(List<EmploymentContract> contracts) { + this.contracts = contracts; + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); + } + + public void addData(EmploymentContract newData) { + contracts.add(newData); + fireEvent(ListDataEvent.INTERVAL_ADDED, contracts.size() - 1, contracts.size() - 1); + } + + public void removeData(EmploymentContract data) { + int interval = contracts.indexOf(data); + contracts.remove(data); + fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); + } + + public void reloadContent(int rowIndex) { + fireEvent(ListDataEvent.CONTENTS_CHANGED, rowIndex, rowIndex); + } + + public void reload() { + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); + } + + public List<EmploymentContract> getContracts() { + return contracts; + } +} Modified: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonFormController.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonFormController.java 2010-08-05 12:52:18 UTC (rev 123) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/PersonFormController.java 2010-08-05 15:23:21 UTC (rev 124) @@ -118,6 +118,24 @@ String phones = phonesModel.getPhonesAsString(); person.setPhones(phones); } + + protected void setAddressBox() { + Caption caption = (Caption) self.getFellow("captionName"); + caption.setLabel(selectedAddress.getName()); + Textbox box = (Textbox) self.getFellow("name"); + box.setValue(selectedAddress.getName()); + box = (Textbox) self.getFellow("address1"); + box.setValue(selectedAddress.getAddress1()); + box = (Textbox) self.getFellow("address2"); + box.setValue(selectedAddress.getAddress2()); + box = (Textbox) self.getFellow("zipcode"); + box.setValue(selectedAddress.getZipCode()); + box = (Textbox) self.getFellow("city"); + box.setValue(selectedAddress.getCity()); + box = (Textbox) self.getFellow("country"); + box.setValue(selectedAddress.getCountry()); + } + /* * Renderers */ @@ -142,23 +160,6 @@ }; } - protected void setAddressBox() { - Caption caption = (Caption) self.getFellow("captionName"); - caption.setLabel(selectedAddress.getName()); - Textbox box = (Textbox) self.getFellow("name"); - box.setValue(selectedAddress.getName()); - box = (Textbox) self.getFellow("address1"); - box.setValue(selectedAddress.getAddress1()); - box = (Textbox) self.getFellow("address2"); - box.setValue(selectedAddress.getAddress2()); - box = (Textbox) self.getFellow("zipcode"); - box.setValue(selectedAddress.getZipCode()); - box = (Textbox) self.getFellow("city"); - box.setValue(selectedAddress.getCity()); - box = (Textbox) self.getFellow("country"); - box.setValue(selectedAddress.getCountry()); - } - /* * Events */ @@ -182,31 +183,31 @@ self.detach(); } - public void onClick$addAddress() { - Address address = new AddressImpl(); - address.setName("New address"); - selectedAddress = address; - setAddressBox(); - addressModel.addData(address); - } + public void onClick$addAddress() { + Address address = new AddressImpl(); + address.setName("New address"); + selectedAddress = address; + setAddressBox(); + addressModel.addData(address); + } + + public void onClick$deleteAddress() { + Listitem item = addressListbox.getSelectedItem(); + if (item != null) { + Address address = (Address) item.getValue(); + if (address != null) { + addressModel.removeData(address); + String id = address.getWikittyId(); + if (id != null && !id.isEmpty()) { + removedAddresses.add(id); + } + selectedAddress = (Address) addressModel.getElementAt(0); + setAddressBox(); + addressListbox.setSelectedIndex(0); + } + } + } - public void onClick$deleteAddress() { - Listitem item = addressListbox.getSelectedItem(); - if (item != null) { - Address address = (Address) item.getValue(); - if (address != null) { - addressModel.removeData(address); - String id = address.getWikittyId(); - if (id != null && !id.isEmpty()) { - removedAddresses.add(id); - } - selectedAddress = (Address) addressModel.getElementAt(0); - setAddressBox(); - addressListbox.setSelectedIndex(0); - } - } - } - public void onClick$addPhone() { Phone phone = new Phone(); phonesModel.addData(phone); Modified: trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul 2010-08-05 12:52:18 UTC (rev 123) +++ trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul 2010-08-05 15:23:21 UTC (rev 124) @@ -1,7 +1,7 @@ <?page id="CompanyForm" title="Company form" cacheable="false" language="xul/html" zscriptLanguage="Java"?> <?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?> -<window closable="true" maximizable="true" sizable="true" height="500px" width="400" contentStyle="overflow:auto" apply="org.chorem.bonzoms.ui.CompanyFormController"> +<window closable="true" maximizable="true" sizable="true" height="500px" width="400px" contentStyle="overflow:auto" apply="org.chorem.bonzoms.ui.CompanyFormController"> <caption label="Company"/> <groupbox> @@ -22,48 +22,53 @@ <label value="Web site" /> <textbox value="@{composer.company.webSite, save-when='saveCompany.onClick'}" /> + <separator /> + + <listbox id="addressListbox" mold="paging" rows="5" model="@{composer.addressModel}" width="170px" itemRenderer="@{composer.addressRenderer}"> + <listhead> + <listheader label="Address name" /> + </listhead> + </listbox> + + <hbox> + <button label="Add" id="addAddress" /> + <button label="Delete" id="deleteAddress" /> + </hbox> + </vbox> <space /> <vbox> - <listbox id="addressListbox" model="@{composer.addressesModel}" width="200px"> - <listitem self="@{each='address'}"> - <listcell> - <groupbox> - <caption label="@{address.name}" /> - <vbox> + <groupbox> + <caption id="captionName" label="@{composer.selectedAddress.name}" /> + <vbox> + + <label value="Name" /> + <textbox id="name" value="@{composer.selectedAddress.name, save-when='saveAddress.onClick'}" /> + + <label value="Adress1" /> + <textbox id="address1" value="@{composer.selectedAddress.address1, save-when='saveAddress.onClick'}" /> + + <label value="Adress2" /> + <textbox id="address2" value="@{composer.selectedAddress.address2, save-when='saveAddress.onClick'}" /> + + <label value="Zip code" /> + <textbox id="zipcode" value="@{composer.selectedAddress.zipCode, save-when='saveAddress.onClick'}" /> + + <label value="City" /> + <textbox id="city" value="@{composer.selectedAddress.city, save-when='saveAddress.onClick'}" /> + + <label value="Country" /> + <textbox id="country" value="@{composer.selectedAddress.country, save-when='saveAddress.onClick'}" /> + + <button id="saveAddress" label="Save" /> + + </vbox> + </groupbox> + </vbox> + </hbox> - <label value="Name" /> - <textbox value="@{address.name, save-when='saveCompany.onClick'}" /> - - <label value="Adress1" /> - <textbox value="@{address.address1, save-when='saveCompany.onClick'}" /> - - <label value="Adress2" /> - <textbox value="@{address.address2, save-when='saveCompany.onClick'}" /> - - <label value="Zip code" /> - <textbox value="@{address.zipCode, save-when='saveCompany.onClick'}" /> - - <label value="City" /> - <textbox value="@{address.city, save-when='saveCompany.onClick'}" /> - - <label value="Country" /> - <textbox value="@{address.country, save-when='saveCompany.onClick'}" /> - - </vbox> - </groupbox> - </listcell> - </listitem> - </listbox> - <hbox> - <button label="Add address " id="addAddress" /> - <button label="Delete address" id="deleteAddress" /> - </hbox> - </vbox> - </hbox> - <separator/> <groupbox> Modified: trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul 2010-08-05 12:52:18 UTC (rev 123) +++ trunk/bonzoms-ui-zk/src/main/webapp/contractPage.zul 2010-08-05 15:23:21 UTC (rev 124) @@ -4,7 +4,7 @@ <window id="contract" apply="org.chorem.bonzoms.ui.ContractController"> Contracts: <toolbarbutton id="newContract" label="Add new contract" /> - <listbox autopaging="true" mold="paging" id="contractListBox" rows="20" model="@{contract$composer.contractsModel}" + <listbox autopaging="true" mold="paging" id="contractListBox" rows="20" model="@{contract$composer.contractModel}" itemRenderer="@{contract$composer.contractRenderer}"> <listhead> <listheader label="Type" /> Modified: trunk/bonzoms-ui-zk/src/main/webapp/contractsFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/contractsFormPage.zul 2010-08-05 12:52:18 UTC (rev 123) +++ trunk/bonzoms-ui-zk/src/main/webapp/contractsFormPage.zul 2010-08-05 15:23:21 UTC (rev 124) @@ -1,69 +1,69 @@ <?page id="ContractsForm" title="Contracts form" cacheable="false" language="xul/html" zscriptLanguage="Java"?> <?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?> -<window closable="true" maximizable="true" sizable="true" height="400px" width="450px" contentStyle="overflow:auto" apply="org.chorem.bonzoms.ui.ContractsFormController"> -<caption label="Contracts"/> +<window closable="true" maximizable="true" sizable="true" height="470px" width="450px" contentStyle="overflow:auto" apply="org.chorem.bonzoms.ui.ContractsFormController"> + <caption label="Contracts"/> <groupbox> <caption label="Contracts informations" /> + <vbox> + <groupbox width="375px"> + <caption id="captionName" label="@{composer.selectedContract.type}" /> + <hbox> + + <vbox> + <label value="Type" /> + <textbox id="contractType" value="@{composer.selectedContract.type, save-when='saveContract.onClick'}" /> + + <label value="Salary" /> + <doublebox id="contractSalary" value="@{composer.selectedContract.salary, save-when='saveContract.onClick'}" /> + + <label value="Working time" /> + <textbox id="contractWorkingTime" value="@{composer.selectedContract.workingTime, save-when='saveContract.onClick'}" /> + + <label value="Advantages" /> + <textbox id="contractAdvantages" value="@{composer.selectedContract.advantages, save-when='saveContract.onClick'}" /> + + <separator /> + + <button id="saveContract" label="Save" /> + </vbox> + <space /> + <vbox> + <label value="Start" /> + <datebox id="contractStart" format="yyyy/MM/dd" value="@{composer.selectedContract.start, save-when='saveContract.onClick'}" /> + + <label value="End" /> + <datebox id="contractEnd" format="yyyy/MM/dd" value="@{composer.selectedContract.end, save-when='saveContract.onClick'}" /> + + <label value="Description" /> + <textbox id="contractDescription" rows="5" value="@{composer.selectedContract.description, save-when='saveContract.onClick'}" /> + </vbox> + </hbox> + </groupbox> + </vbox> + + <separator /> + + <vbox> + <vbox> + <listbox id="contractListbox" mold="paging" rows="5" model="@{composer.contractsModel}" width="400px" itemRenderer="@{composer.contractsRenderer}"> + <listhead> + <listheader label="Type" /> + <listheader label="Start" /> + <listheader label="End" /> + <listheader label="Salary" /> + </listhead> + </listbox> + + <hbox> + <button label="Add" id="addContract" /> + <button label="Delete" id="deleteContract" /> + </hbox> - <hbox> - - <vbox> - - <listbox id="contractListbox" model="@{composer.contractsModel}" width="400px"> - <listitem self="@{each='contract'}"> - <listcell> - <groupbox> - <caption label="@{contract.type}" /> - - <hbox> - - <vbox> - - <label value="Type" /> - <textbox value="@{contract.type, save-when='save.onClick'}" /> - - <label value="Salary" /> - <doublebox value="@{contract.salary, save-when='save.onClick'}" /> - - <label value="Working time" /> - <textbox value="@{contract.workingTime, save-when='save.onClick'}" /> - - <label value="Advantages" /> - <textbox value="@{contract.advantages, save-when='save.onClick'}" /> - - </vbox> - - <space /> - - <vbox> - - <label value="Start" /> - <datebox format="yyyy/MM/dd" value="@{contract.start, save-when='save.onClick'}" /> - - <label value="End" /> - <datebox format="yyyy/MM/dd" value="@{contract.end, save-when='save.onClick'}" /> - - <label value="Description" /> - <textbox rows="5" value="@{contract.description, save-when='save.onClick'}" /> - - </vbox> - - </hbox> - </groupbox> - </listcell> - </listitem> - </listbox> - <hbox> - <button label="Add contract" id="addContract" /> - <button label="Delete contract" id="deleteContract" /> - </hbox> - - </vbox> - - </hbox> + </vbox> + </vbox> + </groupbox> <button id="save" label="Save" /> - <include id="openContract" /> </window> \ No newline at end of file Modified: trunk/bonzoms-ui-zk/src/main/webapp/employeeFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/employeeFormPage.zul 2010-08-05 12:52:18 UTC (rev 123) +++ trunk/bonzoms-ui-zk/src/main/webapp/employeeFormPage.zul 2010-08-05 15:23:21 UTC (rev 124) @@ -1,7 +1,7 @@ <?page id="employeeForm" title="Employee form" cacheable="false" language="xul/html" zscriptLanguage="Java"?> <?meta content="text/html; charset=UTF-8" pageEncoding="UTF-8"?> -<window closable="true" maximizable="true" sizable="true" height="350px" width="400" contentStyle="overflow:auto" apply="org.chorem.bonzoms.ui.EmployeeFormController"> +<window closable="true" maximizable="true" sizable="true" height="370px" width="400px" contentStyle="overflow:auto" apply="org.chorem.bonzoms.ui.EmployeeFormController"> <caption label="Employee"/> <separator />