Project

General

Profile

« Previous | Next » 

Revision b393aff8

Added by Andreas Kohlbecker over 6 years ago

fix #6999 generic button state updater for toOne relation field

View differences:

src/main/java/eu/etaxonomy/cdm/vaadin/event/ToOneRelatedEntityButtonUpdater.java
1
/**
2
* Copyright (C) 2017 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.cdm.vaadin.event;
10

  
11
import com.vaadin.data.Property.ValueChangeEvent;
12
import com.vaadin.data.Property.ValueChangeListener;
13

  
14
import eu.etaxonomy.cdm.model.common.CdmBase;
15
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
16
import eu.etaxonomy.cdm.vaadin.security.UserHelper;
17
import eu.etaxonomy.vaadin.component.ToOneRelatedEntityField;
18

  
19
/**
20
 * @author a.kohlbecker
21
 * @since 19.10.2017
22
 *
23
 */
24
public class ToOneRelatedEntityButtonUpdater<CDM extends CdmBase> implements ValueChangeListener {
25

  
26
    private static final long serialVersionUID = 4472031263172275012L;
27

  
28
    ToOneRelatedEntityField<CDM>  toOneRelatedEntityField;
29

  
30
    public ToOneRelatedEntityButtonUpdater(ToOneRelatedEntityField<CDM> toOneRelatedEntityField){
31
        this.toOneRelatedEntityField = toOneRelatedEntityField;
32
    }
33

  
34
    /**
35
     * {@inheritDoc}
36
     */
37
    @Override
38
    public void valueChange(ValueChangeEvent event) {
39

  
40
        CdmBase value = (CdmBase)event.getProperty().getValue();
41

  
42
        boolean userIsAllowedToUpdate = UserHelper.fromSession().userHasPermission(value, CRUD.UPDATE);
43
        boolean userIsAllowedToCreate = UserHelper.fromSession().userHasPermission(value.getClass(), CRUD.CREATE);
44

  
45
        toOneRelatedEntityField.setAddButtonEnabled(userIsAllowedToCreate);
46
        toOneRelatedEntityField.setEditButtonEnabled(userIsAllowedToUpdate);
47

  
48
    }
49

  
50
}
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetEditorPresenter.java
34 34
import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
35 35
import eu.etaxonomy.cdm.service.CdmStore;
36 36
import eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory;
37
import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityButtonUpdater;
37 38
import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
38 39
import eu.etaxonomy.cdm.vaadin.model.registration.DerivationEventTypes;
39 40
import eu.etaxonomy.cdm.vaadin.model.registration.RegistrationTermLists;
......
151 152
                        collectionPagingProvider.getPageSize()
152 153
                        );
153 154
                row.collection.getSelect().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<Collection>());
155
                row.collection.getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Collection>(row.collection));
154 156

  
155 157
                row.mediaSpecimenReference.loadFrom(
156 158
                        referencePagingProvider,
......
158 160
                        collectionPagingProvider.getPageSize()
159 161
                        );
160 162
                row.mediaSpecimenReference.getSelect().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<Reference>());
163
                row.mediaSpecimenReference.getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Reference>(row.mediaSpecimenReference));
161 164

  
162 165
                getView().applyDefaultComponentStyle(row.components());
163 166

  
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNameEditorPresenter.java
21 21
import eu.etaxonomy.cdm.model.reference.Reference;
22 22
import eu.etaxonomy.cdm.service.CdmFilterablePagingProvider;
23 23
import eu.etaxonomy.cdm.vaadin.component.CdmBeanItemContainerFactory;
24
import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityButtonUpdater;
24 25
import eu.etaxonomy.cdm.vaadin.util.CdmTitleCacheCaptionGenerator;
25 26
import eu.etaxonomy.vaadin.mvp.AbstractCdmEditorPresenter;
26 27

  
......
50 51
        getView().getNomReferenceCombobox().getSelect().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<Reference>());
51 52
        CdmFilterablePagingProvider<Reference> referencePagingProvider = new CdmFilterablePagingProvider<Reference>(getRepo().getReferenceService(), TaxonNameEditorPresenter.this);
52 53
        getView().getNomReferenceCombobox().loadFrom(referencePagingProvider, referencePagingProvider, referencePagingProvider.getPageSize());
54
        getView().getNomReferenceCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Reference>(getView().getNomReferenceCombobox()));
53 55

  
54 56

  
55 57
        getView().getBasionymCombobox().setCaptionGenerator(new CdmTitleCacheCaptionGenerator<TaxonName>());
56 58
        CdmFilterablePagingProvider<TaxonName> namePagingProvider = new CdmFilterablePagingProvider<TaxonName>(getRepo().getNameService(), TaxonNameEditorPresenter.this);
57 59
        getView().getBasionymCombobox().setPagingProviders(namePagingProvider, namePagingProvider, namePagingProvider.getPageSize());
58
    }
59

  
60 60

  
61
    }
61 62

  
62 63
    /**
63 64
     * {@inheritDoc}
src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditor.java
241 241
        nomenclaturalReferenceDetail = addTextField("Reference detail", "nomenclaturalMicroReference", 3, row, 3, row);
242 242
        nomenclaturalReferenceDetail.setWidth(100, Unit.PIXELS);
243 243

  
244

  
244 245
        // Basionym
245 246
        row++;
246 247
        basionymCombobox = new ToManyRelatedEntitiesComboboxSelect<TaxonName>(TaxonName.class, "Basionym");
src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferenceEditorPresenter.java
24 24
import eu.etaxonomy.cdm.persistence.query.MatchMode;
25 25
import eu.etaxonomy.cdm.persistence.query.OrderHint;
26 26
import eu.etaxonomy.cdm.vaadin.event.ReferenceEditorAction;
27
import eu.etaxonomy.cdm.vaadin.event.ToOneRelatedEntityButtonUpdater;
27 28
import eu.etaxonomy.vaadin.component.ToOneRelatedEntityField;
28 29
import eu.etaxonomy.vaadin.mvp.AbstractCdmEditorPresenter;
29 30
import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent;
......
43 44
    ReferencePopupEditor inReferencePopup = null;
44 45

  
45 46
    public ReferenceEditorPresenter() {
46
        
47

  
47 48
    }
48 49

  
49 50
    /**
......
93 94
                    return page.getCount().intValue();
94 95
                }}
95 96
            , 20);
97

  
98
        getView().getInReferenceCombobox().getSelect().addValueChangeListener(new ToOneRelatedEntityButtonUpdater<Reference>(getView().getInReferenceCombobox()));
96 99
    }
97 100

  
98 101
    /**
src/main/java/eu/etaxonomy/vaadin/component/ToOneRelatedEntityCombobox.java
105 105

  
106 106
    }
107 107

  
108
    /**
109
     * {@inheritDoc}
110
     */
111
    @Override
112
    public void setAddButtonEnabled(boolean enabled) {
113
        addButton.setEnabled(enabled);
114
    }
115

  
116

  
108 117
    /**
109 118
     * {@inheritDoc}
110 119
     */
......
113 122
        addButton.addClickListener(listener);
114 123
    }
115 124

  
125
    /**
126
     * {@inheritDoc}
127
     */
128
    @Override
129
    public void setEditButtonEnabled(boolean enabled) {
130
        editButton.setEnabled(enabled);
131
    }
132

  
133

  
116 134
    /**
117 135
     * {@inheritDoc}
118 136
     */
src/main/java/eu/etaxonomy/vaadin/component/ToOneRelatedEntityField.java
17 17
 */
18 18
public interface ToOneRelatedEntityField<V extends Object> {
19 19

  
20
    /**
21
     * Set the enabled state of the edit button
22
     *
23
     * @param enabled
24
     */
25
    public void setEditButtonEnabled(boolean enabled);
26

  
20 27
    /**
21 28
     * Adds the click listener to the add-entity-button.
22 29
     *
......
25 32
     */
26 33
    public void addClickListenerAddEntity(ClickListener listener);
27 34

  
35
    /**
36
     * Set the enabled state of the add button
37
     *
38
     * @param enabled
39
     */
40
    public void setAddButtonEnabled(boolean enabled);
41

  
28 42
    /**
29 43
     * Adds the click listener to the edit-entity-button.
30 44
     *
src/main/java/eu/etaxonomy/vaadin/component/ToOneRelatedEntityListSelect.java
113 113
        addButton.addClickListener(listener);
114 114
    }
115 115

  
116
    /**
117
     * {@inheritDoc}
118
     */
119
    @Override
120
    public void setAddButtonEnabled(boolean enabled) {
121
        addButton.setEnabled(enabled);
122
    }
123

  
116 124
    /**
117 125
     * {@inheritDoc}
118 126
     */
......
121 129
        editButton.addClickListener(listener);
122 130
    }
123 131

  
132
    /**
133
     * {@inheritDoc}
134
     */
135
    @Override
136
    public void setEditButtonEnabled(boolean enabled) {
137
        editButton.setEnabled(enabled);
138
    }
139

  
124 140
    /**
125 141
     * {@inheritDoc}
126 142
     */

Also available in: Unified diff