View Javadoc
1   package pl.matsuo.core.web.view;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   import java.util.Map;
6   import java.util.TreeMap;
7   
8   import static java.util.Arrays.*;
9   
10  
11  public class HtmlElement extends HtmlPart {
12  
13  
14    private final String element;
15    private final HtmlPart[] innerElements;
16    private final List<String> classes = new ArrayList<>();
17    private final Map<String, String> attributes = new TreeMap<>();
18  
19  
20    public HtmlElement(String element, HtmlPart ... innerElements) {
21      this.element = element;
22      this.innerElements = innerElements;
23    }
24  
25  
26    public HtmlElement style(String ... classes) {
27      return style(asList(classes));
28    }
29  
30  
31    public HtmlElement style(List<String> classes) {
32      this.classes.addAll(classes);
33      return this;
34    }
35  
36  
37    public HtmlElement attr(String name, String value) {
38      attributes.put(name, value);
39      return this;
40    }
41  
42  
43    public String getAttr(String name) {
44      return attributes.get(name);
45    }
46  
47  
48    @Override
49    public String toString() {
50      String rendering = "<" + element;
51  
52      rendering += " class=\"";
53      for (String clazz : classes) {
54        rendering += " " + clazz;
55      }
56      rendering += "\"";
57  
58      for (String attrName : attributes.keySet()) {
59        String value = attributes.get(attrName);
60        rendering += " " + attrName + (value == null ? "" : "=\"" + attributes.get(attrName) + "\"");
61      }
62  
63      rendering += ">\n";
64  
65      for (HtmlPart htmlPart : innerElements) {
66        rendering += htmlPart.toString() + "\n";
67      }
68  
69      rendering += "</" + element + ">";
70  
71      return rendering;
72    }
73  }
74