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.dialog.connector;
35
36 import info.magnolia.ui.vaadin.dialog.BaseDialog;
37 import info.magnolia.ui.vaadin.gwt.client.dialog.rpc.DialogServerRpc;
38 import info.magnolia.ui.vaadin.gwt.client.dialog.widget.BaseDialogView;
39 import info.magnolia.ui.vaadin.gwt.client.dialog.widget.BaseDialogViewImpl;
40
41 import com.google.gwt.user.client.ui.Widget;
42 import com.vaadin.client.ComponentConnector;
43 import com.vaadin.client.ConnectorHierarchyChangeEvent;
44 import com.vaadin.client.communication.RpcProxy;
45 import com.vaadin.client.communication.StateChangeEvent;
46 import com.vaadin.client.communication.StateChangeEvent.StateChangeHandler;
47 import com.vaadin.client.ui.AbstractLayoutConnector;
48 import com.vaadin.shared.ui.Connect;
49
50
51
52
53 @Connect(BaseDialog.class)
54 public class BaseDialogConnector extends AbstractLayoutConnector implements BaseDialogView.Presenter {
55
56 private final DialogServerRpc rpc = RpcProxy.create(DialogServerRpc.class, this);
57
58 protected BaseDialogView createView() {
59 return new BaseDialogViewImpl();
60 }
61
62 private BaseDialogView view;
63
64 @Override
65 protected void init() {
66 super.init();
67 addStateChangeHandler("caption", new StateChangeHandler() {
68 @Override
69 public void onStateChanged(StateChangeEvent stateChangeEvent) {
70 view.setCaption(getState().caption);
71 }
72 });
73
74 addStateChangeHandler("hasCloseButton", new StateChangeHandler() {
75 @Override
76 public void onStateChanged(StateChangeEvent stateChangeEvent) {
77 if (getState().hasCloseButton) {
78 view.showCloseButton();
79 }
80 }
81 });
82
83 addStateChangeHandler("isWide", new StateChangeHandler() {
84 @Override
85 public void onStateChanged(StateChangeEvent stateChangeEvent) {
86 view.setWide(getState().isWide);
87 }
88 });
89
90 addStateChangeHandler("componentDescription", new StateChangeHandler() {
91 @Override
92 public void onStateChanged(StateChangeEvent stateChangeEvent) {
93 view.setDescription(getState().componentDescription);
94 }
95 });
96 }
97
98 @Override
99 protected BaseDialogState createState() {
100 return new BaseDialogState();
101 }
102
103 @Override
104 public BaseDialogState getState() {
105 return (BaseDialogState) super.getState();
106 }
107
108 @Override
109 public void updateCaption(ComponentConnector connector) {
110 if (this == connector) {
111 view.setCaption(connector.getState().caption);
112 }
113 }
114
115 @Override
116 public void onConnectorHierarchyChange(ConnectorHierarchyChangeEvent connectorHierarchyChangeEvent) {
117 updateContent();
118 updateHeaderToolbar();
119 updateFooterToolbar();
120 }
121
122 @Override
123 public boolean delegateCaptionHandling() {
124 return false;
125 }
126
127 protected ComponentConnector getContent() {
128 return (ComponentConnector) getState().content;
129 }
130
131 protected ComponentConnector getHeader() {
132 return (ComponentConnector) getState().headerToolbar;
133 }
134
135 protected ComponentConnector getFooter() {
136 return (ComponentConnector) getState().footerToolbar;
137 }
138
139 protected void updateContent() {
140 final ComponentConnector content = getContent();
141 if (content != null) {
142 this.view.setContent(content.getWidget());
143 }
144 }
145
146 protected void updateHeaderToolbar() {
147 final ComponentConnector header = getHeader();
148 if (header != null) {
149 this.view.setHeaderToolbar(header.getWidget());
150 }
151 }
152
153 protected void updateFooterToolbar() {
154 final ComponentConnector footer = getFooter();
155 if (footer != null) {
156 this.view.setFooterToolbar(footer.getWidget());
157 }
158 }
159
160 @Override
161 protected Widget createWidget() {
162 this.view = createView();
163 this.view.setPresenter(this);
164 return view.asWidget();
165 }
166
167
168
169 @Override
170 public void closeDialog() {
171 rpc.closeSelf();
172 }
173
174 @Override
175 public void setWide(boolean isWide) {
176 rpc.setWide(isWide);
177 }
178
179 @Override
180 public void setDescriptionVisibility(boolean isVisible) {
181 rpc.setDescriptionVisibility(isVisible);
182 }
183 }