1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.vaadin.gwt.client.actionbar.widget;
35
36 import info.magnolia.ui.vaadin.gwt.client.actionbar.shared.ActionbarSection;
37
38 import java.util.LinkedHashMap;
39 import java.util.Map;
40
41 import com.google.gwt.user.client.DOM;
42 import com.google.gwt.user.client.Element;
43 import com.google.gwt.user.client.ui.FlowPanel;
44 import com.google.gwt.user.client.ui.Widget;
45
46
47
48
49 public class ActionbarSectionWidget extends FlowPanel {
50
51 public static final String CLASSNAME = "v-actionbar-section";
52
53 public static final String TITLE_TAGNAME = "h3";
54
55 private final Element heading = DOM.createElement("h3");
56
57 private final ActionbarSection data;
58
59 private final Map<String, VActionbarGroup> groups = new LinkedHashMap<String, VActionbarGroup>();
60
61 private Widget preview;
62
63
64
65
66
67
68 public ActionbarSectionWidget(ActionbarSection data) {
69 this.data = data;
70 setStyleName(CLASSNAME);
71 heading.addClassName("v-actionbar-section-title");
72 getElement().appendChild(heading);
73 update();
74 }
75
76 public String getName() {
77 return data.getName();
78 }
79
80 public Map<String, VActionbarGroup> getGroups() {
81 return groups;
82 }
83
84 public void addGroup(VActionbarGroup group) {
85 groups.put(group.getName(), group);
86 if (this.preview != null) {
87 int idx = Math.max(getWidgetIndex(preview), 0);
88 insert(group, idx);
89 } else {
90 add(group);
91 }
92 }
93
94 public void setPreview(Widget preview) {
95 if (this.preview != null) {
96 remove(this.preview);
97 }
98 add(preview);
99 this.preview = preview;
100 }
101
102 public void update() {
103 heading.setInnerText(data.getName());
104 heading.setInnerText(data.getCaption());
105 }
106
107 public ActionbarSection getData() {
108 return data;
109 }
110
111 }