1
|
package eu.dnetlib.client.accountingmonitor;
|
2
|
|
3
|
import com.github.gwtbootstrap.client.ui.*;
|
4
|
import com.github.gwtbootstrap.client.ui.Button;
|
5
|
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
6
|
import com.github.gwtbootstrap.client.ui.constants.AlternateSize;
|
7
|
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
|
8
|
import com.github.gwtbootstrap.client.ui.constants.FormType;
|
9
|
import com.github.gwtbootstrap.datepicker.client.ui.DateBox;
|
10
|
import com.google.gwt.core.client.GWT;
|
11
|
import com.google.gwt.event.dom.client.ClickEvent;
|
12
|
import com.google.gwt.event.dom.client.ClickHandler;
|
13
|
import com.google.gwt.user.client.ui.*;
|
14
|
import com.google.gwt.user.client.ui.FileUpload;
|
15
|
import com.google.gwt.user.client.ui.Label;
|
16
|
import eu.dnetlib.client.widgets.FormFieldSet;
|
17
|
import eu.dnetlib.client.widgets.TextBox;
|
18
|
|
19
|
/**
|
20
|
* Created by stefania on 7/8/15.
|
21
|
*/
|
22
|
public class BankTransferForm implements IsWidget {
|
23
|
|
24
|
private FlowPanel bankTransferPanel = new FlowPanel();
|
25
|
private Label bankTransferLabel = new Label();
|
26
|
|
27
|
private Alert errorAlert = new Alert();
|
28
|
|
29
|
private Form bankTransferForm = new Form();
|
30
|
|
31
|
private DateBox dateOfTransfer = new DateBox();
|
32
|
private TextBox apcPaid = new TextBox();
|
33
|
private Label apcPaidCurrency = new Label();
|
34
|
private TextBox transferCosts = new TextBox();
|
35
|
private Label transferCostsCurrency = new Label();
|
36
|
private TextBox otherExpenses = new TextBox();
|
37
|
private Label otherExpensesCurrency = new Label();
|
38
|
private FileUpload fileUpload = new FileUpload();
|
39
|
|
40
|
private TextBox requestIdHidden = new TextBox();
|
41
|
private TextBox commentHidden = new TextBox();
|
42
|
|
43
|
private Button submit = new Button("Submit");
|
44
|
private Button cancel = new Button("Cancel");
|
45
|
|
46
|
private HTML loadingWheel = new HTML("<div class=\"loader-big\"></div><div class=\"whiteFilm\"></div>");
|
47
|
|
48
|
private UploadCompleteListener uploadCompleteListener;
|
49
|
private CancelListener cancelListener;
|
50
|
|
51
|
public BankTransferForm(String requestId, String comment) {
|
52
|
|
53
|
bankTransferPanel.addStyleName("bankTransferPanel");
|
54
|
|
55
|
bankTransferLabel.setText("Complete the bank transfer info");
|
56
|
bankTransferLabel.addStyleName("bankTransferLabel");
|
57
|
|
58
|
errorAlert.addStyleName("alertLabel");
|
59
|
errorAlert.setType(AlertType.ERROR);
|
60
|
errorAlert.setVisible(false);
|
61
|
errorAlert.setClose(false);
|
62
|
|
63
|
bankTransferPanel.add(bankTransferLabel);
|
64
|
bankTransferPanel.add(errorAlert);
|
65
|
|
66
|
bankTransferForm.setType(FormType.HORIZONTAL);
|
67
|
bankTransferForm.setAction(GWT.getModuleBaseURL() + "bankTransfer");
|
68
|
bankTransferForm.setEncoding(FormPanel.ENCODING_MULTIPART);
|
69
|
bankTransferForm.setMethod(FormPanel.METHOD_POST);
|
70
|
|
71
|
bankTransferPanel.add(bankTransferForm);
|
72
|
|
73
|
dateOfTransfer.setAlternateSize(AlternateSize.XLARGE);
|
74
|
dateOfTransfer.setName("dateOfTransfer");
|
75
|
dateOfTransfer.setFormat("yyyy/mm/dd");
|
76
|
bankTransferForm.add(new FormFieldSet("Date of transfer (*)", dateOfTransfer));
|
77
|
|
78
|
apcPaid.setAlternateSize(AlternateSize.XLARGE);
|
79
|
apcPaid.setName("apcPaid");
|
80
|
apcPaid.addStyleName("inlineBlock");
|
81
|
apcPaidCurrency.setText(" Euro");
|
82
|
apcPaidCurrency.addStyleName("inlineBlock");
|
83
|
bankTransferForm.add(new FormFieldSet("APC Paid (*)", apcPaid, apcPaidCurrency));
|
84
|
|
85
|
transferCosts.setAlternateSize(AlternateSize.XLARGE);
|
86
|
transferCosts.setName("transferCosts");
|
87
|
transferCosts.addStyleName("inlineBlock");
|
88
|
transferCostsCurrency.setText(" Euro");
|
89
|
transferCostsCurrency.addStyleName("inlineBlock");
|
90
|
bankTransferForm.add(new FormFieldSet("Transfer costs (*)", transferCosts, transferCostsCurrency));
|
91
|
|
92
|
otherExpenses.setAlternateSize(AlternateSize.XLARGE);
|
93
|
otherExpenses.setName("otherExpenses");
|
94
|
otherExpenses.addStyleName("inlineBlock");
|
95
|
otherExpensesCurrency.setText(" Euro");
|
96
|
otherExpensesCurrency.addStyleName("inlineBlock");
|
97
|
bankTransferForm.add(new FormFieldSet("Other expenses", otherExpenses, otherExpensesCurrency));
|
98
|
|
99
|
fileUpload.setName("bankTransferFile");
|
100
|
bankTransferForm.add(new FormFieldSet("Bank Transfer File (*)", fileUpload));
|
101
|
|
102
|
submit.setType(ButtonType.PRIMARY);
|
103
|
submit.addStyleName("inlineBlock");
|
104
|
submit.addClickHandler(new ClickHandler() {
|
105
|
@Override
|
106
|
public void onClick(ClickEvent clickEvent) {
|
107
|
|
108
|
errorAlert.setVisible(false);
|
109
|
|
110
|
if(apcPaid.getValue()!=null && !apcPaid.getValue().trim().equals("")
|
111
|
&& transferCosts.getValue()!=null && !transferCosts.getValue().trim().equals("")
|
112
|
&& fileUpload.getFilename()!=null && !fileUpload.getFilename().equals("")) {
|
113
|
|
114
|
boolean isValid;
|
115
|
|
116
|
if(isFloat(apcPaid.getValue().trim()) && isPositiveNumber(Float.parseFloat(apcPaid.getValue().trim()))
|
117
|
&& isFloat(transferCosts.getValue().trim()) && isPositiveNumber(Float.parseFloat(transferCosts.getValue().trim()))) {
|
118
|
isValid = true;
|
119
|
} else {
|
120
|
isValid = false;
|
121
|
}
|
122
|
|
123
|
if(otherExpenses.getValue()!=null && !otherExpenses.getValue().equals("")
|
124
|
&& (!isFloat(otherExpenses.getValue().trim()) || !isPositiveNumber(Float.parseFloat(otherExpenses.getValue().trim())))) {
|
125
|
isValid = false;
|
126
|
}
|
127
|
|
128
|
if(isValid) {
|
129
|
bankTransferPanel.addStyleName("loading");
|
130
|
bankTransferPanel.add(loadingWheel);
|
131
|
bankTransferForm.submit();
|
132
|
} else {
|
133
|
errorAlert.setText("APC paid, transfer costs and extra expenses must be positive numbers");
|
134
|
errorAlert.setVisible(true);
|
135
|
}
|
136
|
} else {
|
137
|
errorAlert.setText("All asterisk (*) fields are required");
|
138
|
errorAlert.setVisible(true);
|
139
|
}
|
140
|
}
|
141
|
});
|
142
|
|
143
|
cancel.setType(ButtonType.DEFAULT);
|
144
|
cancel.addStyleName("inlineBlock");
|
145
|
cancel.addClickHandler(new ClickHandler() {
|
146
|
@Override
|
147
|
public void onClick(ClickEvent clickEvent) {
|
148
|
if(cancelListener!=null)
|
149
|
cancelListener.cancel();
|
150
|
}
|
151
|
});
|
152
|
|
153
|
bankTransferForm.add(new FormFieldSet(null, submit, cancel));
|
154
|
|
155
|
requestIdHidden.setVisible(false);
|
156
|
requestIdHidden.setName("requestId");
|
157
|
requestIdHidden.setValue(requestId);
|
158
|
bankTransferForm.add(new FormFieldSet(null, requestIdHidden));
|
159
|
|
160
|
commentHidden.setVisible(false);
|
161
|
commentHidden.setName("comment");
|
162
|
commentHidden.setValue(comment);
|
163
|
bankTransferForm.add(new FormFieldSet(null, commentHidden));
|
164
|
|
165
|
bankTransferForm.addSubmitCompleteHandler(new Form.SubmitCompleteHandler() {
|
166
|
@Override
|
167
|
public void onSubmitComplete(Form.SubmitCompleteEvent submitCompleteEvent) {
|
168
|
|
169
|
if(uploadCompleteListener!=null)
|
170
|
uploadCompleteListener.uploadCompleted(true);
|
171
|
}
|
172
|
});
|
173
|
}
|
174
|
|
175
|
@Override
|
176
|
public Widget asWidget() {
|
177
|
return bankTransferPanel;
|
178
|
}
|
179
|
|
180
|
public interface UploadCompleteListener {
|
181
|
void uploadCompleted(boolean succeeded);
|
182
|
}
|
183
|
|
184
|
public void setUploadCompleteListener(UploadCompleteListener uploadCompleteListener) {
|
185
|
this.uploadCompleteListener = uploadCompleteListener;
|
186
|
}
|
187
|
|
188
|
public interface CancelListener {
|
189
|
void cancel();
|
190
|
}
|
191
|
|
192
|
public void setCancelListener(CancelListener cancelListener) {
|
193
|
this.cancelListener = cancelListener;
|
194
|
}
|
195
|
|
196
|
private boolean isFloat(String number) {
|
197
|
|
198
|
try {
|
199
|
Float numberValue = Float.parseFloat(number);
|
200
|
return true;
|
201
|
} catch(NumberFormatException nfe) {
|
202
|
return false;
|
203
|
}
|
204
|
}
|
205
|
|
206
|
private boolean isPositiveNumber(float number) {
|
207
|
|
208
|
if(number>=0)
|
209
|
return true;
|
210
|
|
211
|
return false;
|
212
|
}
|
213
|
}
|