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.contentapp.detail;
35
36 import com.vaadin.ui.Component;
37 import com.vaadin.ui.CssLayout;
38 import com.vaadin.ui.HorizontalLayout;
39 import info.magnolia.ui.api.view.View;
40 import info.magnolia.ui.vaadin.actionbar.ActionbarView;
41
42 import java.util.EnumMap;
43 import java.util.Map;
44
45
46
47
48
49 public class DetailEditorViewImpl extends HorizontalLayout implements DetailEditorView {
50
51 private final CssLayout itemViewContainer = new CssLayout();
52 private final Map<DetailView.ViewType, DetailView> itemViews = new EnumMap<DetailView.ViewType, DetailView>(DetailView.ViewType.class);
53
54 private ActionbarView actionBar;
55
56 private final CssLayout actionBarWrapper = new CssLayout();
57
58 private DetailView.ViewType currentViewType = DetailView.ViewType.VIEW;
59
60 private DetailEditorView.Listener contentWorkbenchViewListener;
61
62 public DetailEditorViewImpl() {
63 setSizeFull();
64 setMargin(false);
65 setSpacing(true);
66 addStyleName("detail");
67
68 itemViewContainer.setSizeFull();
69 itemViewContainer.setStyleName("detailview");
70 addComponent(itemViewContainer);
71 setExpandRatio(itemViewContainer, 1);
72
73 actionBarWrapper.setHeight(100, Unit.PERCENTAGE);
74 actionBarWrapper.addStyleName("actionbar");
75 addComponent(actionBarWrapper);
76 setExpandRatio(actionBarWrapper, 0);
77 }
78
79 @Override
80 public Component asVaadinComponent() {
81 return this;
82 }
83
84 @Override
85 public void setListener(DetailEditorView.Listener listener) {
86 this.contentWorkbenchViewListener = listener;
87 }
88
89 @Override
90 public void setViewType(final DetailView.ViewType type) {
91
92 itemViewContainer.removeComponent(itemViews.get(currentViewType).asVaadinComponent());
93 final Component c = itemViews.get(type).asVaadinComponent();
94
95 c.setSizeFull();
96 itemViewContainer.addComponent(c);
97
98 this.currentViewType = type;
99 refresh();
100 this.contentWorkbenchViewListener.onViewTypeChanged(currentViewType);
101 }
102
103 @Override
104 public void refresh() {
105
106 }
107
108 @Override
109 public void addItemView(DetailView.ViewType type, DetailView view) {
110
111 }
112
113 @Override
114 public void setItemView(final View itemView) {
115 itemViewContainer.removeAllComponents();
116 itemView.asVaadinComponent().setHeight("100%");
117 itemViewContainer.addComponent(itemView.asVaadinComponent());
118 }
119
120 @Override
121 public void setActionbarView(final ActionbarView actionBar) {
122 Component c = actionBar.asVaadinComponent();
123 c.addStyleName("stub");
124 actionBar.setOpen(false);
125
126 Component old = actionBarWrapper.getComponentCount() != 0 ? actionBarWrapper.getComponent(0) : null;
127 if (old == null) {
128 actionBarWrapper.addComponent(c);
129 } else {
130 actionBarWrapper.replaceComponent(old, c);
131 }
132 this.actionBar = actionBar;
133 }
134
135 }