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.actionarea.view;
35
36 import info.magnolia.ui.api.view.View;
37
38 import java.util.HashMap;
39 import java.util.Map;
40
41 import com.vaadin.ui.AbstractOrderedLayout;
42 import com.vaadin.ui.Component;
43 import com.vaadin.ui.ComponentContainer;
44
45
46
47
48
49 public abstract class AbstractActionAreaViewImpl implements EditorActionAreaView {
50
51 private AbstractOrderedLayout layout;
52 private Map<String, View> actionNameToView = new HashMap<>();
53
54 public AbstractActionAreaViewImpl() {
55 this.layout = createRootLayout();
56 layout.addStyleName("footer");
57 layout.setWidthUndefined();
58 }
59
60 @Override
61 public ComponentContainer asVaadinComponent() {
62 return layout;
63 }
64
65 @Override
66 public void addPrimaryAction(View actionView, String actionName) {
67 actionNameToView.put(actionName, actionView);
68 insertPrimaryAction(actionView.asVaadinComponent(), layout);
69 }
70
71 @Override
72 public void addSecondaryAction(View actionView, String actionName) {
73 actionNameToView.put(actionName, actionView);
74 insertSecondaryAction(actionView.asVaadinComponent(), layout);
75 }
76
77 @Override
78 public void removeAllActions() {
79 actionNameToView.clear();
80 layout.removeAllComponents();
81 }
82
83 @Override
84 public void setToolbarComponent(Component toolbar) {
85 toolbar.addStyleName("tool-control");
86 layout.addComponent(toolbar, 0);
87 }
88
89 @Override
90 public View getViewForAction(String actionName) {
91 return actionNameToView.get(actionName);
92 }
93
94 protected abstract AbstractOrderedLayout createRootLayout();
95
96 protected abstract void insertPrimaryAction(Component actionControl, AbstractOrderedLayout layout);
97
98 protected abstract void insertSecondaryAction(Component actionControl, AbstractOrderedLayout layout);
99 }