Project

General

Profile

« Previous | Next » 

Revision ad6c211a

Added by Andreas Kohlbecker over 2 years ago

ref #6732 rank selector offering compact and full list of ranks

View differences:

src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNameEditorPresenter.java
25 25
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
26 26
import org.vaadin.viritin.fields.AbstractElementCollection;
27 27

  
28
import com.vaadin.data.Container.Filter;
29
import com.vaadin.data.Item;
28 30
import com.vaadin.data.Property;
29 31
import com.vaadin.data.util.BeanItemContainer;
30 32
import com.vaadin.spring.annotation.SpringComponent;
......
130 132

  
131 133
    private Integer taxonNameId;
132 134

  
135
    private BeanItemContainer<DefinedTermBase> rankTermItemContainer;
136

  
137
    private Filter rankListFilter;
138

  
139
    /**
140
     * the taxon names rank as loaded from the persistence layer
141
     */
142
    private Rank initialRank;
143

  
144

  
133 145
    @SuppressWarnings("serial")
134 146
    @Override
135 147
    public void handleViewEntered() {
......
142 154
                .buildEnumTermItemContainer(NomenclaturalCodeEdition.class,
143 155
                        nomCodes.toArray(new NomenclaturalCodeEdition[nomCodes.size()]));
144 156

  
157
        rankTermItemContainer = cdmBeanItemContainerFactory.buildTermItemContainer(TermType.Rank);
158
        rankListFilter = new Filter() {
159
            @Override
160
            public boolean passesFilter(Object itemId, Item item) throws UnsupportedOperationException {
161
                return getView().isRanksFullList() || RegistrationUIDefaults.RANK_SET_COMPACT.contains(itemId) || itemId.equals(initialRank);
162
            }
163
            @Override
164
            public boolean appliesToProperty(Object propertyId) {
165
                return false;
166
            }};
167
        rankTermItemContainer.addContainerFilter(rankListFilter);
145 168
        getView().getRankSelect()
146
                .setContainerDataSource(cdmBeanItemContainerFactory.buildTermItemContainer(TermType.Rank));
169
                .setContainerDataSource(rankTermItemContainer);
147 170
        getView().getRankSelect().setItemCaptionPropertyId("label");
171
        getView().getRankSelectFullListToggle().addClickListener(e -> {
172
            updateRankTermItemContainer();
173
        });
148 174

  
149 175
        CdmFilterablePagingProvider<AgentBase, TeamOrPersonBase> termOrPersonPagingProvider = pagingProviderFactory
150 176
                .teamOrPersonPagingProvider();
......
280 306
                .buildVocabularyTermsItemContainer(AnnotationType.EDITORIAL().getVocabulary().getUuid()));
281 307
    }
282 308

  
309
    public void updateRankTermItemContainer() {
310
        // add and remove the filter to update the list of rank terms
311
        // the filter itself will behave accordingly to the isRanksFullList in the view
312
        rankTermItemContainer.removeContainerFilter(rankListFilter);
313
        rankTermItemContainer.addContainerFilter(rankListFilter);
314
    }
315

  
283 316
    @Deprecated
284 317
    private void addNomenclaturalStatus(NomenclaturalStatusDTO element) {
285 318
        // Nothing to do
......
288 321
    @Override
289 322
    protected void adaptDataProviders() {
290 323
        updateOrthographicCorrectionRestriction();
324
        updateRankTermItemContainer();
291 325
    }
292 326

  
293 327
    private void updateOrthographicCorrectionRestriction() {
......
411 445
        }
412 446

  
413 447
        taxonNameId = Integer.valueOf(taxonName.getId());
448
        initialRank = taxonName.getRank();
414 449
        relatedNamePagingProvider.addRestriction(new Restriction<>("id", Operator.AND_NOT, null, taxonNameId));
415 450

  
416 451
        return taxonName;

Also available in: Unified diff