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.addStyleName("content");
63 content.setHeightUndefined();
64 contentWrapperLayout.addComponent(content);
65 addComponents(contentWrapperLayout);
66 setExpandRatio(contentWrapperLayout, 1f);
67 } else{
68 addComponents(content);
69 setExpandRatio(content, 1f);
70 }
71
72 addComponent(footer);
73
74 }
75
76 private CssLayout buildContentWrapperLayout() {
77 CssLayout contentWrapper = new CssLayout();
78 contentWrapper.setSizeFull();
79 contentWrapper.addStyleName("content-wrapper");
80 return contentWrapper;
81 }
82
83 private CssLayout buildContentHeader(String title){
84 if (StringUtils.isNotBlank(title)) {
85 final Label titleLabel = new Label(title);
86 titleLabel.addStyleName("heading-1");
87 final CssLayout header = new CssLayout();
88 header.setStyleName("content-header");
89 header.setWidth(100, PERCENTAGE);
90 header.addComponent(titleLabel);
91 return header;
92 }
93 return null;
94 }
95
96 public void setFooter(Component footer) {
97 this.footer = footer;
98 }
99
100 public void setForm(Component form) {
101 this.form = form;
102 }
103
104 public void setTitle(String title) {
105 this.title = title;
106 }
107 }