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.form.connector;
35
36 import info.magnolia.ui.vaadin.form.Form;
37 import info.magnolia.ui.vaadin.gwt.client.form.rpc.FormServerRpc;
38 import info.magnolia.ui.vaadin.gwt.client.form.widget.FormFieldWrapper;
39 import info.magnolia.ui.vaadin.gwt.client.form.widget.FormView;
40 import info.magnolia.ui.vaadin.gwt.client.form.widget.FormViewImpl;
41
42 import com.google.gwt.user.client.ui.Widget;
43 import com.vaadin.client.ComponentConnector;
44 import com.vaadin.client.ConnectorHierarchyChangeEvent;
45 import com.vaadin.client.Util;
46 import com.vaadin.client.communication.RpcProxy;
47 import com.vaadin.client.ui.AbstractSingleComponentContainerConnector;
48 import com.vaadin.shared.ui.Connect;
49
50
51
52
53 @Connect(Form.class)
54 public class FormConnector extends AbstractSingleComponentContainerConnector implements FormView.Presenter {
55
56 private final FormServerRpc focusRpc = RpcProxy.create(FormServerRpc.class, this);
57
58 private FormView view;
59
60 @Override
61 protected void init() {
62 super.init();
63 view.setPresenter(this);
64 addStateChangeHandler("descriptionsVisible", stateChangeEvent -> getView().setDescriptionVisible(getState().descriptionsVisible));
65
66 addStateChangeHandler("errorAmount", stateChangeEvent -> getView().setErrorAmount(getState().errorAmount));
67
68 addStateChangeHandler("errorsLabel", stateChangeEvent -> getView().setErrorsLabel(getState().errorsLabel));
69
70 addStateChangeHandler("nextErrorLabel", stateChangeEvent -> getView().setNextErrorLabel(getState().nextErrorLabel));
71 }
72
73 @Override
74 protected Widget createWidget() {
75 view = new FormViewImpl();
76 return view.asWidget();
77 }
78
79 protected FormView getView() {
80 if (view == null) {
81 createWidget();
82 }
83 return view;
84 }
85
86 @Override
87 public FormState getState() {
88 return (FormState) super.getState();
89 }
90
91 @Override
92 protected FormState createState() {
93 return new FormState();
94 }
95
96 @Override
97 public void jumpToNextError(FormFieldWrapper fieldWrapper) {
98 ComponentConnector cc = fieldWrapper == null ? null : Util.findConnectorFor(fieldWrapper.getField());
99 focusRpc.focusNextProblematicField(cc);
100 }
101
102 @Override
103 public void updateCaption(ComponentConnector connector) {
104
105 }
106
107 @Override
108 public void onConnectorHierarchyChange(ConnectorHierarchyChangeEvent connectorHierarchyChangeEvent) {
109 updateContent();
110 }
111
112 protected void updateContent() {
113 final ComponentConnector content = getContent();
114 if (content != null) {
115 this.view.setContent(content.getWidget());
116 }
117 }
118
119 @Override
120 public void onErrorsDisplayed() {
121 getLayoutManager().setNeedsMeasure(FormConnector.this);
122 }
123 }