Revision adad0cac
Added by Andreas Kohlbecker about 6 years ago
src/main/java/eu/etaxonomy/cdm/vaadin/component/common/PersonField.java | ||
---|---|---|
17 | 17 |
import com.vaadin.data.Validator.InvalidValueException; |
18 | 18 |
import com.vaadin.data.fieldgroup.BeanFieldGroup; |
19 | 19 |
import com.vaadin.data.fieldgroup.FieldGroup; |
20 |
import com.vaadin.server.FontAwesome; |
|
20 | 21 |
import com.vaadin.ui.Button; |
21 | 22 |
import com.vaadin.ui.Component; |
22 | 23 |
import com.vaadin.ui.CssLayout; |
... | ... | |
70 | 71 |
private CssLayout root = new CssLayout(); |
71 | 72 |
private CssLayout selectOrNewContainer = new CssLayout(); |
72 | 73 |
|
73 |
private TextField cacheField = new TextFieldNFix(); |
|
74 |
private TextField titleCacheField = new TextFieldNFix(); |
|
75 |
private TextField nomenclaturalTitleField = new TextFieldNFix(); |
|
76 |
private Button nomenclaturalTitleButton = new Button(); |
|
74 | 77 |
private CssLayout detailsContainer = new CssLayout(); |
75 | 78 |
private TextField initialsField = new TextFieldNFix(); |
76 | 79 |
private TextField firstNameField = new TextFieldNFix(); |
... | ... | |
82 | 85 |
private boolean onCommit = false; |
83 | 86 |
|
84 | 87 |
|
88 |
|
|
85 | 89 |
/** |
86 | 90 |
* @param caption |
87 | 91 |
*/ |
... | ... | |
116 | 120 |
}); |
117 | 121 |
|
118 | 122 |
// edit person |
119 |
addStyledComponent(cacheField);
|
|
123 |
addStyledComponent(titleCacheField);
|
|
120 | 124 |
addStyledComponents(initialsField); |
121 | 125 |
addStyledComponent(firstNameField); |
122 | 126 |
addStyledComponent(lastNameField); |
123 | 127 |
addStyledComponent(prefixField); |
124 | 128 |
addStyledComponent(suffixField); |
125 | 129 |
addStyledComponent(unlockSwitch); |
130 |
addStyledComponent(nomenclaturalTitleField); |
|
131 |
addStyledComponent(nomenclaturalTitleButton); |
|
126 | 132 |
|
127 | 133 |
addSizedComponent(root); |
128 | 134 |
} |
... | ... | |
159 | 165 |
selectOrNewContainer.setWidth(100, Unit.PERCENTAGE); |
160 | 166 |
personSelect.setWidthUndefined(); |
161 | 167 |
|
162 |
root.addComponent(cacheField);
|
|
168 |
root.addComponent(titleCacheField);
|
|
163 | 169 |
root.addComponent(unlockSwitch); |
164 | 170 |
root.addComponent(selectOrNewContainer); |
165 | 171 |
|
166 |
cacheField.setWidth(100, Unit.PERCENTAGE);
|
|
172 |
titleCacheField.setWidth(100, Unit.PERCENTAGE);
|
|
167 | 173 |
|
168 | 174 |
prefixField.setWidth(baseWidth, Unit.PERCENTAGE); |
169 | 175 |
prefixField.setInputPrompt("Prefix"); |
... | ... | |
172 | 178 |
initialsField.setInputPrompt("Initials"); |
173 | 179 |
|
174 | 180 |
firstNameField.setWidth(baseWidth * 3, Unit.PERCENTAGE); |
175 |
firstNameField.setInputPrompt("Family name");
|
|
181 |
firstNameField.setInputPrompt("Other/given names");
|
|
176 | 182 |
|
177 | 183 |
lastNameField.setWidth(baseWidth * 3, Unit.PERCENTAGE); |
178 |
lastNameField.setInputPrompt("Other/given names");
|
|
184 |
lastNameField.setInputPrompt("Family name");
|
|
179 | 185 |
|
180 | 186 |
suffixField.setWidth(baseWidth, Unit.PERCENTAGE); |
181 | 187 |
suffixField.setInputPrompt("Suffix"); |
... | ... | |
188 | 194 |
detailsContainer.addComponent(suffixField); |
189 | 195 |
root.addComponent(detailsContainer); |
190 | 196 |
|
197 |
nomenclaturalTitleButton.setHeight(22, Unit.PIXELS); |
|
198 |
nomenclaturalTitleButton.setDescription("Show the nomenclatural title cache."); |
|
199 |
nomenclaturalTitleButton.addClickListener( e -> { |
|
200 |
nomenclaturalTitleField.setVisible(!nomenclaturalTitleField.isVisible()); |
|
201 |
nomenclaturalTitleButtonChooseIcon(); |
|
202 |
if(nomenclaturalTitleField.isVisible()){ |
|
203 |
nomenclaturalTitleField.focus(); |
|
204 |
} |
|
205 |
}); |
|
206 |
// nomenclaturalTitleField.setCaption("Nomenclatural title"); |
|
207 |
nomenclaturalTitleField.setWidth(100, Unit.PERCENTAGE); |
|
208 |
|
|
209 |
root.addComponent(nomenclaturalTitleField); |
|
210 |
root.addComponent(nomenclaturalTitleButton); |
|
211 |
|
|
191 | 212 |
unlockSwitch.addValueChangeListener(e -> { |
192 | 213 |
if(refreshMode()){ |
193 | 214 |
switch (currentMode) { |
194 | 215 |
case CACHE_MODE: |
195 |
cacheField.focus();
|
|
216 |
titleCacheField.focus();
|
|
196 | 217 |
break; |
197 | 218 |
case DETAILS_MODE: |
198 | 219 |
firstNameField.focus(); |
... | ... | |
210 | 231 |
addDefaultStyles(); |
211 | 232 |
setMode(Mode.DETAILS_MODE); |
212 | 233 |
|
213 |
fieldGroup.bind(cacheField, "titleCache");
|
|
234 |
fieldGroup.bind(titleCacheField, "titleCache");
|
|
214 | 235 |
fieldGroup.bind(prefixField, "prefix"); |
215 | 236 |
fieldGroup.bind(initialsField, "initials"); |
216 | 237 |
fieldGroup.bind(firstNameField, "firstname"); |
217 | 238 |
fieldGroup.bind(lastNameField, "lastname"); |
218 | 239 |
fieldGroup.bind(suffixField, "suffix"); |
219 | 240 |
fieldGroup.bind(unlockSwitch, "protectedTitleCache"); |
241 |
fieldGroup.bind(nomenclaturalTitleField, "nomenclaturalTitle"); |
|
220 | 242 |
fieldGroup.setBuffered(false); |
221 | 243 |
|
222 | 244 |
updateVisibilities(getValue()); |
... | ... | |
224 | 246 |
return root; |
225 | 247 |
} |
226 | 248 |
|
249 |
/** |
|
250 |
* |
|
251 |
*/ |
|
252 |
protected void nomenclaturalTitleButtonChooseIcon() { |
|
253 |
nomenclaturalTitleButton.setIcon(nomenclaturalTitleField.isVisible() ? FontAwesome.ANGLE_UP : FontAwesome.ELLIPSIS_H); |
|
254 |
} |
|
255 |
|
|
227 | 256 |
/** |
228 | 257 |
* |
229 | 258 |
* @return true if the mode has changed |
... | ... | |
245 | 274 |
@Override |
246 | 275 |
public void setValue(Person person){ |
247 | 276 |
super.setValue(person); |
277 |
// PersonFieldAccess personWrapper = new PersonFieldAccess(person); |
|
278 |
// super.setValue(personWrapper); |
|
248 | 279 |
personSelect.setValue(person); |
249 | 280 |
} |
250 | 281 |
|
... | ... | |
269 | 300 |
|
270 | 301 |
detailsContainer.setVisible(person != null); |
271 | 302 |
unlockSwitch.setVisible(person != null); |
272 |
cacheField.setVisible(person != null); |
|
303 |
titleCacheField.setVisible(person != null); |
|
304 |
nomenclaturalTitleField.setVisible(nomenclaturalTitleField.getValue().equals(titleCacheField.getValue())); |
|
305 |
nomenclaturalTitleButtonChooseIcon(); |
|
273 | 306 |
|
274 | 307 |
} |
275 | 308 |
|
276 | 309 |
@Override |
277 | 310 |
protected void addDefaultStyles(){ |
278 |
cacheField.addStyleName("cache-field");
|
|
311 |
titleCacheField.addStyleName("cache-field");
|
|
279 | 312 |
detailsContainer.addStyleName("details-fields"); |
280 | 313 |
unlockSwitch.addStyleName(Switch.DOM_STYLE); |
314 |
nomenclaturalTitleButton.addStyleName(ValoTheme.BUTTON_BORDERLESS_COLORED + " center-h"); |
|
281 | 315 |
} |
282 | 316 |
|
283 | 317 |
/** |
... | ... | |
302 | 336 |
Person value = getValue(); |
303 | 337 |
if(value != null && value.getId() == 0){ |
304 | 338 |
// only if the entity is unsaved! |
305 |
ignoreFields.add(cacheField);
|
|
306 |
cacheField.setValue(null);
|
|
339 |
ignoreFields.add(titleCacheField);
|
|
340 |
titleCacheField.setValue(null);
|
|
307 | 341 |
} |
308 | 342 |
} |
309 | 343 |
return ignoreFields; |
Also available in: Unified diff
fix #7343 addind expanable field for the nomenclaturalTitle of Person