Project

General

Profile

« Previous | Next » 

Revision c09732ba

Added by Andreas Kohlbecker almost 6 years ago

ref #7361 creating new icon 'create-new' & introducing ButtonFactory for harmonization of button creation

View differences:

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