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 addComponent(actionBarWrapper);
77 setExpandRatio(actionBarWrapper, 0);
78 }
79
80 @Override
81 public Component asVaadinComponent() {
82 return this;
83 }
84
85 @Override
86 public void setListener(DetailEditorView.Listener listener) {
87 this.contentWorkbenchViewListener = listener;
88 }
89
90 @Override
91 public void setViewType(final DetailView.ViewType type) {
92
93 itemViewContainer.removeComponent(itemViews.get(currentViewType).asVaadinComponent());
94 final Component c = itemViews.get(type).asVaadinComponent();
95
96 c.setSizeFull();
97 itemViewContainer.addComponent(c);
98
99 this.currentViewType = type;
100 refresh();
101 this.contentWorkbenchViewListener.onViewTypeChanged(currentViewType);
102 }
103
104 @Override
105 public void refresh() {
106
107 }
108
109 @Override
110 public void addItemView(DetailView.ViewType type, DetailView view) {
111
112 }
113
114 @Override
115 public void setItemView(final View itemView) {
116 itemViewContainer.removeAllComponents();
117 if (itemView != null && itemView.asVaadinComponent() != null) {
118 itemView.asVaadinComponent().setHeight("100%");
119 itemViewContainer.addComponent(itemView.asVaadinComponent());
120 }
121 }
122
123 @Override
124 public void setActionbarView(final ActionbarView actionBar) {
125 Component c = actionBar.asVaadinComponent();
126 c.addStyleName("stub");
127 actionBar.setOpen(false);
128
129 Component old = actionBarWrapper.getComponentCount() != 0 ? actionBarWrapper.getComponent(0) : null;
130 if (old == null) {
131 actionBarWrapper.addComponent(c);
132 } else {
133 actionBarWrapper.replaceComponent(old, c);
134 }
135 this.actionBar = actionBar;
136 }
137
138 }