Revision ad6c211a
Added by Andreas Kohlbecker over 2 years ago
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
ref #6732 rank selector offering compact and full list of ranks