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