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.admincentral;
35
36 import static com.vaadin.server.Sizeable.Unit.*;
37 import static com.vaadin.ui.Alignment.TOP_LEFT;
38
39 import info.magnolia.admincentral.badge.NotificationBadge;
40 import info.magnolia.admincentral.badge.TaskBadge;
41 import info.magnolia.admincentral.banner.BannerContainer;
42 import info.magnolia.admincentral.components.InstanceInfo;
43 import info.magnolia.admincentral.findbar.FindBar;
44 import info.magnolia.admincentral.usermenu.UserMenu;
45 import info.magnolia.objectfactory.ComponentProvider;
46 import info.magnolia.ui.api.ioc.AdmincentralScoped;
47
48 import javax.inject.Inject;
49
50 import org.vaadin.jonatan.contexthelp.ContextHelp;
51
52 import com.vaadin.server.Responsive;
53 import com.vaadin.server.ThemeResource;
54 import com.vaadin.ui.Component;
55 import com.vaadin.ui.HorizontalLayout;
56 import com.vaadin.ui.Image;
57 import com.vaadin.ui.UI;
58 import com.vaadin.ui.VerticalLayout;
59
60
61
62
63 @AdmincentralScoped
64 public class ResurfaceUILayout extends VerticalLayout {
65
66 @Inject
67 public ResurfaceUILayout(ComponentProvider componentProvider, NotificationBadge notificationBadge, TaskBadge taskBadge,
68 BannerContainer bannerContainer, InstanceInfo instanceInfo, UserMenu userMenu,
69 ViewportLayout viewportLayout) {
70 setSizeFull();
71 setMargin(true);
72 setSpacing(true);
73 addStyleName("shell");
74
75
76 Image logo = new Image(null, new ThemeResource("img/logo-magnolia.svg"));
77 logo.setAlternateText("Magnolia logo");
78 logo.addStyleName("logo");
79
80
81 FindBar findBar = componentProvider.newInstance(FindBar.class, viewportLayout);
82
83
84 Component findBarTextBox = findBar.asVaadinComponent();
85
86 HorizontalLayout header = new HorizontalLayout();
87 header.setWidth(100, PERCENTAGE);
88 header.setHeight(70, PIXELS);
89 header.setSpacing(true);
90 header.addStyleName("header");
91 header.addComponents(logo, findBarTextBox, taskBadge, notificationBadge, instanceInfo, userMenu);
92 header.setComponentAlignment(logo, TOP_LEFT);
93 header.setExpandRatio(findBarTextBox, 1f);
94
95 addComponents(header);
96 setExpandRatio(header, 0f);
97
98 VerticalLayout contentContainer = new VerticalLayout();
99 contentContainer.setSpacing(false);
100 contentContainer.setMargin(false);
101 contentContainer.setSizeFull();
102 contentContainer.addComponent(bannerContainer);
103 contentContainer.setExpandRatio(bannerContainer, 0f);
104 contentContainer.addComponent(viewportLayout);
105 contentContainer.setExpandRatio(viewportLayout, 1f);
106
107 addComponent(contentContainer);
108 setExpandRatio(contentContainer, 1f);
109
110
111 Responsive.makeResponsive(this);
112 new ContextHelp().extend(UI.getCurrent());
113 }
114 }