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.dialog;
35
36 import info.magnolia.ui.api.overlay.OverlayLayer.ModalityLevel;
37 import info.magnolia.ui.api.view.View;
38 import info.magnolia.ui.dialog.actionarea.view.EditorActionAreaView;
39 import info.magnolia.ui.vaadin.dialog.BaseDialog;
40 import info.magnolia.ui.vaadin.dialog.BaseDialog.DialogCloseEvent;
41 import info.magnolia.ui.vaadin.dialog.BaseDialog.DialogCloseEvent.Handler;
42 import info.magnolia.ui.vaadin.dialog.BaseDialog.WideEvent;
43
44 import java.util.LinkedHashSet;
45 import java.util.Set;
46
47 import com.vaadin.event.ShortcutListener;
48 import com.vaadin.ui.Component;
49 import com.vaadin.ui.Panel;
50
51
52
53
54 public class BaseDialogViewImpl extends Panel implements DialogView {
55
56 public static final int DIALOG_WIDTH = 720;
57
58 private BaseDialog dialog;
59
60 private Set<DialogCloseHandler> dialogCloseHandlers = new LinkedHashSet<DialogCloseHandler>();
61
62 private View contentView;
63
64 private EditorActionAreaView actionAreaView;
65
66 private ModalityLevel modalityLevel = ModalityLevel.STRONG;
67
68 private boolean isClosed = false;
69
70 public BaseDialogViewImpl() {
71 this(new BaseDialog());
72 }
73
74 public BaseDialogViewImpl(BaseDialog dialog) {
75 this.dialog = dialog;
76
77 setContent(this.dialog);
78
79
80
81
82
83 setWidth(DIALOG_WIDTH, Unit.PIXELS);
84 setHeight(100, Unit.PERCENTAGE);
85
86 this.dialog.addDialogCloseHandler(new Handler() {
87 @Override
88 public void onClose(DialogCloseEvent event) {
89 close();
90 }
91 });
92
93 this.dialog.addWideHandler(new BaseDialog.WideEvent.Handler() {
94
95 @Override
96 public void onWideChanged(WideEvent event) {
97 handleSetWide(event.isWide());
98 }
99 });
100
101 this.dialog.setSizeFull();
102 this.dialog.setStyleName("dialog-panel");
103 }
104
105 private void handleSetWide(boolean isWide){
106 if (isWide){
107 setWidth(100, Unit.PERCENTAGE);
108 addStyleName("wide");
109 }else{
110 setWidth(DIALOG_WIDTH, Unit.PIXELS);
111 removeStyleName("wide");
112 }
113 }
114
115 @Override
116 public void setDescriptionVisible(boolean isDescriptionVisible) {
117 dialog.setDescriptionVisibility(isDescriptionVisible);
118 }
119
120 @Override
121 public void setDescription(String description) {
122 dialog.setDialogDescription(description);
123 }
124
125 @Override
126 public void setCaption(String caption) {
127 dialog.setCaption(caption);
128 }
129
130 @Override
131 public void setContent(View content) {
132 this.contentView = content;
133 dialog.setContent(content.asVaadinComponent());
134 }
135
136 @Override
137 public void close() {
138
139
140 if (!isClosed) {
141 isClosed = true;
142 for (final DialogCloseHandler handler : dialogCloseHandlers) {
143 handler.onDialogClose(BaseDialogViewImpl.this);
144 }
145 dialogCloseHandlers.clear();
146 }
147 }
148
149 @Override
150 public void setClosable(boolean isClosable) {
151 if (isClosable) {
152 dialog.showCloseButton();
153 }
154 }
155
156 @Override
157 public void addShortcut(ShortcutListener shortcut) {
158 addShortcutListener(shortcut);
159 }
160
161 @Override
162 public void removeShortcut(ShortcutListener shortcut) {
163 removeShortcutListener(shortcut);
164 }
165
166 @Override
167 public void addDialogCloseHandler(DialogCloseHandler handler) {
168 if (handler != null) {
169 dialogCloseHandlers.add(handler);
170 }
171 }
172
173 @Override
174 public void removeDialogCloseHandler(DialogCloseHandler handler) {
175 dialogCloseHandlers.remove(handler);
176 }
177
178 @Override
179 public void setActionAreaView(EditorActionAreaView actionAreaView) {
180 this.actionAreaView = actionAreaView;
181 dialog.setFooterToolbar(actionAreaView.asVaadinComponent());
182 }
183
184 @Override
185 public void attach() {
186 super.attach();
187 }
188
189 @Override
190 public Component asVaadinComponent() {
191 return this;
192 }
193
194 @Override
195 public View getContentView() {
196 return contentView;
197 }
198
199 @Override
200 public EditorActionAreaView getActionAreaView() {
201 return actionAreaView;
202 }
203
204 protected BaseDialog getDialog() {
205 return this.dialog;
206 }
207
208
209
210
211 @Override
212 public ModalityLevel getModalityLevel() {
213 return this.modalityLevel;
214 }
215
216 @Override
217 public void setModalityLevel(ModalityLevel modalityLevel) {
218 this.modalityLevel = modalityLevel;
219 if (modalityLevel == ModalityLevel.LIGHT) {
220 dialog.removeStyleName("dialog-panel");
221 dialog.addStyleName("light");
222 setWidth("620px");
223 }
224 dialog.setModalityLevel(modalityLevel.getName());
225 }
226
227 @Override
228 public void setWide(boolean isWide) {
229 handleSetWide(isWide);
230 dialog.setWideOnClient(isWide);
231 }
232 }