Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

Widget.java

Go to the documentation of this file.
00001 import java.io.PrintWriter;
00002 import java.util.Vector;
00003 import java.io.Serializable;
00004 import java.io.InputStream;
00005 import java.io.ByteArrayInputStream;
00006 import java.io.ByteArrayOutputStream;
00007 import java.io.ObjectInputStream;
00008 import java.io.ObjectOutputStream;
00009 
00010 public abstract class Widget
00011 {
00012   public String prefix;
00013   public Form form;
00014 
00015   public boolean modal = false;
00016 
00017   public Vector children = new Vector();
00018   public Widget modalChild;
00019 
00020   public static final int GET = 1;
00021   public static final int POST = 2;
00022   public static final int BOTH = 3;
00023 
00024   public String name;
00025   public int method;
00026 
00027   public Widget(String prefix, Form form)
00028   {
00029     this.prefix = prefix;
00030     this.form = form;
00031   }
00032 
00033   public void addChild(Widget w)
00034   {
00035     children.add(w);
00036   }
00037 
00038   public void loadDefaults()
00039   {
00040     int l = children.size();
00041     for(int i = 0; i < l; ++i)
00042     {
00043       Widget w = (Widget)children.get(i);
00044       w.loadDefaults();
00045     }    
00046   }
00047 
00048   public void loadValues()
00049   {
00050     int l = children.size();
00051     for(int i = 0; i < l; ++i)
00052     {
00053       Widget w = (Widget)children.get(i);
00054       w.loadValues();
00055       if (w.modal) modalChild = w;
00056     }
00057   }
00058 
00059   public void display()
00060   {
00061     display(false);
00062   }
00063 
00064   public void display(boolean hidden)
00065   {
00066     if (hidden || modalChild != null)
00067     {
00068       int l = children.size();
00069       for(int i = 0; i < l; ++i)
00070       {
00071         Widget w = (Widget)children.get(i);
00072         w.display(!w.modal);
00073       }
00074     }
00075   }
00076 
00077   public void dumpscript() { }
00078 
00079   public String loadAttribute()
00080   {
00081     return form.req.getParameter(prefix);
00082   }
00083 
00084   public String loadAttribute(String name)
00085   {
00086     return form.req.getParameter(n(name));
00087   }
00088 
00089   public String n(String suffix)
00090   {
00091     return suffix != null ? prefix + "." + suffix : prefix;
00092   }
00093 
00094   public void printAttribute(String name, String value)
00095   {
00096     p("<input type=hidden name=\"" + n(name) + "\" value=\"" + htmlencode(value) + "\">");
00097   }
00098 
00099   public void preserveAttribute(String name)
00100   {
00101     String v = loadAttribute(name);
00102     if (v != null) printAttribute(name, v);
00103   }
00104 
00105   public void p(String str)
00106   {
00107     form.pw.print(str);
00108   }
00109 
00110   public void p(Exception e)
00111   {
00112     ShowException(e, form.pw);
00113   }
00114 
00115   public static String htmlencode(String v)
00116   {
00117     if (v == null) return "";
00118     StringBuffer b = new StringBuffer();
00119     int l = v.length();
00120 
00121     for(int i = 0; i < l; ++i)
00122     {
00123       char c = v.charAt(i);
00124 
00125       switch (c)
00126       {
00127         case '"':
00128           b.append("&quot;");
00129         break;
00130         case '<':
00131           b.append("&lt;");
00132         break;
00133         case '>':
00134           b.append("&gt;");
00135         break;
00136         case '&':
00137           b.append("&amp;");
00138         break;
00139         default:
00140           b.append(c);
00141         break;
00142       }
00143     }
00144     return b.toString();
00145   }
00146 
00147   public String serialize(Serializable o)
00148   {
00149     String r = null;
00150     try
00151     {
00152       ByteArrayOutputStream bos = new ByteArrayOutputStream();
00153       try
00154       {
00155         ObjectOutputStream oos = new ObjectOutputStream(bos);
00156         try
00157         {
00158           oos.writeObject(o);
00159           oos.flush();
00160           r = Base64.encodeBytes(bos.toByteArray());
00161         }
00162         finally
00163         {
00164           oos.close();
00165         }
00166       }
00167       finally
00168       {
00169         bos.close();
00170       }
00171     }
00172     catch (java.io.IOException e)
00173     {
00174       p("<h1>Serialize IO Exception: " + e.toString() + "</h1>");
00175     }
00176     return r;
00177   }
00178 
00179   public Object unserialize(String s)
00180   {
00181     Object o = null;
00182     try
00183     {
00184       InputStream is = new ByteArrayInputStream(Base64.decode(s));
00185       try
00186       {
00187         ObjectInputStream ois = new ObjectInputStream(is);
00188         try
00189         {
00190           o = ois.readObject();
00191         }
00192         finally
00193         {
00194           ois.close();
00195         }
00196         is.close();
00197       }
00198       finally
00199       {
00200         is.close();
00201       }
00202     }
00203     catch (java.io.IOException e)
00204     {
00205       p(e);
00206     }
00207     catch (java.lang.ClassNotFoundException e)
00208     {
00209       p(e);
00210     }
00211     return o;
00212   }
00213 
00214   public int toInt(String str, int def)
00215   {
00216     try
00217     {
00218       return str == null ? def : Integer.parseInt(str);
00219     }
00220     catch (java.lang.NumberFormatException e)
00221     {
00222       return def;
00223     }
00224   }
00225   
00226   public static void ShowException(Throwable t, PrintWriter pw)
00227   {
00228     pw.println("</select>");
00229     pw.println("<h2>Exception Caught</h2>");
00230     pw.print("<pre style=\"background-color: #eeeeee\">");
00231     t.printStackTrace(pw);
00232     pw.println("</pre>");
00233   }
00234   
00235 };

Generated on Mon Mar 6 23:34:35 2006 by  doxygen 1.4.4