package com.constellio.app.ui.framework.components.fields.enumWithSmallCode; import static com.constellio.app.ui.i18n.i18n.$; import java.util.List; import com.constellio.app.ui.application.ConstellioUI; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.entities.EnumWithSmallCode; import com.vaadin.ui.ComboBox; public class EnumWithSmallCodeComboBox<E extends EnumWithSmallCode> extends ComboBox implements EnumWithSmallCodeField { private Class<E> enumWithSmallCodeClass; private EnumWithSmallCodeFieldPresenter presenter; private boolean codeAsCaption; public EnumWithSmallCodeComboBox(Class<E> enumWithSmallCodeClass) { this(enumWithSmallCodeClass, false); } public EnumWithSmallCodeComboBox(Class<E> enumWithSmallCodeClass, boolean codeAsCaption) { super(); this.enumWithSmallCodeClass = enumWithSmallCodeClass; this.codeAsCaption = codeAsCaption; this.presenter = new EnumWithSmallCodeFieldPresenter(this); this.presenter.forEnumClass(enumWithSmallCodeClass); } @Override public void setOptions(List<EnumWithSmallCode> enumConstants) { for (EnumWithSmallCode enumWithSmallCode : enumConstants) { String enumCode = enumWithSmallCode.getCode(); if (!isIgnored(enumCode)) { addItem(enumWithSmallCode); String caption; if (codeAsCaption) { caption = enumCode; } else { // TODO Use EnumWithSmallCodeToCaptionConverter caption = $(enumWithSmallCodeClass.getSimpleName() + "." + enumCode); } setItemCaption(enumWithSmallCode, caption); } } } protected boolean isIgnored(String enumCode) { return false; } @Override public SessionContext getSessionContext() { return ConstellioUI.getCurrentSessionContext(); } }