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;
35
36 import info.magnolia.ui.dialog.DialogComponent;
37 import info.magnolia.ui.dialog.EditorActionLayout;
38
39 import java.util.ArrayList;
40 import java.util.List;
41
42 import com.vaadin.ui.Component;
43 import com.vaadin.ui.UI;
44 import com.vaadin.ui.Window;
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 public class DialogBuilder {
66
67 private String title;
68 private Component content;
69 private List<Component> actions = new ArrayList<>();
70 private boolean modal = true;
71 private Component footer;
72
73 public static DialogBuilder dialog() {
74 return new DialogBuilder();
75 }
76
77 public DialogBuilder withTitle(String title) {
78 this.title = title;
79 return this;
80 }
81
82 public DialogBuilder withContent(Component content) {
83 this.content = content;
84 return this;
85 }
86
87 public DialogBuilder withActions(List<Component> actions) {
88 this.actions.addAll(actions);
89 return this;
90 }
91
92 public DialogBuilder modal() {
93 this.modal = true;
94 return this;
95 }
96
97 public DialogBuilder light() {
98 this.modal = false;
99 return this;
100 }
101
102 public DialogBuilder withFooter(Component footer) {
103 this.footer = footer;
104 return this;
105 }
106
107 public DialogComponent build() {
108 return new DialogComponent(this.content, getFooter());
109 }
110
111 private Component getFooter() {
112 if (this.footer == null) {
113 final EditorActionLayout editorActionLayout = new EditorActionLayout();
114 this.actions.forEach(editorActionLayout::addPrimaryAction);
115 this.footer = editorActionLayout;
116 }
117 return this.footer;
118 }
119
120 public Window buildAndOpen() {
121 Window window = new Window();
122 window.setCaption(this.title);
123 window.setContent(this.build());
124 window.center();
125 window.setModal(this.modal);
126 UI.getCurrent().addWindow(window);
127 return window;
128 }
129 }