Project

General

Profile

« Previous | Next » 

Revision 1aa951e9

Added by Andreas Kohlbecker almost 7 years ago

ref #6169 Delete button in editors optional

View differences:

src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferenceEditorPresenter.java
125 125
               TransactionStatus tx = getRepo().startTransaction(false);
126 126
               Reference reference = getRepo().getReferenceService().find(editorAction.getEntityId());
127 127
               ReferencePopupEditor popup = getNavigationManager().showInPopup(ReferencePopupEditor.class);
128
               popup.withDeleteButton(true);
128 129
               popup.showInEditor(reference);
129 130
               getRepo().commitTransaction(tx);
130 131
           }
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationPopupEditor.java
11 11
import java.util.Arrays;
12 12
import java.util.Collection;
13 13

  
14
import org.springframework.beans.factory.annotation.Autowired;
15
import org.springframework.context.annotation.Scope;
16 14
import org.springframework.security.core.GrantedAuthority;
17 15

  
18
import com.vaadin.spring.annotation.SpringComponent;
19 16
import com.vaadin.ui.DateField;
20 17
import com.vaadin.ui.FormLayout;
21 18
import com.vaadin.ui.ListSelect;
......
25 22
import eu.etaxonomy.cdm.model.common.User;
26 23
import eu.etaxonomy.cdm.model.name.Registration;
27 24
import eu.etaxonomy.cdm.model.name.RegistrationStatus;
28
import eu.etaxonomy.cdm.vaadin.component.SelectFieldFactory;
29 25
import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
30 26
import eu.etaxonomy.cdm.vaadin.util.converter.JodaDateTimeConverter;
31 27
import eu.etaxonomy.vaadin.mvp.AbstractCdmPopupEditor;
......
35 31
 * @since May 15, 2017
36 32
 *
37 33
 */
38
@SpringComponent
39
@Scope("prototype")
40 34
public class RegistrationPopupEditor extends AbstractCdmPopupEditor<Registration, RegistrationEditorPresenter>
41 35
    implements RegistrationPopEditorView, AccessRestrictedView {
42 36

  
43 37
    private static final long serialVersionUID = 5418275817834009509L;
44 38

  
45
    @Autowired
46
    private SelectFieldFactory selectFieldFactory;
47 39

  
48 40
    TextField identifierField;
49 41
    TextField specificIdentifierField;
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkflowPresenter.java
130 130
        Reference reference = getRepo().getReferenceService().find(event.getEntityId());
131 131
        ReferencePopupEditor popup = getNavigationManager().showInPopup(ReferencePopupEditor.class);
132 132
        popup.showInEditor(reference);
133
        popup.withDeleteButton(true);
133 134
        getRepo().commitTransaction(tx);
134 135
    }
135 136

  
......
148 149
        TaxonNameBase taxonName = getRepo().getNameService().find(event.getEntityId());
149 150
        TaxonNamePopupEditor popup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class);
150 151
        popup.showInEditor(taxonName);
152
        popup.withDeleteButton(true);
151 153
        getRepo().commitTransaction(tx);
152 154
    }
153 155

  
src/main/java/eu/etaxonomy/cdm/vaadin/view/taxon/TaxonNamePopupEditor.java
10 10

  
11 11
import java.util.Collection;
12 12

  
13
import org.springframework.beans.factory.annotation.Autowired;
14
import org.springframework.context.annotation.Scope;
15 13
import org.springframework.security.core.GrantedAuthority;
16 14

  
17
import com.vaadin.spring.annotation.SpringComponent;
18 15
import com.vaadin.ui.Alignment;
19 16
import com.vaadin.ui.GridLayout;
20 17
import com.vaadin.ui.ListSelect;
......
23 20
import eu.etaxonomy.cdm.model.name.Rank;
24 21
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
25 22
import eu.etaxonomy.cdm.persistence.query.OrderHint;
26
import eu.etaxonomy.cdm.vaadin.component.SelectFieldFactory;
27 23
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField;
28 24
import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView;
29 25
import eu.etaxonomy.vaadin.component.SwitchableTextField;
......
34 30
 * @since May 22, 2017
35 31
 *
36 32
 */
37
@SpringComponent
38
@Scope("prototype")
39 33
public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonNameBase, TaxonNameEditorPresenter> implements TaxonNamePopupEditorView, AccessRestrictedView {
40 34

  
41 35
    private static final long serialVersionUID = -7037436241474466359L;
42 36

  
43
    @Autowired
44
    private SelectFieldFactory selectFieldFactory;
45

  
46 37
    private final static int GRID_COLS = 4;
47 38

  
48 39
    private final static int GRID_ROWS = 7;
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmPopupEditor.java
21 21
import com.vaadin.ui.themes.ValoTheme;
22 22

  
23 23
import eu.etaxonomy.cdm.model.common.CdmBase;
24
import eu.etaxonomy.cdm.vaadin.component.SelectFieldFactory;
25
import eu.etaxonomy.vaadin.ui.view.PopupEditorFactory;
24 26

  
25 27
/**
26 28
 * @author a.kohlbecker
......
38 40

  
39 41
    private Button advancedModeButton;
40 42

  
43
    /**
44
     * set by the {@link PopupEditorFactory}
45
     */
46
    protected SelectFieldFactory selectFieldFactory;
47

  
41 48
    /**
42 49
     * @param layout
43 50
     * @param dtoType
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractPopupEditor.java
53 53
import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent.Reason;
54 54

  
55 55
/**
56
 *
57
 * Optional with a delete button which can be enabled with {@link #withDeleteButton(boolean)}
58
 *
56 59
 * @author a.kohlbecker
57 60
 * @since Apr 5, 2017
58 61
 *
......
120 123
        delete = new Button("Delete", FontAwesome.REMOVE);
121 124
        delete.setStyleName(ValoTheme.BUTTON_DANGER);
122 125
        delete.addClickListener(e -> delete());
126
        delete.setVisible(false);
123 127

  
124 128
        buttonLayout.addComponents(delete, save, cancel);
125
        buttonLayout.setExpandRatio(delete, 1);
129
        // delete is initially invisible, let save take all space
130
        buttonLayout.setExpandRatio(save, 1);
126 131
        buttonLayout.setComponentAlignment(delete, Alignment.TOP_RIGHT);
127 132
        buttonLayout.setComponentAlignment(save, Alignment.TOP_RIGHT);
128 133
        buttonLayout.setComponentAlignment(cancel, Alignment.TOP_RIGHT);
......
491 496
    }
492 497

  
493 498

  
499
    public void withDeleteButton(boolean withDelete){
500

  
501
        if(withDelete){
502
            buttonLayout.setExpandRatio(save, 0);
503
            buttonLayout.setExpandRatio(delete, 1);
504
        } else {
505
            buttonLayout.setExpandRatio(save, 1);
506
            buttonLayout.setExpandRatio(delete, 0);
507
        }
508
        delete.setVisible(withDelete);
509
    }
510

  
494 511

  
495 512
    // ------------------------ data binding ------------------------ //
496 513

  
src/main/java/eu/etaxonomy/vaadin/ui/view/PopupEditorFactory.java
23 23
import com.vaadin.spring.annotation.UIScope;
24 24

  
25 25
import eu.etaxonomy.cdm.api.application.CdmRepository;
26
import eu.etaxonomy.cdm.vaadin.component.SelectFieldFactory;
27
import eu.etaxonomy.vaadin.mvp.AbstractCdmPopupEditor;
26 28
import eu.etaxonomy.vaadin.mvp.AbstractEditorPresenter;
27 29
import eu.etaxonomy.vaadin.mvp.AbstractPopupEditor;
28 30
import eu.etaxonomy.vaadin.mvp.AbstractPresenter;
......
46 48
    @Qualifier("cdmRepository")
47 49
    private CdmRepository repo;
48 50

  
51
    @Autowired
52
    private SelectFieldFactory selectFieldFactory;
53

  
49 54
    @Autowired
50 55
    @Lazy
51 56
    private NavigationManager navigationManager;
......
59 64

  
60 65
    private Method viewInitMethod;
61 66

  
67
    private Field selectFieldFactoryField;
68

  
62 69
    public PopupEditorFactory(){
63 70
        initFieldsAccess();
64 71
    }
......
88 95
            viewInitMethod = AbstractView.class.getDeclaredMethod("init");
89 96
            viewInitMethod.setAccessible(true);
90 97

  
98
            selectFieldFactoryField = AbstractCdmPopupEditor.class.getDeclaredField("selectFieldFactory");
99
            selectFieldFactoryField.setAccessible(true);
100

  
91 101
        } catch (NoSuchFieldException | SecurityException | NoSuchMethodException  e) {
92 102
            throw new RuntimeException("Severe error during initialization. Please check the classes AbstractPresenter, AbstractEditorPresenter, AbstractView for modificactions.", e);
93 103
        }
......
119 129
                viewEventBusField.set(abstractView, eventBus);
120 130
                viewInjectPresenterMethod.invoke(abstractView, presenter);
121 131
                // invoke the @PostConstruct method
132

  
133
                if(AbstractCdmPopupEditor.class.isAssignableFrom(popupViewClass)){
134
                    selectFieldFactoryField.set(view, selectFieldFactory);
135
                }
136

  
122 137
                viewInitMethod.invoke(abstractView);
123 138
            }
124 139
            return view;

Also available in: Unified diff