Revision e7bf18d2
Added by Andreas Kohlbecker almost 7 years ago
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractPopupEditor.java | ||
---|---|---|
8 | 8 |
*/ |
9 | 9 |
package eu.etaxonomy.vaadin.mvp; |
10 | 10 |
|
11 |
import java.util.Map; |
|
12 |
|
|
13 |
import org.apache.log4j.Logger; |
|
14 |
|
|
15 |
import com.vaadin.data.Validator.InvalidValueException; |
|
11 | 16 |
import com.vaadin.data.fieldgroup.BeanFieldGroup; |
12 | 17 |
import com.vaadin.data.fieldgroup.FieldGroup.CommitEvent; |
13 | 18 |
import com.vaadin.data.fieldgroup.FieldGroup.CommitException; |
14 | 19 |
import com.vaadin.data.fieldgroup.FieldGroup.CommitHandler; |
20 |
import com.vaadin.data.fieldgroup.FieldGroup.FieldGroupInvalidValueException; |
|
21 |
import com.vaadin.server.AbstractErrorMessage.ContentMode; |
|
22 |
import com.vaadin.server.ErrorMessage.ErrorLevel; |
|
15 | 23 |
import com.vaadin.server.FontAwesome; |
24 |
import com.vaadin.server.UserError; |
|
25 |
import com.vaadin.ui.AbstractField; |
|
16 | 26 |
import com.vaadin.ui.AbstractOrderedLayout; |
17 | 27 |
import com.vaadin.ui.Alignment; |
18 | 28 |
import com.vaadin.ui.Button; |
... | ... | |
126 | 136 |
// ------------------------ event handler ------------------------ // |
127 | 137 |
|
128 | 138 |
private class SaveHandler implements CommitHandler { |
139 |
|
|
129 | 140 |
private static final long serialVersionUID = 2047223089707080659L; |
130 | 141 |
|
131 | 142 |
@Override |
... | ... | |
160 | 171 |
try { |
161 | 172 |
fieldGroup.commit(); |
162 | 173 |
} catch (CommitException e) { |
163 |
Notification.show("Error saving", Type.ERROR_MESSAGE); |
|
174 |
fieldGroup.getFields().forEach(f -> ((AbstractField)f).setValidationVisible(true)); |
|
175 |
if(e.getCause() != null && e.getCause() instanceof FieldGroupInvalidValueException){ |
|
176 |
FieldGroupInvalidValueException invalidValueException = (FieldGroupInvalidValueException)e.getCause(); |
|
177 |
updateFieldNotifications(invalidValueException.getInvalidFields()); |
|
178 |
Notification.show("The entered data in " + invalidValueException.getInvalidFields().size() + " fields is incomplete or invalid."); |
|
179 |
} else { |
|
180 |
Logger.getLogger(this.getClass()).error("Error saving", e); |
|
181 |
Notification.show("Error saving", Type.ERROR_MESSAGE); |
|
182 |
} |
|
164 | 183 |
} |
165 | 184 |
} |
166 | 185 |
|
186 |
/** |
|
187 |
* @param invalidFields |
|
188 |
*/ |
|
189 |
private void updateFieldNotifications(Map<Field<?>, InvalidValueException> invalidFields) { |
|
190 |
for(Field<?> f : invalidFields.keySet()){ |
|
191 |
if(f instanceof AbstractField){ |
|
192 |
String message = invalidFields.get(f).getHtmlMessage(); |
|
193 |
((AbstractField)f).setComponentError(new UserError(message, ContentMode.HTML, ErrorLevel.ERROR)); |
|
194 |
} |
|
195 |
} |
|
196 |
|
|
197 |
} |
|
198 |
|
|
167 | 199 |
// ------------------------ field adding methods ------------------------ // |
168 | 200 |
|
201 |
|
|
169 | 202 |
protected TextField addTextField(String caption, String propertyId) { |
170 | 203 |
return addField(new TextField(caption), propertyId); |
171 | 204 |
} |
Also available in: Unified diff
showing validation errors in the popup editors