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 static com.vaadin.server.Sizeable.Unit.PERCENTAGE;
37
38 import org.apache.commons.lang3.StringUtils;
39
40 import com.vaadin.ui.Component;
41 import com.vaadin.ui.CssLayout;
42 import com.vaadin.ui.Label;
43 import com.vaadin.ui.VerticalLayout;
44
45
46
47
48 public class DetailViewLayout extends VerticalLayout {
49
50 private Component form;
51 private Component footer;
52 private String title;
53
54 public void construct() {
55 removeAllComponents();
56
57 Component content = form;
58 CssLayout contentHeader = buildContentHeader(title);
59 if (contentHeader != null){
60 CssLayout contentWrapperLayout = buildContentWrapperLayout();
61 contentWrapperLayout.addComponentAsFirst(contentHeader);
62 content.setHeightUndefined();
63 contentWrapperLayout.addComponent(content);
64 addComponents(contentWrapperLayout);
65 setExpandRatio(contentWrapperLayout, 1f);
66 } else {
67 addComponents(content);
68 content.addStyleName("scrollable");
69 setExpandRatio(content, 1f);
70 }
71 content.addStyleName("content");
72
73 addComponent(footer);
74
75 }
76
77 private CssLayout buildContentWrapperLayout() {
78 CssLayout contentWrapper = new CssLayout();
79 contentWrapper.setSizeFull();
80 contentWrapper.addStyleName("content-wrapper");
81 return contentWrapper;
82 }
83
84 private CssLayout buildContentHeader(String title){
85 if (StringUtils.isNotBlank(title)) {
86 final Label titleLabel = new Label(title);
87 titleLabel.addStyleName("heading-1");
88 final CssLayout header = new CssLayout();
89 header.setStyleName("content-header");
90 header.setWidth(100, PERCENTAGE);
91 header.addComponent(titleLabel);
92 return header;
93 }
94 return null;
95 }
96
97 public void setFooter(Component footer) {
98 this.footer = footer;
99 }
100
101 public void setForm(Component form) {
102 this.form = form;
103 }
104
105 public void setTitle(String title) {
106 this.title = title;
107 }
108 }