1 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 , String > data = new Hashtable<String , String >(); 28 private Vector<String []> css = new Vector<String []>(); 29 private Vector<String []> imports = new Vector<String []>(); 30 private Vector<String []> jsCode = new Vector<String []>(); 31 XmlEngine xmlEngine; 32 private String validation = ""; 33 private String onload = ""; 34 private ConnectionProvider conn = null; 35 public String invalid = ""; 36 public String range = ""; 37 public String missing = ""; 38 39 public WADControl() { 40 } 41 42 public void setData(String name, String value) { 43 if (name==null) return; 44 if (this.data==null) this.data = new Hashtable<String , String >(); 45 if (value==null || value.equals("")) this.data.remove(name.toUpperCase()); 46 else this.data.put(name.toUpperCase(), value); 47 } 48 49 public String getData(String name) { 50 String 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 _name = (String )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 name, String _data) { 84 if (css==null) css = new Vector<String []>(); 85 String [] aux = new String [2]; 86 aux[0]=name; 87 aux[1]=_data; 88 css.addElement(aux); 89 } 90 91 public void addImport(String name, String _data) { 92 if (imports==null) imports = new Vector<String []>(); 93 String [] aux = new String [2]; 94 aux[0]=name; 95 aux[1]=_data; 96 imports.addElement(aux); 97 } 98 99 public void addJSCode(String name, String _code) { 100 if (jsCode==null) jsCode = new Vector<String []>(); 101 String [] aux = new String [2]; 102 aux[0] = name; 103 aux[1] = _code; 104 jsCode.addElement(aux); 105 } 106 107 public void setValidation(String _code) { 108 validation = _code; 109 } 110 111 public String getValidation() { 112 return validation; 113 } 114 115 public void setOnLoad(String _code) { 116 onload = _code; 117 } 118 119 public String getOnLoad() { 120 return onload; 121 } 122 123 public Vector<String []> getJSCode() { 124 return jsCode; 125 } 126 127 public Vector<String []> getImport() { 128 return imports; 129 } 130 131 public Vector<String []> getCSSImport() { 132 return css; 133 } 134 135 public String replaceHTML(String 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 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 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 getOnChangeCode() { 176 StringBuffer text = new StringBuffer (); 177 if (getData("IsDisplayLogic").equals("Y")) text.append("displayLogic();"); 178 String callout = getData("CallOutName"); 179 String 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 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 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 getType() { 239 if (getData("IsDisplayed").equals("N")) return "Hidden"; 240 else return "TextBox"; 241 } 242 243 public String toString() { 244 StringBuffer text = new StringBuffer (); 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 toLabel() { 261 if (getData("AD_Reference_ID").equals("28")) return ""; 262 String [] discard = {"isNotLinkable"}; 263 String isLinkable = getData("IsLinkable"); 264 if (isLinkable==null || !isLinkable.equals("Y")) discard[0] = "isLinkable"; 265 266 String 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 toJava() { 281 return ""; 282 } 283 284 public String toXml() { 285 StringBuffer text = new StringBuffer (); 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 |