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.widget.controlbar;
35
36 import info.magnolia.ui.vaadin.gwt.client.widget.controlbar.eventmanager.ControlBarEventHandler;
37 import info.magnolia.ui.vaadin.gwt.client.widget.controlbar.eventmanager.ControlBarEventManager;
38 import info.magnolia.ui.vaadin.gwt.client.widget.controlbar.listener.AreaListener;
39
40 import com.google.gwt.core.client.GWT;
41 import com.google.gwt.dom.client.NativeEvent;
42 import com.google.gwt.user.client.ui.HTML;
43 import com.google.gwt.user.client.ui.Label;
44
45
46
47
48 public class AreaBar extends AbstractBar {
49
50 protected AreaListener listener;
51
52 private ControlBarEventManager eventManager = GWT.create(ControlBarEventManager.class);
53 private boolean addable;
54 private boolean editable;
55
56 protected AreaBar() {
57 addStyleName(AREA_CLASS_NAME);
58 }
59
60 protected void createControls() {
61 if (addable) {
62 final HTML add = new HTML();
63 add.setStyleName(ICON_CLASS_NAME);
64 add.addStyleName(ADD_CLASS_NAME);
65 eventManager.addClickOrTouchHandler(add, new ControlBarEventHandler() {
66 @Override
67 public void handle(NativeEvent event) {
68 listener.createOptionalArea();
69 }
70 });
71 addButton(add);
72 }
73
74 if (editable) {
75 final Label edit = new Label();
76 edit.setStyleName(ICON_CLASS_NAME);
77 edit.addStyleName(EDIT_CLASS_NAME);
78 eventManager.addClickOrTouchHandler(edit, new ControlBarEventHandler() {
79 @Override
80 public void handle(NativeEvent event) {
81 listener.editArea();
82 }
83 });
84 addButton(edit);
85 }
86 }
87
88
89
90
91
92 public static class Builder {
93
94 private AreaListener listener;
95 private boolean edit;
96 private boolean add;
97 private int level;
98 private String label;
99 private int activationStatus;
100
101 public Builder withListener(AreaListener listener) {
102 this.listener = listener;
103 return this;
104 }
105
106 public Builder withAdd(boolean add) {
107 this.add = add;
108 return this;
109 }
110
111 public Builder withEdit(boolean edit) {
112 this.edit = edit;
113 return this;
114 }
115
116 public Builder withLevel(int level) {
117 this.level = level;
118 return this;
119 }
120
121 public Builder withLabel(String label) {
122 this.label = label;
123 return this;
124 }
125
126 public Builder withActivationStatus(int activationStatus) {
127 this.activationStatus = activationStatus;
128 return this;
129 }
130
131 public AreaBar build() {
132 AreaBar areaBar = GWT.create(AreaBar.class);
133 areaBar.listener = listener;
134 areaBar.addable = add;
135 areaBar.editable = edit;
136 areaBar.initLayout();
137 areaBar.addLabel(label, level);
138 areaBar.addStatusIndicator(activationStatus);
139 areaBar.createControls();
140
141 return areaBar;
142 }
143 }
144 }