BrightSide Workbench Full Report + Source Code
contacts/src/main/java/org/turro/contacts/zul/fields/FieldDefRow.java
Go to the documentation of this file.
1 /*
2  * TurrĂ³ i Cutiller Foundation. License notice.
3  * Copyright (C) 2011 Lluis TurrĂ³ Cutiller <http://www.turro.org/>
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU Affero General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Affero General Public License for more details.
14  *
15  * You should have received a copy of the GNU Affero General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 package org.turro.contacts.zul.fields;
19 
20 import java.util.Date;
21 import org.turro.contacts.FieldDef;
22 import org.turro.contacts.db.ContactsPU;
23 import org.turro.contacts.zul.contact.TagNameCombobox;
24 import org.turro.elephant.context.Application;
25 import org.turro.elephant.db.WhereClause;
26 import org.turro.elephant.util.Messages;
27 import org.turro.i18n.I_;
28 import org.turro.jpa.Dao;
29 import org.turro.zul.frame.Framework;
30 import org.zkoss.zk.ui.event.Event;
31 import org.zkoss.zk.ui.event.EventListener;
32 import org.zkoss.zk.ui.event.Events;
33 import org.zkoss.zul.Image;
34 import org.zkoss.zul.Listbox;
35 import org.zkoss.zul.Row;
36 import org.zkoss.zul.Textbox;
37 
42 public class FieldDefRow extends Row {
43 
44  private FieldDef fieldDef;
45 
46  public FieldDefRow(FieldDef fieldDef) {
47  this.fieldDef = fieldDef;
48  addCells();
49  }
50 
51  public FieldDef getFieldDef() {
52  return fieldDef;
53  }
54 
55  public void setFieldDef(FieldDef fieldDef) {
56  this.fieldDef = fieldDef;
57  }
58 
59  private void addCells() {
60  final TagNameCombobox tag = new TagNameCombobox();
61  tag.setStyle("width:100%");
62  tag.setTagName(fieldDef.getTagDiscriminator());
63  tag.addEventListener(Events.ON_CHANGE, new EventListener() {
64  @Override
65  public void onEvent(Event event) throws Exception {
66  fieldDef.setTagDiscriminator(tag.getTagName());
67  }
68  });
69  appendChild(tag);
70 
71  final Textbox tabKey = new Textbox(fieldDef.getTabKey());
72  tabKey.setStyle("width:100%");
73  tabKey.addEventListener(Events.ON_CHANGE, new EventListener() {
74  @Override
75  public void onEvent(Event event) throws Exception {
76  fieldDef.setTabKey(tabKey.getText());
77  }
78  });
79  appendChild(tabKey);
80 
81  final Textbox labelKey = new Textbox(fieldDef.getLabelKey());
82  labelKey.setStyle("width:100%");
83  labelKey.addEventListener(Events.ON_CHANGE, new EventListener() {
84  @Override
85  public void onEvent(Event event) throws Exception {
86  fieldDef.setLabelKey(labelKey.getText());
87  }
88  });
89  appendChild(labelKey);
90 
91  final Listbox classes = new Listbox();
92  classes.setMold("select");
93  classes.appendItem(I_.get("String"), String.class.getName())
94  .setSelected(String.class.equals(fieldDef.getJavaClass()));
95  classes.appendItem(I_.get("Long integer"), Long.class.getName())
96  .setSelected(Long.class.equals(fieldDef.getJavaClass()));
97  classes.appendItem(I_.get("Double"), Double.class.getName())
98  .setSelected(Double.class.equals(fieldDef.getJavaClass()));
99  classes.appendItem(I_.get("Date"), Date.class.getName())
100  .setSelected(Date.class.equals(fieldDef.getJavaClass()));
101  classes.appendItem(I_.get("Boolean"), Boolean.class.getName())
102  .setSelected(Boolean.class.equals(fieldDef.getJavaClass()));
103  classes.addEventListener(Events.ON_SELECT, new EventListener() {
104  @Override
105  public void onEvent(Event event) throws Exception {
106  fieldDef.setJavaClass(Class.forName((String) classes.getSelectedItem().getValue()));
107  }
108  });
109  if(classes.getSelectedItem() == null) {
110  fieldDef.setJavaClass(String.class);
111  }
112  appendChild(classes);
113 
114  if(Application.getApplication().isInRole("contact-field:delete")) {
115  Image img = new Image("/_zul/images/edit-delete.png");
116  img.setStyle("cursor:pointer");
117  img.addEventListener(Events.ON_CLICK, new EventListener() {
118  @Override
119  public void onEvent(Event event) throws Exception {
120  Messages.confirmDeletion().show(() -> {
121  deleteFieldDef();
122  Framework.getCurrent().invalidateSelected();
123  });
124  }
125  });
126  appendChild(img);
127  }
128  }
129 
130  private void deleteFieldDef() {
131  Dao dao = new ContactsPU();
132  WhereClause wc = new WhereClause();
133  wc.addClause("delete from FieldValue as fieldValue");
134  wc.addClause("where fieldValue.fieldDef = :fieldDef");
135  wc.addNamedValue("fieldDef", fieldDef);
136  dao.executeUpdate(wc);
137  wc = new WhereClause();
138  wc.addClause("delete from FieldDef as fieldDef");
139  wc.addClause("where fieldDef = :fieldDef");
140  wc.addNamedValue("fieldDef", fieldDef);
141  dao.executeUpdate(wc);
142  }
143 
144 }