Author: bbrossaud Date: 2010-07-12 18:01:09 +0200 (Mon, 12 Jul 2010) New Revision: 104 Url: http://chorem.org/repositories/revision/bonzoms/104 Log: addition missing files Added: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyFormController.java trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmailsModel.java trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul Added: 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 (rev 0) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/CompanyFormController.java 2010-07-12 16:01:09 UTC (rev 104) @@ -0,0 +1,131 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.chorem.bonzoms.ui; + +import java.util.ArrayList; +import java.util.List; +import org.chorem.data.bonzoms.Address; +import org.chorem.data.bonzoms.AddressImpl; +import org.chorem.data.bonzoms.Company; +import org.chorem.data.bonzoms.CompanyImpl; +import org.chorem.data.bonzoms.Email; +import org.chorem.data.bonzoms.EmailImpl; +import org.chorem.data.bonzoms.Phone; +import org.chorem.data.bonzoms.PhoneImpl; +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.util.GenericForwardComposer; +import org.zkoss.zkplus.databind.AnnotateDataBinder; +import org.zkoss.zkplus.databind.DataBinder; +import org.zkoss.zul.Button; +import org.zkoss.zul.Listbox; + +/** + * + * @author sherkhan + */ +public class CompanyFormController extends GenericForwardComposer { + protected Model _model = new Model(); + + protected AddressesModel _addressesModel = new AddressesModel(); + protected PhonesModel _phonesModel = new PhonesModel(); + protected EmailsModel _emailsModel = new EmailsModel(); + + protected Company _company = new CompanyImpl(); + + protected Listbox addressListbox; + protected Listbox phoneListbox; + protected Listbox emailListbox; + + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + Company company = (Company) arg.get("company"); + init(company); + DataBinder binder = new AnnotateDataBinder(comp); + binder.bindBean("composer", this); + binder.loadAll(); + } + + protected void init(Company company) { + if (company == null) { + initDefaultCompany(); + } else { + initCompany(company); + } + } + + protected void initDefaultCompany() { + Address address = new AddressImpl(); + _addressesModel.addData(address); + + Phone phone = new PhoneImpl(); + _phonesModel.addData(phone); + + Email email = new EmailImpl(); + _emailsModel.addData(email); + + Button add = new Button("Add"); + add.addEventListener("onClick", new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + addCompany(); + } + }); + self.appendChild(add); + } + + protected void initCompany(Company company) { + _company = company; + List<Address> addresses = _model.retrieveAddressesByAddressIds(new ArrayList<String>(company.getAddress())); + _addressesModel.setAddresses(addresses); + + List<Phone> phones = _model.retrievePhonesByPhoneIds(new ArrayList<String>(company.getPhone())); + _phonesModel.setPhones(phones); + + List<Email> emails = _model.retrieveEmailsByEmailIds(new ArrayList<String>(company.getEmail())); + _emailsModel.setEmails(emails); + + Button update = new Button("Update"); + update.addEventListener("onClick", new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + updateCompany(); + } + }); + self.appendChild(update); + } + + protected void addCompany() { + + } + + protected void updateCompany() { + + } + + /* + * Getters + */ + public AddressesModel getAddressesModel() { + return _addressesModel; + } + + public Company getCompany() { + return _company; + } + + public PhonesModel getPhonesModel() { + return _phonesModel; + } + + public EmailsModel getEmailsModel() { + return _emailsModel; + } +} Added: trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmailsModel.java =================================================================== --- trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmailsModel.java (rev 0) +++ trunk/bonzoms-ui-zk/src/main/java/org/chorem/bonzoms/ui/EmailsModel.java 2010-07-12 16:01:09 UTC (rev 104) @@ -0,0 +1,61 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.chorem.bonzoms.ui; + +import java.util.ArrayList; +import java.util.List; +import org.chorem.data.bonzoms.Email; +import org.zkoss.zkplus.databind.BindingListModel; +import org.zkoss.zul.AbstractListModel; +import org.zkoss.zul.event.ListDataEvent; + +/** + * + * @author sherkhan + */ +public class EmailsModel extends AbstractListModel implements BindingListModel { + + List<Email> _emails = new ArrayList<Email>(); + + @Override + public Object getElementAt(int index) { + return _emails.get(index); + } + + @Override + public int getSize() { + return _emails.size(); + } + + @Override + public int indexOf(Object obj) { + return _emails.indexOf(obj); + } + + public void setEmails(List<Email> Emailes) { + _emails = Emailes; + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); + } + + public void addData(Email newData) { + _emails.add(newData); + fireEvent(ListDataEvent.INTERVAL_ADDED, _emails.size() - 1, _emails.size() - 1); + } + + public void removeData(Email data) { + int interval = _emails.indexOf(data); + _emails.remove(data); + fireEvent(ListDataEvent.INTERVAL_REMOVED, interval, interval); + } + + public void reload() { + fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1); + } + + public List<Email> getEmails() { + return _emails; + } +} Added: trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul =================================================================== --- trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul (rev 0) +++ trunk/bonzoms-ui-zk/src/main/webapp/companyFormPage.zul 2010-07-12 16:01:09 UTC (rev 104) @@ -0,0 +1,107 @@ +<?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"> +<caption label="Company"/> + + <groupbox> + <caption label="Company informations" /> + + <hbox> + <vbox> + + <label value="Name" /> + <textbox value="@{composer.company.name, save-when='self.onChange'}" /> + + <label value="Type" /> + <textbox value="@{composer.company.type, save-when='self.onChange'}" /> + + <label value="Fax" /> + <textbox value="@{composer.company.fax, save-when='self.onChange'}" /> + + <label value="Web site" /> + <textbox value="@{composer.company.webSite, save-when='self.onChange'}" /> + + </vbox> + + <space /> + + <listbox id="addressListbox" model="@{composer.addressesModel}" width="200px"> + <listitem self="@{each='address'}"> + <listcell> + <groupbox> + <caption label="@{address.name}" /> + <vbox> + + <label value="Name" /> + <textbox value="@{address.name, save-when='self.onChange'}" /> + + <label value="Adress1" /> + <textbox value="@{address.address1, save-when='self.onChange'}" /> + + <label value="Adress2" /> + <textbox value="@{address.address2, save-when='self.onChange'}" /> + + <label value="Zip code" /> + <textbox value="@{address.zipCode, save-when='self.onChange'}" /> + + <label value="City" /> + <textbox value="@{address.city, save-when='self.onChange'}" /> + + <label value="Country" /> + <textbox value="@{address.country, save-when='self.onChange'}" /> + + </vbox> + </groupbox> + </listcell> + </listitem> + </listbox> + </hbox> + + <separator/> + + <groupbox> + <caption label="Phones" /> + + <listbox id="phoneListbox" model="@{composer.phonesModel}" width="310px"> + <listhead sizable="true"> + <listheader label="Name" /> + <listheader label="Phone Number" /> + </listhead> + <listitem self="@{each='phone'}"> + <listcell> + <textbox value="@{phone.name, save-when='self.onChange'}" /> + </listcell> + <listcell> + <textbox value="@{phone.number, save-when='self.onChange'}" /> + </listcell> + </listitem> + </listbox> + + </groupbox> + + <separator/> + + <groupbox> + <caption label="Emails" /> + + <listbox id="emailListbox" model="@{composer.emailsModel}" width="310px"> + <listhead sizable="true"> + <listheader label="Name" /> + <listheader label="Mail" /> + </listhead> + <listitem self="@{each='mail'}"> + <listcell> + <textbox value="@{mail.name, save-when='self.onChange'}" /> + </listcell> + <listcell> + <textbox value="@{mail.mail, save-when='self.onChange'}" /> + </listcell> + </listitem> + </listbox> + + </groupbox> + + </groupbox> + +</window> \ No newline at end of file