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