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