Revision c09732ba
Added by Andreas Kohlbecker almost 6 years ago
src/main/java/eu/etaxonomy/vaadin/component/ToManyRelatedEntitiesListSelect.java | ||
---|---|---|
29 | 29 |
import com.vaadin.ui.GridLayout; |
30 | 30 |
import com.vaadin.ui.themes.ValoTheme; |
31 | 31 |
|
32 |
import eu.etaxonomy.cdm.vaadin.component.ButtonFactory; |
|
32 | 33 |
import eu.etaxonomy.vaadin.event.EditorActionType; |
33 | 34 |
import eu.etaxonomy.vaadin.event.EntityEditorActionEvent; |
34 | 35 |
import eu.etaxonomy.vaadin.event.EntityEditorActionListener; |
... | ... | |
307 | 308 |
protected int addNewRow(int row, V val) { |
308 | 309 |
try { |
309 | 310 |
F field = newFieldInstance(val); |
311 |
ButtonGroup buttonGroup = new ButtonGroup(field); |
|
312 |
updateEditOrCreateButton(buttonGroup, val); |
|
310 | 313 |
field.addValueChangeListener(e -> { |
311 | 314 |
if(!creatingFields){ |
312 | 315 |
updateValue(); |
316 |
Object value = e.getProperty().getValue(); |
|
317 |
updateEditOrCreateButton(buttonGroup, value); |
|
313 | 318 |
fireValueChange(true); |
314 | 319 |
} |
315 | 320 |
}); |
... | ... | |
326 | 331 |
grid.setRows(grid.getRows() + 1); |
327 | 332 |
} |
328 | 333 |
grid.addComponent(field, GRID_X_FIELD, row); |
329 |
grid.addComponent(buttonGroup(field), 1, row);
|
|
334 |
grid.addComponent(buttonGroup, 1, row); |
|
330 | 335 |
updateButtonStates(); |
331 | 336 |
nestFieldGroup(field); |
332 | 337 |
row++; |
... | ... | |
340 | 345 |
return row; |
341 | 346 |
} |
342 | 347 |
|
343 |
private Component buttonGroup(F field){ |
|
348 |
/** |
|
349 |
* @param buttonGroup |
|
350 |
* @param value |
|
351 |
*/ |
|
352 |
public void updateEditOrCreateButton(ButtonGroup buttonGroup, Object value) { |
|
353 |
ButtonFactory buttonStyle; |
|
354 |
if(value == null){ |
|
355 |
buttonStyle = ButtonFactory.CREATE_NEW; |
|
356 |
} else { |
|
357 |
buttonStyle = ButtonFactory.EDIT_ITEM; |
|
358 |
} |
|
359 |
buttonGroup.getEditOrCreateButton().setIcon(buttonStyle.getIcon()); |
|
360 |
buttonGroup.getEditOrCreateButton().setDescription(buttonStyle.getDescription()); |
|
361 |
} |
|
344 | 362 |
|
345 |
CssLayout buttonGroup = new CssLayout(); |
|
346 |
Button add = new Button(FontAwesome.PLUS); |
|
347 |
add.setDescription("Add item"); |
|
348 |
add.addClickListener(e -> addRowAfter(field)); |
|
363 |
class ButtonGroup extends CssLayout{ |
|
349 | 364 |
|
350 |
if(withEditButton){ |
|
351 |
Button edit = new Button(FontAwesome.EDIT); |
|
352 |
edit.addClickListener(e -> editOrCreate(field)); |
|
353 |
buttonGroup.addComponent(edit); |
|
354 |
addStyledComponents(edit); |
|
355 |
} |
|
365 |
private Button editOrCreate; |
|
356 | 366 |
|
357 |
Button remove = new Button(FontAwesome.MINUS); |
|
358 |
remove.setDescription("Remove item"); |
|
359 |
remove.addClickListener(e -> removeRow(field)); |
|
367 |
ButtonGroup (F field){ |
|
360 | 368 |
|
369 |
Button add = ButtonFactory.ADD_ITEM.createButton(); |
|
370 |
add.setDescription("Add item"); |
|
371 |
add.addClickListener(e -> addRowAfter(field)); |
|
361 | 372 |
|
362 |
buttonGroup.addComponent(add); |
|
363 |
buttonGroup.addComponent(remove); |
|
364 |
addStyledComponents(add, remove); |
|
365 |
if(isOrderedCollection){ |
|
366 |
Button moveUp = new Button(FontAwesome.ARROW_UP); |
|
367 |
moveUp.setDescription("Move up"); |
|
368 |
moveUp.addClickListener(e -> moveRowUp(field)); |
|
369 |
Button moveDown = new Button(FontAwesome.ARROW_DOWN); |
|
370 |
moveDown.addClickListener(e -> moveRowDown(field)); |
|
371 |
moveDown.setDescription("Move down"); |
|
372 |
|
|
373 |
buttonGroup.addComponents(moveUp, moveDown); |
|
374 |
addStyledComponents(moveUp, moveDown); |
|
373 |
if(withEditButton){ |
|
374 |
editOrCreate = ButtonFactory.EDIT_ITEM.createButton(); |
|
375 |
editOrCreate.addClickListener(e -> editOrCreate(field)); |
|
376 |
addComponent(editOrCreate); |
|
377 |
addStyledComponents(editOrCreate); |
|
378 |
} |
|
379 |
|
|
380 |
Button remove = ButtonFactory.REMOVE_ITEM.createButton(); |
|
381 |
remove.setDescription("Remove item"); |
|
382 |
remove.addClickListener(e -> removeRow(field)); |
|
383 |
|
|
384 |
|
|
385 |
addComponent(add); |
|
386 |
addComponent(remove); |
|
387 |
addStyledComponents(add, remove); |
|
388 |
if(isOrderedCollection){ |
|
389 |
Button moveUp = new Button(FontAwesome.ARROW_UP); |
|
390 |
moveUp.setDescription("Move up"); |
|
391 |
moveUp.addClickListener(e -> moveRowUp(field)); |
|
392 |
Button moveDown = new Button(FontAwesome.ARROW_DOWN); |
|
393 |
moveDown.addClickListener(e -> moveRowDown(field)); |
|
394 |
moveDown.setDescription("Move down"); |
|
395 |
|
|
396 |
addComponents(moveUp, moveDown); |
|
397 |
addStyledComponents(moveUp, moveDown); |
|
398 |
} |
|
399 |
setStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP); |
|
400 |
} |
|
401 |
|
|
402 |
Button getEditOrCreateButton(){ |
|
403 |
return editOrCreate; |
|
375 | 404 |
} |
376 |
buttonGroup.setStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP); |
|
377 | 405 |
|
378 |
return buttonGroup; |
|
379 | 406 |
} |
380 | 407 |
|
381 | 408 |
/** |
Also available in: Unified diff
ref #7361 creating new icon 'create-new' & introducing ButtonFactory for harmonization of button creation