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.vaadin.gwt.client.magnoliashell.viewport.connector;
35
36 import info.magnolia.ui.vaadin.gwt.client.magnoliashell.event.AppRequestedEvent;
37 import info.magnolia.ui.vaadin.gwt.client.magnoliashell.event.HideShellAppsEvent;
38 import info.magnolia.ui.vaadin.gwt.client.magnoliashell.event.HideShellAppsRequestedEvent;
39 import info.magnolia.ui.vaadin.gwt.client.magnoliashell.event.ShellAppRequestedEvent;
40 import info.magnolia.ui.vaadin.gwt.client.magnoliashell.event.ShellAppStartedEvent;
41 import info.magnolia.ui.vaadin.gwt.client.magnoliashell.event.ShellAppStartingEvent;
42 import info.magnolia.ui.vaadin.gwt.client.magnoliashell.event.ShellAppsHiddenEvent;
43 import info.magnolia.ui.vaadin.gwt.client.magnoliashell.viewport.ShellAppsTransitionDelegate;
44 import info.magnolia.ui.vaadin.gwt.client.magnoliashell.viewport.widget.ShellAppsViewportWidget;
45 import info.magnolia.ui.vaadin.gwt.client.shared.magnoliashell.ShellAppType;
46 import info.magnolia.ui.vaadin.magnoliashell.viewport.ShellAppsViewport;
47
48 import com.google.gwt.user.client.ui.Widget;
49 import com.google.web.bindery.event.shared.EventBus;
50 import com.vaadin.client.ComponentConnector;
51 import com.vaadin.client.Util;
52 import com.vaadin.shared.ui.Connect;
53
54
55
56
57 @Connect(ShellAppsViewport.class)
58 public class ShellAppsViewportConnector extends ViewportConnector implements ShellAppsViewportWidget.Listener {
59
60 @Override
61 protected void init() {
62 super.init();
63 getWidget().setTransitionDelegate(new ShellAppsTransitionDelegate(getWidget()));
64 }
65
66 public void showShellApp(ShellAppType type) {
67 ComponentConnector shellAppConnector = (ComponentConnector) getState().shellApps.get(type);
68 Widget w = shellAppConnector.getWidget();
69 getWidget().showChild(w);
70 if (!getWidget().isActive()) {
71 w.getElement().getStyle().clearOpacity();
72 getWidget().setActive(true);
73 }
74 getLayoutManager().setNeedsMeasure(shellAppConnector);
75 eventBus.fireEvent(new ShellAppStartingEvent(type));
76 }
77
78 @Override
79 public void setEventBus(EventBus eventBus) {
80 super.setEventBus(eventBus);
81 eventBus.addHandler(ShellAppRequestedEvent.TYPE, new ShellAppRequestedEvent.Handler() {
82 @Override
83 public void onShellAppRequested(ShellAppRequestedEvent event) {
84 if (!getWidget().isActive() || !getConnection().getMessageSender().hasActiveRequest()) {
85 showShellApp(event.getType());
86 }
87 }
88 });
89
90 eventBus.addHandler(HideShellAppsEvent.TYPE, new HideShellAppsEvent.Handler() {
91 @Override
92 public void onHideShellApps(HideShellAppsEvent event) {
93 getWidget().setActive(false);
94 }
95 });
96
97 eventBus.addHandler(AppRequestedEvent.TYPE, new AppRequestedEvent.Handler() {
98 @Override
99 public void onAppRequested(AppRequestedEvent event) {
100 getWidget().setActiveNoTransition(false);
101 }
102 });
103 }
104
105 @Override
106 public ShellAppsViewportWidget getWidget() {
107 return (ShellAppsViewportWidget)super.getWidget();
108 }
109
110 @Override
111 protected ShellAppsViewportWidget createWidget() {
112 return new ShellAppsViewportWidget(this);
113 }
114
115 @Override
116 public ShellAppViewportState getState() {
117 return (ShellAppViewportState) super.getState();
118 }
119
120 @Override
121 public void onShellAppLoaded(Widget shellAppWidget) {
122 ComponentConnector shellAppConnector = Util.findConnectorFor(shellAppWidget);
123 eventBus.fireEvent(new ShellAppStartedEvent(getState().getShellAppType(shellAppConnector)));
124 }
125
126 @Override
127 public void outerContentClicked() {
128 eventBus.fireEvent(new HideShellAppsRequestedEvent());
129 }
130
131 @Override
132 public void onShellAppsHidden() {
133 eventBus.fireEvent(new ShellAppsHiddenEvent());
134 }
135
136 }