Changeset 3759


Ignore:
Timestamp:
Jul 29, 2010, 1:57:24 PM (13 years ago)
Author:
Gregory Vincic
Message:

Refs #696. Forms are now built up of a table for each fieldset. Labels are not wrapped anymore and help text messages are located to the right of the field even if wrapped.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/api/waf/src/se/lu/thep/waf/HtmlTagWriter.java

    r2381 r3759  
    7676    if (tag instanceof CData)
    7777    {
    78       // No tags for CData
    79       // writer.print(getIndentString());
    8078      writer.print(((CData) tag).getStr());
    8179    }
     
    8381    {
    8482      writeStartTag(writer, tag);
    85       List<Tag<?>> elements = tag.getElements();
    86       if (elements != null && elements.size() > 0)
     83  }
     84    List<Tag<?>> elements = tag.getElements();
     85    // Write child elements
     86  if(elements != null && elements.size() > 0)
     87  {
     88      for (Tag child : elements)
    8789      {
    88         // Close start tag
    89         if (elements.get(0).getClass().equals(CData.class))
    90           writer.print(">");
    91         else
    92           writer.println(">");
    93         // Write child elements
    94         for (Tag child : elements)
    95         {
    96           indent++;
    97           child.draw(this);
    98         }
    99         writeEndTag(writer, tag);
     90        indent++;
     91        child.draw(this);
    10092      }
    101       else
    102       {
    103         // Close start tag
    104         writer.println("/>");
    105       }
     93   if(!(tag instanceof CData))
     94   {
     95      writeEndTag(writer, tag);
     96      indent--;
     97   }
    10698    }
    107     indent--;
    10899  }
    109100
     
    117108    sb.append(tag.getName());
    118109    writeAttributes(sb, tag);
     110    if (tag.getElements() != null && tag.getElements().size() > 0)
     111    {
     112      if (tag.getElements().get(0).getClass().equals(CData.class))
     113          sb.append(">");
     114      else
     115        sb.append("\n>");
     116  }
     117  else
     118  {
     119    sb.append("/>");
     120  }
    119121    writer.print(sb.toString());
    120122  }
  • trunk/build.xml

    r3678 r3759  
    139139          description="Same as 'ant clean compile hibernate dist-jar'"
    140140          >
    141     <antcall target="clean"/>
     141<!--    <antcall target="clean"/> -->
    142142    <ant dir="api/core"
    143143         target="set-version"
  • trunk/client/servlet/src/org/proteios/gui/web/GUIConverter.java

    r3711 r3759  
    7272import org.proteios.gui.table.TreeRow;
    7373
     74import se.lu.thep.waf.constraints.VString;
    7475import se.lu.thep.waf.dom.html.A;
    7576import se.lu.thep.waf.dom.html.Area;
     
    12201221  public Tag convert(org.proteios.gui.form.Form w)
    12211222  {
    1222     Tag layout = hf.newLayoutDiv();
    1223     boolean clearForm = false;
     1223  Tag layout;
     1224  boolean clearForm;
     1225  Toolbar tb;
     1226  Form form;
     1227  Input field;
     1228  AbstractLink defaultAction;
     1229
     1230    layout = hf.newLayoutDiv();
     1231    clearForm = false;
    12241232    if (currentFormTag == null)
    12251233    {
     
    12311239        "display: none"));
    12321240    }
    1233     Toolbar tb = w.getToolbar();
     1241    tb = w.getToolbar();
    12341242    // This might cause a failure if the currentFormTag is not a Form
    1235     Form form = (Form) currentFormTag;
     1243    form = (Form) currentFormTag;
    12361244    if (tb != null)
    12371245    {
    1238       Input field = form.newInput().setId(w.getId() + "action").setName(
     1246      field = form.newInput().setId(w.getId() + "action").setName(
    12391247        "action").setType("hidden");
    12401248      if (tb.getDefaultAction() != null)
    12411249      {
    1242         AbstractLink defaultAction = tb.getDefaultAction();
     1250        defaultAction = tb.getDefaultAction();
    12431251        if (defaultAction instanceof ActionLink)
    12441252          field.setValue(((ActionLink) defaultAction).getActionId());
     
    12741282  private Tag convertFieldset(org.proteios.gui.form.Fieldset fs, Form form)
    12751283  {
    1276     Fieldset fieldset = new Fieldset();
     1284    Fieldset fieldset;
     1285  Tag legend, title, fields, table, row, helpC, input;
     1286  String subtitle;
     1287  org.proteios.gui.form.Field field;
     1288
     1289  fieldset = new Fieldset();
    12771290    // Fieldset legend
    1278     Tag legend = fieldset.newDiv().setClass("legend");
    1279     Tag title = new Div().addClass("title");
     1291    legend = fieldset.newDiv().setClass("legend");
     1292    title = new Div().addClass("title");
    12801293    if (fs.getLegendTitle() != null)
    12811294    {
    12821295      title.add(new CData(
    12831296        locale.get(fs.getLegendTitle().getTitle()) + "&nbsp;"));
    1284       String subtitle = fs.getLegendTitle().getSubtitle();
     1297      subtitle = fs.getLegendTitle().getSubtitle();
    12851298      if (subtitle != null)
    12861299      {
     
    12901303    }
    12911304    legend.add(title.getRoot());
    1292     //
    1293     Tag fields = fieldset.newDiv().setClass("fields");
     1305
     1306    fields = fieldset.newDiv().setClass("fields");
     1307  table = fields.newTable();
    12941308    for (org.proteios.gui.GUIElement f : fs.getFields())
    12951309    {
    1296       if (f instanceof TextField)
    1297       {
    1298         fields.add(convert((TextField<?>) f));
    1299         continue;
    1300       }
    1301       if (f instanceof PasswordField)
    1302       {
    1303         fields.add(convert((PasswordField) f));
    1304         continue;
    1305       }
    1306       if (form != null)
    1307       {
    1308         if (f instanceof FileField)
    1309         {
    1310           form.setMultipart();
    1311           fields.add(convert((FileField) f));
    1312           continue;
    1313         }
    1314       }
    1315       if (f instanceof TextArea)
    1316       {
    1317         fields.add(convert((TextArea) f));
    1318         continue;
    1319       }
    1320       if (f instanceof org.proteios.gui.form.Select)
    1321       {
    1322         fields.add(convert((org.proteios.gui.form.Select) f));
    1323         continue;
    1324       }
    1325       if (f instanceof org.proteios.gui.form.Checkbox)
    1326       {
    1327         fields.add(convert((org.proteios.gui.form.Checkbox) f, true));
    1328         continue;
    1329       }
     1310   row = table.newTr();
     1311   // Label cell
     1312   if(f instanceof org.proteios.gui.form.Field)
     1313   {
     1314    field = (org.proteios.gui.form.Field) f;
     1315    row.newTd().addClass("label").newCData(locale.get(field.getLabel()));
     1316    input = null;
     1317    // Field cell
     1318      if (f instanceof TextField)
     1319      {
     1320     input = convert((TextField<?>) f);
     1321     if(((TextField<?>)field).isHidden())
     1322     {
     1323      row.addClass("hidden");
     1324     }
     1325      }
     1326    else if (f instanceof PasswordField)
     1327      {
     1328        input = convert((PasswordField) f);
     1329      }
     1330      else if (f instanceof FileField)
     1331      {
     1332        if (form != null)
     1333      {
     1334          form.setMultipart();
     1335     }
     1336        input = convert((FileField) f);
     1337      }
     1338      else if (f instanceof TextArea)
     1339      {
     1340        input = convert((TextArea) f);
     1341      }
     1342      else if (f instanceof org.proteios.gui.form.Select)
     1343      {
     1344        input = convert((org.proteios.gui.form.Select) f);
     1345      }
     1346      else if (f instanceof org.proteios.gui.form.Checkbox)
     1347      {
     1348        input = convert((org.proteios.gui.form.Checkbox) f, false);
     1349      }
     1350   
     1351      if (field.getParam().isRequired() ||
     1352        (field.getParam() instanceof VString && ((VString) field.getParam()).getMinCharacterLength() > 0))
     1353      {
     1354      input.addClass("required");
     1355    }
     1356    if(input != null)
     1357    {
     1358     row.newTd().add(input);
     1359    }
     1360
     1361    // Help and error field
     1362    helpC = row.newTd();
     1363    helpC.newDiv().addClass("error").add(hf.getFieldError(field));
     1364    helpC.newDiv().addClass("help").newCData(field.getHelp());
     1365   }
    13301366      if (f instanceof org.proteios.gui.table.Table)
    13311367      {
    1332         fields.add(convert((org.proteios.gui.table.Table) f));
    1333         continue;
    1334       }
     1368        row.newTd().add(convert((org.proteios.gui.table.Table) f));
     1369      }
     1370   
    13351371    }
    13361372    return fieldset;
     
    13461382    if (f.isDisabled())
    13471383      in.disable();
    1348     Tag field = hf.newField(f);
    1349     field.add(in);
    1350     field.add(hf.getFieldError(f));
    1351     return field;
    1352   }
     1384    return in;
     1385  }
     1386
    13531387
    13541388
    13551389  public Tag convert(org.proteios.gui.form.Select<?> select)
    13561390  {
    1357     Tag field = hf.newField(select);
     1391    Tag field = new CData("");
    13581392    Select selectTag = field.newSelect().setId(select.getId()).setName(
    13591393      select.getName());
     
    17111745      in.addClass("disabled");
    17121746    }
    1713     Tag field = hf.newField(f);
    1714     field.add(in);
    1715     if (request != null)
    1716     {
    1717       field.add(hf.getFieldError(f));
    1718     }
    1719     return field;
    1720   }
    1721 
    1722 
    1723   private <D extends Object> Tag<?> convert(
    1724       org.proteios.gui.form.TextField<D> f)
    1725   {
    1726     // Format the value
    1727     String value = null;
    1728     if (f.getValue() != null)
     1747    return in;
     1748  }
     1749
     1750
     1751 private String formatedValue(TextField<?> f)
     1752 {
     1753  String value;
     1754  value = null;
     1755    if (f != null && f.getValue() != null)
    17291756    {
    17301757      if (f.getValue() instanceof Date)
     
    17331760        value = f.getValue().toString();
    17341761    }
    1735     Input in = null;
    1736     // Use input
    1737     String type = "text";
     1762  return value;
     1763 }
     1764
     1765
     1766  private <D extends Object> Tag<?> convert(
     1767      org.proteios.gui.form.TextField<D> f)
     1768  {
     1769  String value, type;
     1770  Tag table, row, labelC, inC, helpC, container;
     1771  Input in;
     1772  Tag<?> field;
     1773
     1774    // Format the value
     1775    value = formatedValue(f);
     1776  container = new CData("");
     1777
     1778    in = null;
     1779    type = "text";
    17381780    if (f.isHidden() || f.isDisabled())
    17391781    {
     
    17431785  in.setSize(f.getCharWidth());
    17441786    if (value != null)
     1787  {
    17451788      in.setValue(value);
     1789  }
    17461790    in.setId(f.getId());
    1747     Tag<?> field = null;
    1748     if (f.isHidden())
    1749     {
    1750       field = in;
    1751    field.addClass("hidden");
    1752     }
    1753     else
    1754     {
    1755       field = hf.newField(f);
    1756       field.add(in);
    1757     }
    1758     if (request != null)
    1759     {
    1760       field.add(hf.getFieldError(f));
    1761     } 
    1762   if(!f.isHidden())
    1763   {
    1764     // Add help text to this field
    1765     field.newSpan().addClass("help").newCData(f.getHelp());
     1791  container.add(in);
     1792    if (f.isDisabled())
     1793    {
     1794   container.newCData(value);
    17661795  }
    1767     if (f.isDisabled() && !f.isHidden())
    1768     {
    1769       if (value == null)
    1770         value = "";
    1771       field.newCData(value);
    1772     }
    1773     return field;
     1796    return container;
    17741797  }
    17751798
     
    17801803      "password").setSize(f.getCharWidth());
    17811804    if (f.getValue() != null)
     1805  {
    17821806      in.setValue(f.getValue().toString());
    1783     Tag<?> field = hf.newField(f);
    1784     field.add(in);
    1785     field.add(hf.getFieldError(f));
    1786     return field;
     1807  }
     1808    return in;
    17871809  }
    17881810
  • trunk/client/servlet/www/static/css/colors.css

    r3711 r3759  
    120120  Required fields
    121121*************************************************/
    122 div.form form fieldset div.fields div.required input 
     122div.form form fieldset div.fields div.required input, input.required
    123123{
    124124  background-color: #d0f0ff;
  • trunk/client/servlet/www/static/css/layout2.jsp

    r3712 r3759  
    234234}
    235235
    236 div.form form fieldset div.fields div.field
     236div.form form fieldset div.fields table.field
     237{
     238 border: 0px;
     239 border-collapse: collapsed;
     240}
     241
     242div.form form fieldset div.fields .field
    237243{
    238244  float:left;
     
    246252}
    247253
    248 div.form form fieldset div.fields div.field label
     254div.form form fieldset div.fields .field label
    249255{
    250256  float: left;
     
    252258}
    253259
    254 div.form form fieldset div.fields div.field input,
    255 div.form form fieldset div.fields div.field select,
    256 div.form form fieldset div.fields div.field textarea
     260div.form form fieldset input,
     261div.form form fieldset select,
     262div.form form fieldset textarea
    257263{
    258264  border-width: 1px;
     
    274280{
    275281  width: 100%;
     282}
     283
     284div.form form .label
     285{
     286 white-space: nowrap;
     287}
     288
     289div.form tr.hidden
     290{
     291 display: none;
    276292}
    277293
Note: See TracChangeset for help on using the changeset viewer.