1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.facelets;
21
22 import org.apache.myfaces.tobago.component.Attributes;
23 import org.apache.myfaces.tobago.component.UIFlowLayout;
24 import org.apache.myfaces.tobago.layout.Measure;
25 import org.apache.myfaces.tobago.layout.TextAlign;
26
27 import javax.faces.view.facelets.FaceletContext;
28 import javax.faces.view.facelets.MetaRule;
29 import javax.faces.view.facelets.Metadata;
30 import javax.faces.view.facelets.MetadataTarget;
31 import javax.faces.view.facelets.TagAttribute;
32
33 public class FlowLayoutRule extends MetaRule {
34
35 public static final FlowLayoutRule INSTANCE = new FlowLayoutRule();
36
37 public Metadata applyRule(String name, TagAttribute attribute, MetadataTarget metadataTarget) {
38 if (metadataTarget.isTargetInstanceOf(UIFlowLayout.class)) {
39 if (attribute.isLiteral()) {
40 if (Attributes.TEXT_ALIGN.equals(name)) {
41 return new TextAlignMapper(attribute);
42 }
43 if (Attributes.MARGIN_LEFT.equals(name)) {
44 return new MarginLeftMapper(attribute);
45 }
46 if (Attributes.MARGIN_TOP.equals(name)) {
47 return new MarginTopMapper(attribute);
48 }
49 if (Attributes.MARGIN_RIGHT.equals(name)) {
50 return new MarginRightMapper(attribute);
51 }
52 if (Attributes.MARGIN_BOTTOM.equals(name)) {
53 return new MarginBottomMapper(attribute);
54 }
55 if (Attributes.MARGIN.equals(name)) {
56 return new MarginMapper(attribute);
57 }
58 }
59 }
60 return null;
61 }
62
63 static final class TextAlignMapper extends Metadata {
64 private final TagAttribute attribute;
65
66 TextAlignMapper(TagAttribute attribute) {
67 this.attribute = attribute;
68 }
69
70 public void applyMetadata(FaceletContext ctx, Object instance) {
71 UIFlowLayout gridLayout = (UIFlowLayout) instance;
72 gridLayout.setTextAlign(TextAlign.parse(attribute.getValue()));
73 }
74 }
75
76 static final class MarginLeftMapper extends Metadata {
77 private final TagAttribute attribute;
78
79 MarginLeftMapper(TagAttribute attribute) {
80 this.attribute = attribute;
81 }
82
83 public void applyMetadata(FaceletContext ctx, Object instance) {
84 UIFlowLayout gridLayout = (UIFlowLayout) instance;
85 gridLayout.setMarginLeft(Measure.valueOf(attribute.getValue()));
86 }
87 }
88
89 static final class MarginTopMapper extends Metadata {
90 private final TagAttribute attribute;
91
92 MarginTopMapper(TagAttribute attribute) {
93 this.attribute = attribute;
94 }
95
96 public void applyMetadata(FaceletContext ctx, Object instance) {
97 UIFlowLayout gridLayout = (UIFlowLayout) instance;
98 gridLayout.setMarginTop(Measure.valueOf(attribute.getValue()));
99 }
100 }
101
102 static final class MarginRightMapper extends Metadata {
103 private final TagAttribute attribute;
104
105 MarginRightMapper(TagAttribute attribute) {
106 this.attribute = attribute;
107 }
108
109 public void applyMetadata(FaceletContext ctx, Object instance) {
110 UIFlowLayout gridLayout = (UIFlowLayout) instance;
111 gridLayout.setMarginRight(Measure.valueOf(attribute.getValue()));
112 }
113 }
114
115 static final class MarginBottomMapper extends Metadata {
116 private final TagAttribute attribute;
117
118 MarginBottomMapper(TagAttribute attribute) {
119 this.attribute = attribute;
120 }
121
122 public void applyMetadata(FaceletContext ctx, Object instance) {
123 UIFlowLayout gridLayout = (UIFlowLayout) instance;
124 gridLayout.setMarginBottom(Measure.valueOf(attribute.getValue()));
125 }
126 }
127
128 static final class MarginMapper extends Metadata {
129 private final TagAttribute attribute;
130
131 MarginMapper(TagAttribute attribute) {
132 this.attribute = attribute;
133 }
134
135 public void applyMetadata(FaceletContext ctx, Object instance) {
136 UIFlowLayout gridLayout = (UIFlowLayout) instance;
137 gridLayout.setMargin(Measure.valueOf(attribute.getValue()));
138 }
139 }
140 }