View Javadoc

1   package org.appfuse.webapp.services.impl;
2   
3   import org.apache.tapestry5.Field;
4   import org.apache.tapestry5.MarkupWriter;
5   import org.apache.tapestry5.ValidationDecorator;
6   import org.apache.tapestry5.ValidationTracker;
7   import org.apache.tapestry5.dom.Element;
8   import org.apache.tapestry5.services.Environment;
9   
10  /**
11   * Custom Implementation of the ValidationDecorator Interface
12   * Updated to use Twitter Twitter Bootstrap framework
13   *
14   * @author Serge Eby
15   * @version $Id: BootstrapValidationDecorator.java 5 2008-08-30 09:59:21Z serge.eby $
16   */
17  public class BootstrapValidationDecorator implements ValidationDecorator {
18  
19      private final Environment environment;
20      private final MarkupWriter markupWriter;
21  
22      public BootstrapValidationDecorator(Environment environment, MarkupWriter markupWriter) {
23          this.environment = environment;
24          this.markupWriter = markupWriter;
25      }
26  
27      public void insideField(Field field) {
28  
29      }
30  
31      public void beforeLabel(Field field) {
32  
33      }
34  
35      public void insideLabel(Field field, Element labelElement) {
36          if (inError(field)) {
37              Element parent = labelElement.getContainer();
38              parent.addClassName("error");
39              labelElement.addClassName("error");
40          }
41  
42          if (field.isRequired()) {
43              labelElement.raw("<span class=\"required\"> *</span>");
44          }
45  
46      }
47  
48      public void afterLabel(Field field) {
49  
50      }
51  
52      public void beforeField(Field field) {
53  
54      }
55  
56      public void afterField(Field field) {
57          if (inError(field)) {
58              markupWriter.element("span",
59                      "id", field.getClientId(),
60                      "class", "help-inline");
61  
62              String error = getError(field);
63              if (error == null) {
64                  error = "";
65              }
66              markupWriter.writeRaw(error);
67              markupWriter.end(); // span
68          }
69      }
70  
71      private boolean inError(Field field) {
72          ValidationTracker tracker = environment.peekRequired(ValidationTracker.class);
73          return tracker.inError(field);
74      }
75  
76      private String getError(Field field) {
77          ValidationTracker tracker = environment.peekRequired(ValidationTracker.class);
78          return tracker.getError(field);
79      }
80  
81  
82  }