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.layout;
21
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
24
25 import java.lang.invoke.MethodHandles;
26 import java.util.ArrayList;
27 import java.util.List;
28 import java.util.StringTokenizer;
29
30 public class MarginTokens {
31
32 private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
33
34 private List<Margin> margins = new ArrayList<>();
35
36 public int getSize() {
37 return margins.size();
38 }
39
40 public Margin get(final int index) {
41 return margins.get(index);
42 }
43
44 public void addMargin(final Margin token) {
45 margins.add(token);
46 }
47
48 public List<Margin> getMargins() {
49 return margins;
50 }
51
52 public static MarginTokens parse(final String tokens) {
53 if (tokens == null) {
54 return null;
55 }
56 final MarginTokens marginTokens = new MarginTokens();
57 final StringTokenizer tokenizer = new StringTokenizer(tokens, "; ");
58
59 while (tokenizer.hasMoreTokens()) {
60 final String token = tokenizer.nextToken().trim();
61 marginTokens.addMargin(parseToken(token));
62 }
63 return marginTokens;
64 }
65
66 public static Margin parseToken(final String token) {
67 for (final Margin margin : Margin.values()) {
68 if (margin.name().equals(token)) {
69 return margin;
70 }
71 }
72 LOG.error("Error parsing layout token '" + token + "'! Using 'none' instead.");
73 return Margin.none;
74 }
75 }