18 package org.turro.dossier.zul.fields;
20 import java.util.Date;
21 import java.util.List;
22 import org.turro.dossier.db.DossierPU;
23 import org.turro.dossier.entity.Dossier;
24 import org.turro.dossier.entity.FieldDef;
25 import org.turro.dossier.entity.FieldValue;
26 import org.turro.elephant.db.WhereClause;
27 import org.turro.i18n.I_;
28 import org.turro.jpa.Dao;
29 import org.turro.zkoss.input.DateboxShort;
30 import org.turro.zkoss.layout.GridLayout;
31 import org.zkoss.zk.ui.event.Event;
32 import org.zkoss.zk.ui.event.EventListener;
33 import org.zkoss.zk.ui.event.Events;
34 import org.zkoss.zul.Checkbox;
35 import org.zkoss.zul.Datebox;
36 import org.zkoss.zul.Doublebox;
37 import org.zkoss.zul.Longbox;
38 import org.zkoss.zul.Textbox;
49 this.dossier = dossier;
58 for(
final FieldDef fd : getCategoryFields()) {
64 if(fd.getJavaClass().equals(String.class)) {
65 final Textbox value =
new Textbox();
67 value.setText((String) getFieldValue(dossier, fd));
68 value.addEventListener(Events.ON_CHANGE,
new EventListener() {
70 public void onEvent(Event event)
throws Exception {
71 setFieldValue(dossier, fd, value.getText());
75 }
else if(fd.getJavaClass().equals(Long.class)) {
76 final Longbox value =
new Longbox();
77 value.setValue((Long) getFieldValue(dossier, fd));
78 value.addEventListener(Events.ON_CHANGE,
new EventListener() {
80 public void onEvent(Event event)
throws Exception {
81 setFieldValue(dossier, fd, value.getValue());
85 }
else if(fd.getJavaClass().equals(Double.class)) {
86 final Doublebox value =
new Doublebox();
87 value.setValue((Double) getFieldValue(dossier, fd));
88 value.addEventListener(Events.ON_CHANGE,
new EventListener() {
90 public void onEvent(Event event)
throws Exception {
91 setFieldValue(dossier, fd, value.getValue());
95 }
else if(fd.getJavaClass().equals(Date.class)) {
97 value.setValue((Date) getFieldValue(dossier, fd));
98 value.addEventListener(Events.ON_CHANGE,
new EventListener() {
100 public void onEvent(Event event)
throws Exception {
101 setFieldValue(dossier, fd, value.getValue());
105 }
else if(fd.getJavaClass().equals(Boolean.class)) {
106 final Checkbox value =
new Checkbox();
107 Boolean b = (Boolean) getFieldValue(dossier, fd);
108 value.setChecked(b ==
null ?
false : b);
109 value.addEventListener(Events.ON_CHECK,
new EventListener() {
111 public void onEvent(Event event)
throws Exception {
112 setFieldValue(dossier, fd, value.isChecked());
122 if(fv.getFieldDef().getId().equals(fd.
getId())) {
123 return fv.getObjectValue();
129 private void setFieldValue(Dossier dossier, FieldDef fd, Object value) {
130 for(FieldValue fv : dossier.getFieldValues()) {
131 if(fv.getFieldDef().getId().equals(fd.getId())) {
132 fv.setObjectValue(value);
136 FieldValue fv =
new FieldValue();
137 fv.setDossier(dossier);
139 fv.setObjectValue(value);
140 dossier.getFieldValues().add(fv);
143 private List<FieldDef> getCategoryFields() {
144 Dao dao =
new DossierPU();
145 WhereClause wc =
new WhereClause();
146 wc.addClause(
"select distinct fieldDef");
147 wc.addClause(
"from FieldDef as fieldDef");
148 wc.addClause(
"where fieldDef.category = :category");
149 wc.addClause(
"order by fieldDef.order, fieldDef.labelKey");
150 wc.addNamedValue(
"category", dossier.getCategory());
151 return (List<FieldDef>) dao.getResultList(wc);
Set< FieldValue > getFieldValues()
void setDossier(Dossier dossier)
static String get(String msg)
GridLayout addComponent(HtmlBasedComponent comp)
GridLayout addCaption(String label)