KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openbravo > wad > controls > WADControl


1 /*
2  *************************************************************************
3  * The contents of this file are subject to the Openbravo Public License
4  * Version 1.0 (the "License"), being the Mozilla Public License
5  * Version 1.1 with a permitted attribution clause; you may not use this
6  * file except in compliance with the License. You may obtain a copy of
7  * the License at http://www.openbravo.com/legal/license.html
8  * Software distributed under the License is distributed on an "AS IS"
9  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
10  * License for the specific language governing rights and limitations
11  * under the License.
12  * The Original Code is Openbravo ERP.
13  * The Initial Developer of the Original Code is Openbravo SL
14  * All portions are Copyright (C) 2001-2006 Openbravo SL
15  * All Rights Reserved.
16  * Contributor(s): ______________________________________.
17  ************************************************************************
18 */

19 package org.openbravo.wad.controls;
20
21 import java.util.*;
22 import org.openbravo.database.ConnectionProvider;
23 import org.openbravo.xmlEngine.XmlDocument;
24 import org.openbravo.xmlEngine.XmlEngine;
25
26 public class WADControl {
27   private Hashtable<String JavaDoc, String JavaDoc> data = new Hashtable<String JavaDoc, String JavaDoc>();
28   private Vector<String JavaDoc[]> css = new Vector<String JavaDoc[]>();
29   private Vector<String JavaDoc[]> imports = new Vector<String JavaDoc[]>();
30   private Vector<String JavaDoc[]> jsCode = new Vector<String JavaDoc[]>();
31   XmlEngine xmlEngine;
32   private String JavaDoc validation = "";
33   private String JavaDoc onload = "";
34   private ConnectionProvider conn = null;
35   public String JavaDoc invalid = "";
36   public String JavaDoc range = "";
37   public String JavaDoc missing = "";
38
39   public WADControl() {
40   }
41
42   public void setData(String JavaDoc name, String JavaDoc value) {
43     if (name==null) return;
44     if (this.data==null) this.data = new Hashtable<String JavaDoc, String JavaDoc>();
45     if (value==null || value.equals("")) this.data.remove(name.toUpperCase());
46     else this.data.put(name.toUpperCase(), value);
47   }
48
49   public String JavaDoc getData(String JavaDoc name) {
50     String JavaDoc aux = data.get(name.toUpperCase());
51     if (aux==null) aux="";
52     return aux;
53   }
54
55   public void setInfo(Properties prop) {
56     if (prop==null) return;
57     for (Enumeration e = prop.propertyNames();e.hasMoreElements();) {
58       String JavaDoc _name = (String JavaDoc)e.nextElement();
59       setData(_name, prop.getProperty(_name));
60     }
61   }
62
63   public void setConnection(ConnectionProvider _conn) {
64     this.conn = _conn;
65   }
66
67   public ConnectionProvider getConnection() {
68     return this.conn;
69   }
70
71   public void setReportEngine(XmlEngine _xmlEngine) {
72     this.xmlEngine = _xmlEngine;
73   }
74
75   public XmlEngine getReportEngine() {
76     return this.xmlEngine;
77   }
78
79   public void initialize() {
80     generateJSCode();
81   }
82
83   public void addCSSImport(String JavaDoc name, String JavaDoc _data) {
84     if (css==null) css = new Vector<String JavaDoc[]>();
85     String JavaDoc[] aux = new String JavaDoc[2];
86     aux[0]=name;
87     aux[1]=_data;
88     css.addElement(aux);
89   }
90
91   public void addImport(String JavaDoc name, String JavaDoc _data) {
92     if (imports==null) imports = new Vector<String JavaDoc[]>();
93     String JavaDoc[] aux = new String JavaDoc[2];
94     aux[0]=name;
95     aux[1]=_data;
96     imports.addElement(aux);
97   }
98
99   public void addJSCode(String JavaDoc name, String JavaDoc _code) {
100     if (jsCode==null) jsCode = new Vector<String JavaDoc[]>();
101     String JavaDoc[] aux = new String JavaDoc[2];
102     aux[0] = name;
103     aux[1] = _code;
104     jsCode.addElement(aux);
105   }
106
107   public void setValidation(String JavaDoc _code) {
108     validation = _code;
109   }
110
111   public String JavaDoc getValidation() {
112     return validation;
113   }
114
115   public void setOnLoad(String JavaDoc _code) {
116     onload = _code;
117   }
118
119   public String JavaDoc getOnLoad() {
120     return onload;
121   }
122
123   public Vector<String JavaDoc[]> getJSCode() {
124     return jsCode;
125   }
126
127   public Vector<String JavaDoc[]> getImport() {
128     return imports;
129   }
130
131   public Vector<String JavaDoc[]> getCSSImport() {
132     return css;
133   }
134   
135   public String JavaDoc replaceHTML(String JavaDoc text) {
136     text = text.replace("<HTML>", "");
137     text = text.replace("<HEAD>", "");
138     text = text.replace("<BODY>", "");
139     text = text.replace("</BODY>", "");
140     text = text.replace("</HTML>", "");
141     text = text.replace("</HEAD>", "");
142     return text;
143   }
144   
145   public void generateMessages() {
146     try {
147       invalid = WADControlData.getMessage(getConnection(), getData("AD_Language"), "JSInvalid");
148       missing = WADControlData.getMessage(getConnection(), getData("AD_Language"), "JSMissing");
149       range = WADControlData.getMessage(getConnection(), getData("AD_Language"), "JSRange");
150     } catch (Exception JavaDoc ex) {
151       ex.printStackTrace();
152     }
153   }
154
155   private void generateJSCode() {
156     addImport("ValidationTextBox", "../../../../../web/js/default/ValidationTextBox.js");
157     generateMessages();
158     if (getData("IsMandatory").equals("Y")) {
159       XmlDocument xmlDocument = getReportEngine().readXmlTemplate("org/openbravo/wad/controls/WADControlJSValidation").createXmlDocument();
160       xmlDocument.setParameter("columnNameInp", getData("ColumnNameInp"));
161       setValidation(replaceHTML(xmlDocument.print()));
162     }
163     setCalloutJS();
164   }
165   
166   public void setCalloutJS() {
167     String JavaDoc callout = getData("CallOutName");
168     if (callout!=null && !callout.equals("")) {
169       XmlDocument xmlDocument = getReportEngine().readXmlTemplate("org/openbravo/wad/controls/WADControlJS").createXmlDocument();
170       xmlDocument.setParameter("calloutName", callout);
171       addJSCode("callout" + callout, replaceHTML(xmlDocument.print()));
172     }
173   }
174   
175   public String JavaDoc getOnChangeCode() {
176     StringBuffer JavaDoc text = new StringBuffer JavaDoc();
177     if (getData("IsDisplayLogic").equals("Y")) text.append("displayLogic();");
178     String JavaDoc callout = getData("CallOutName");
179     String JavaDoc isComboReload = getData("IsComboReload");
180     if (isComboReload==null || isComboReload.equals("")) isComboReload = "N";
181     if (callout!=null && !callout.equals("")) text.append("callout").append(callout).append("(this.name);");
182     if (isComboReload.equals("Y")) text.append("reloadComboReloads").append(getData("AD_Tab_ID")).append("(this.name);");
183     return text.toString();
184   }
185
186   public String JavaDoc editMode() {
187     XmlDocument xmlDocument = getReportEngine().readXmlTemplate("org/openbravo/wad/controls/WADControl").createXmlDocument();
188
189     xmlDocument.setParameter("columnName", getData("ColumnName"));
190     xmlDocument.setParameter("columnNameInp", getData("ColumnNameInp"));
191     xmlDocument.setParameter("size", getData("CssSize"));
192     xmlDocument.setParameter("maxlength", getData("FieldLength"));
193     xmlDocument.setParameter("invalid", this.invalid);
194     xmlDocument.setParameter("missing", this.missing);
195     xmlDocument.setParameter("range", this.range);
196     boolean isDisabled = (getData("IsReadOnly").equals("Y") || getData("IsReadOnlyTab").equals("Y") || getData("IsUpdateable").equals("N"));
197     xmlDocument.setParameter("disabled", (isDisabled?"Y":"N"));
198
199     if (!isDisabled && getData("IsMandatory").equals("Y")) {
200       xmlDocument.setParameter("required", "true");
201       xmlDocument.setParameter("requiredClass", " required");
202     } else {
203       xmlDocument.setParameter("required", "false");
204       xmlDocument.setParameter("requiredClass", (isDisabled?" readonly":""));
205     }
206
207     xmlDocument.setParameter("callout", getOnChangeCode());
208
209     return replaceHTML(xmlDocument.print());
210   }
211
212   public String JavaDoc newMode() {
213     XmlDocument xmlDocument = getReportEngine().readXmlTemplate("org/openbravo/wad/controls/WADControl").createXmlDocument();
214
215     xmlDocument.setParameter("columnName", getData("ColumnName"));
216     xmlDocument.setParameter("columnNameInp", getData("ColumnNameInp"));
217     xmlDocument.setParameter("size", getData("CssSize"));
218     xmlDocument.setParameter("maxlength", getData("FieldLength"));
219     xmlDocument.setParameter("invalid", this.invalid);
220     xmlDocument.setParameter("missing", this.missing);
221     xmlDocument.setParameter("range", this.range);
222
223     boolean isDisabled = (getData("IsReadOnly").equals("Y") || getData("IsReadOnlyTab").equals("Y"));
224     xmlDocument.setParameter("disabled", (isDisabled?"Y":"N"));
225     if (!isDisabled && getData("IsMandatory").equals("Y")) {
226       xmlDocument.setParameter("required", "true");
227       xmlDocument.setParameter("requiredClass", " required");
228     } else {
229       xmlDocument.setParameter("required", "false");
230       xmlDocument.setParameter("requiredClass", (isDisabled?" readonly":""));
231     }
232
233     xmlDocument.setParameter("callout", getOnChangeCode());
234
235     return replaceHTML(xmlDocument.print());
236   }
237
238   public String JavaDoc getType() {
239     if (getData("IsDisplayed").equals("N")) return "Hidden";
240     else return "TextBox";
241   }
242
243   public String JavaDoc toString() {
244     StringBuffer JavaDoc text = new StringBuffer JavaDoc();
245     if (getData("IsDisplayed").equals("N")) {
246       WADControl aux = new WADHidden(getData("ColumnName"), getData("ColumnNameInp"), "data", false);
247       aux.setReportEngine(getReportEngine());
248       text.append(aux.toString());
249     } else {
250       text.append("<div id=\"editDiscard\">");
251       text.append(editMode()).append("");
252       text.append("</div>");
253       text.append("<div id=\"newDiscard\">");
254       text.append(newMode()).append("");
255       text.append("</div>");
256     }
257     return text.toString();
258   }
259
260   public String JavaDoc toLabel() {
261     if (getData("AD_Reference_ID").equals("28")) return "";
262     String JavaDoc[] discard = {"isNotLinkable"};
263     String JavaDoc isLinkable = getData("IsLinkable");
264     if (isLinkable==null || !isLinkable.equals("Y")) discard[0] = "isLinkable";
265     
266     String JavaDoc column = getData("ColumnNameLabel");
267     if (column==null || column.equals("")) column = getData("ColumnName");
268
269     XmlDocument xmlDocument = getReportEngine().readXmlTemplate("org/openbravo/wad/controls/WADControlLabel", discard).createXmlDocument();
270
271     xmlDocument.setParameter("columnName", getData("ColumnName"));
272     xmlDocument.setParameter("columnNameLabel", column);
273     xmlDocument.setParameter("keyColumnName", getData("KeyColumnName"));
274     xmlDocument.setParameter("columnNameInp", getData("ColumnNameInp"));
275     xmlDocument.setParameter("tableID", getData("AD_Table_ID"));
276     xmlDocument.setParameter("name", getData("Name"));
277     return replaceHTML(xmlDocument.print());
278   }
279
280   public String JavaDoc toJava() {
281     return "";
282   }
283
284   public String JavaDoc toXml() {
285     StringBuffer JavaDoc text = new StringBuffer JavaDoc();
286     if (getData("IsParameter").equals("Y")) {
287       text.append("<PARAMETER id=\"").append(getData("ColumnName"));
288       text.append("\" name=\"").append(getData("ColumnName"));
289       text.append("\" attribute=\"value\" default=\"N\"/>");
290     } else {
291       text.append("<FIELD id=\"").append(getData("ColumnName"));
292       text.append("\" attribute=\"value\" default=\"N\">");
293       text.append(getData("ColumnName")).append("</FIELD>");
294     }
295     return text.toString();
296   }
297 }
298
Popular Tags