| 1 | |
|
| 2 | |
|
| 3 | |
|
| 4 | |
|
| 5 | |
|
| 6 | |
|
| 7 | |
|
| 8 | |
|
| 9 | |
|
| 10 | |
|
| 11 | |
|
| 12 | |
|
| 13 | |
|
| 14 | |
|
| 15 | |
package org.apache.tapestry5.internal; |
| 16 | |
|
| 17 | |
import org.apache.tapestry5.*; |
| 18 | |
import org.apache.tapestry5.dom.Element; |
| 19 | |
import org.apache.tapestry5.services.Environment; |
| 20 | |
import org.apache.tapestry5.services.FormSupport; |
| 21 | |
|
| 22 | |
|
| 23 | |
|
| 24 | |
|
| 25 | |
public final class DefaultValidationDecorator extends BaseValidationDecorator |
| 26 | |
{ |
| 27 | |
private final Environment environment; |
| 28 | |
|
| 29 | |
private final Asset spacerAsset; |
| 30 | |
|
| 31 | |
private final MarkupWriter markupWriter; |
| 32 | |
|
| 33 | |
|
| 34 | |
|
| 35 | |
|
| 36 | |
|
| 37 | |
|
| 38 | |
public DefaultValidationDecorator(Environment environment, Asset spacerAsset, MarkupWriter markupWriter) |
| 39 | 1176 | { |
| 40 | 1176 | this.environment = environment; |
| 41 | 1176 | this.spacerAsset = spacerAsset; |
| 42 | 1176 | this.markupWriter = markupWriter; |
| 43 | 1176 | } |
| 44 | |
|
| 45 | |
@Override |
| 46 | |
public void insideField(Field field) |
| 47 | |
{ |
| 48 | 690 | if (inError(field)) addErrorClassToCurrentElement(); |
| 49 | 690 | } |
| 50 | |
|
| 51 | |
@Override |
| 52 | |
public void insideLabel(Field field, Element element) |
| 53 | |
{ |
| 54 | 582 | if (field == null) return; |
| 55 | |
|
| 56 | 580 | if (inError(field)) element.addClassName(CSSClassConstants.ERROR); |
| 57 | 580 | } |
| 58 | |
|
| 59 | |
|
| 60 | |
|
| 61 | |
|
| 62 | |
|
| 63 | |
|
| 64 | |
|
| 65 | |
|
| 66 | |
|
| 67 | |
|
| 68 | |
@Override |
| 69 | |
public void afterField(Field field) |
| 70 | |
{ |
| 71 | 842 | boolean inError = inError(field); |
| 72 | |
|
| 73 | 842 | boolean clientValidationEnabled = getFormSupport().isClientValidationEnabled(); |
| 74 | |
|
| 75 | 842 | if (inError || clientValidationEnabled) |
| 76 | |
{ |
| 77 | 674 | String iconId = field.getClientId() + "-icon"; |
| 78 | |
|
| 79 | 674 | String cssClass = inError ? "t-error-icon" : "t-error-icon t-invisible"; |
| 80 | |
|
| 81 | 674 | markupWriter.element("img", |
| 82 | |
"src", spacerAsset.toClientURL(), |
| 83 | |
"alt", "", |
| 84 | |
"class", cssClass, |
| 85 | |
"id", iconId); |
| 86 | 674 | markupWriter.end(); |
| 87 | |
} |
| 88 | |
|
| 89 | 842 | } |
| 90 | |
|
| 91 | |
private FormSupport getFormSupport() |
| 92 | |
{ |
| 93 | 842 | return environment.peekRequired(FormSupport.class); |
| 94 | |
} |
| 95 | |
|
| 96 | |
private boolean inError(Field field) |
| 97 | |
{ |
| 98 | 2112 | ValidationTracker tracker = environment.peekRequired(ValidationTracker.class); |
| 99 | |
|
| 100 | 2112 | return tracker.inError(field); |
| 101 | |
} |
| 102 | |
|
| 103 | |
private void addErrorClassToCurrentElement() |
| 104 | |
{ |
| 105 | 46 | markupWriter.getElement().addClassName(CSSClassConstants.ERROR); |
| 106 | 46 | } |
| 107 | |
} |