19 package org.turro.contacts.zul.control;
22 import java.io.IOException;
23 import java.util.Properties;
24 import java.util.logging.Level;
25 import java.util.logging.Logger;
26 import org.amic.util.string.Strings;
27 import org.turro.command.Command;
28 import org.turro.command.Context;
29 import org.turro.contacts.Address;
30 import org.turro.contacts.Connector;
31 import org.turro.contacts.Contact;
32 import org.turro.contacts.control.ContactField;
33 import org.turro.contacts.control.ContactFieldList;
34 import static org.turro.contacts.control.ContactFieldType.CONTACT_ADDRESS;
35 import static org.turro.contacts.control.ContactFieldType.CONTACT_CONNECTOR;
36 import static org.turro.contacts.control.ContactFieldType.CONTACT_GID;
37 import static org.turro.contacts.control.ContactFieldType.CONTACT_NAME;
38 import org.turro.contacts.form.ContactWrapper;
39 import org.turro.contacts.util.MostUsed;
40 import org.turro.elephant.context.ElephantContext;
41 import org.turro.elephant.impl.util.FileUtil;
42 import org.turro.elephant.util.Images;
43 import org.turro.i18n.I_;
44 import org.turro.zkoss.dialog.SelectionDialog;
45 import org.turro.zkoss.label.StyledLabel;
46 import org.turro.zkoss.layout.GridLayout;
47 import org.turro.zul.frame.Framework;
48 import org.zkoss.zk.ui.ext.AfterCompose;
49 import org.zkoss.zul.Image;
50 import org.zkoss.zul.Space;
51 import org.zkoss.zul.Textbox;
64 if(fields.isEmpty()) {
70 I_.
get(
"New contact"),
71 cf,
"500px",
"600px",
new Command() {
74 public Object execute(Context context) {
80 public Object execute(Context context) {
83 context =
new Context();
85 context.put(
"contact", newc);
86 if(command !=
null) command.execute(context);
99 if(fields.isEmpty()) {
106 cf,
"500px",
"600px",
new Command() {
108 public Object execute(Context context) {
114 public Object execute(Context context) {
116 if(context ==
null) {
117 context =
new Context();
119 context.put(
"contact", newc);
120 if(command !=
null) command.execute(context);
132 this.fields = fields;
136 this.contact = contact;
147 getChildren().clear();
150 Properties properties =
new Properties();
153 addFields(properties);
154 }
catch (IOException ex) {
159 private void addFields(Properties properties) {
162 addField(cf, properties);
166 private void addField(ContactField cf, Properties properties) {
167 switch(cf.getType()) {
170 cf.setEditor(
new Textbox(contact.
getName()));
171 cf.getEditor().setHflex(
"true");
173 addRequired(cf.isRequired());
178 cf.getEditor().setHflex(
"true");
180 addRequired(cf.isRequired());
182 case CONTACT_CONNECTOR:
183 if(Strings.isBlank(cf.getFinalLabel())) {
184 String connectorName = MostUsed.getConnector(
185 properties.getProperty(cf.getFieldLabel(), cf.getFieldLabel()),
187 cf.setFinalLabel(connectorName);
190 Connector connector = contact.
getConnectorMap().get(cf.getFinalLabel());
191 cf.setEditor(
new Textbox(connector ==
null ?
null : connector.getValue()));
192 cf.getEditor().setHflex(
"true");
194 addRequired(cf.isRequired());
196 case CONTACT_ADDRESS:
197 if(Strings.isBlank(cf.getFinalLabel())) {
198 String addressName = MostUsed.getAddress(
199 properties.getProperty(cf.getFieldLabel(), cf.getFieldLabel()),
201 cf.setFinalLabel(addressName);
204 "font-size:12px;font-weight:bold;"), 3);
205 Address address = contact.
getAddressMap().get(cf.getFinalLabel());
208 cf.addEditor(
new Textbox(address ==
null ?
null : address.getStreet()));
209 cf.getLastEditor().setHflex(
"true");
211 addRequired(cf.isRequired());
214 cf.addEditor(
new Textbox(address ==
null ?
null : address.getZipCode()));
215 cf.getLastEditor().setWidth(
"100px");
220 cf.addEditor(
new Textbox(address ==
null ?
null : address.getCity()));
221 cf.getLastEditor().setHflex(
"true");
223 addRequired(cf.isRequired());
226 cf.addEditor(
new Textbox(address ==
null ?
null : address.getProvince()));
227 cf.getLastEditor().setHflex(
"true");
232 cf.addEditor(
new Textbox(address ==
null ?
null : address.getState()));
233 cf.getLastEditor().setHflex(
"true");
240 private void addRequired(
boolean required) {
248 private void assignFields() {
249 for(ContactField cf : fields) {
254 private void assignField(ContactField cf) {
255 switch(cf.getType()) {
257 contact.
setName(((Textbox) cf.getEditor()).getValue());
262 case CONTACT_CONNECTOR:
263 Connector connector = contact.
getConnectorMap().get(cf.getFinalLabel());
264 if(connector ==
null) {
265 connector =
new Connector();
266 connector.setContact(contact);
268 connector.setDescription(cf.getFinalLabel());
270 connector.setValue(((Textbox) cf.getEditor()).getValue());
272 case CONTACT_ADDRESS:
273 Address address = contact.
getAddressMap().get(cf.getFinalLabel());
274 if(address ==
null) {
275 address =
new Address();
276 address.setContact(contact);
278 address.setDescription(cf.getFinalLabel());
280 address.setStreet(((Textbox) cf.getEditors().get(0)).getValue());
281 address.setZipCode(((Textbox) cf.getEditors().get(1)).getValue());
282 address.setCity(((Textbox) cf.getEditors().get(2)).getValue());
283 address.setProvince(((Textbox) cf.getEditors().get(3)).getValue());
284 address.setState(((Textbox) cf.getEditors().get(4)).getValue());
static String getRealPath(String path)
static String logMsg(String msg)
static BufferedReader getBufferedFile(String folder, String file)
static String get(String msg)
void setColumns(int columns)
GridLayout addComponent(HtmlBasedComponent comp)
GridLayout addSpannedComponent(HtmlBasedComponent comp, int cols)
GridLayout addCaption(String label)
static Framework getCurrent()