| package org.eclipse.osbp.runtime.web.vaadin.components.fields.filter2; |
| |
| import javax.inject.Inject; |
| import javax.inject.Named; |
| |
| import org.eclipse.osbp.ecview.core.common.context.IViewContext; |
| import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType; |
| |
| import com.vaadin.data.Container.Filter; |
| import com.vaadin.data.util.BeanItemContainer; |
| import com.vaadin.data.util.filter.Compare; |
| import com.vaadin.server.Resource; |
| import com.vaadin.server.ThemeResource; |
| import com.vaadin.ui.ComboBox; |
| import com.vaadin.ui.Component; |
| import com.vaadin.ui.HorizontalLayout; |
| import com.vaadin.ui.Label; |
| |
| @SuppressWarnings("serial") |
| public class CompareBooleanComponent extends CompareComponent { |
| |
| private Label captionField; |
| |
| private ComboBox compareTypeField; |
| |
| @Inject |
| public CompareBooleanComponent(@Named("propertyId")String propertyId, IViewContext viewContext) { |
| super(propertyId, viewContext); |
| } |
| |
| @Override |
| protected Component createMainLayout() { |
| HorizontalLayout mainLayout = new HorizontalLayout(); |
| captionField = new Label(); |
| captionField.setValue(propertyId); |
| compareTypeField = new ComboBox(); |
| |
| mainLayout.addComponent(captionField); |
| mainLayout.addComponent(compareTypeField); |
| |
| captionField.setWidth("100%"); |
| compareTypeField.setWidth("100%"); |
| mainLayout.setExpandRatio(captionField, 1.0f); |
| mainLayout.setExpandRatio(compareTypeField, 1.0f); |
| |
| updateContainer(); |
| |
| compareTypeField.setItemCaptionPropertyId("caption"); |
| compareTypeField.setItemIconPropertyId("image"); |
| |
| return mainLayout; |
| } |
| |
| protected void updateContainer() { |
| BeanItemContainer<CompareType> container = new BeanItemContainer<>(CompareType.class); |
| container.addBean( |
| new CompareType(CompareTypeEnum.TRUE, toLabel(CompareTypeEnum.TRUE), toImage(CompareTypeEnum.TRUE))); |
| container.addBean( |
| new CompareType(CompareTypeEnum.FALSE, toLabel(CompareTypeEnum.FALSE), toImage(CompareTypeEnum.FALSE))); |
| container.addBean(new CompareType(CompareTypeEnum.IGNORE, toLabel(CompareTypeEnum.IGNORE), |
| toImage(CompareTypeEnum.IGNORE))); |
| |
| compareTypeField.setContainerDataSource(container); |
| } |
| |
| protected String toLabel(CompareTypeEnum enumx) { |
| return i18nService != null ? i18nService.getValue(enumx.name(), getLocale()) : enumx.name(); |
| } |
| |
| protected Resource toImage(CompareTypeEnum enumx) { |
| return themeResourceService.getThemeResource(enumx.name(), ThemeResourceType.ICON); |
| } |
| |
| public Filter getFilter() { |
| CompareType compareType = (CompareType) compareTypeField.getValue(); |
| |
| if (compareType == null) { |
| return null; |
| } |
| |
| Filter filter = null; |
| switch (compareType.typeEnum) { |
| case TRUE: |
| filter = new Compare.Equal(propertyId, true); |
| break; |
| case FALSE: |
| filter = new Compare.Equal(propertyId, false); |
| break; |
| case IGNORE: |
| break; |
| } |
| |
| return filter; |
| } |
| |
| @Override |
| public void resetAllFilters() { |
| compareTypeField.setValue(null); |
| } |
| |
| protected void updateCaptions() { |
| captionField.setValue(getCaptionInternal()); |
| |
| updateContainer(); |
| } |
| |
| public static class CompareType { |
| private CompareTypeEnum typeEnum; |
| private String caption; |
| private Resource image; |
| |
| public CompareType(CompareTypeEnum typeEnum, String caption, Resource image) { |
| super(); |
| this.typeEnum = typeEnum; |
| this.caption = caption; |
| this.image = image; |
| } |
| |
| public CompareTypeEnum getTypeEnum() { |
| return typeEnum; |
| } |
| |
| public void setTypeEnum(CompareTypeEnum typeEnum) { |
| this.typeEnum = typeEnum; |
| } |
| |
| public String getCaption() { |
| return caption; |
| } |
| |
| public void setCaption(String caption) { |
| this.caption = caption; |
| } |
| |
| public Resource getImage() { |
| return image; |
| } |
| |
| public void setImage(Resource image) { |
| this.image = image; |
| } |
| |
| } |
| |
| public enum CompareTypeEnum { |
| TRUE, FALSE, IGNORE; |
| } |
| } |