| package org.eclipse.osbp.runtime.web.vaadin.components.fields.filter2; |
| |
| import java.util.Date; |
| |
| 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.data.util.filter.Not; |
| import com.vaadin.server.Resource; |
| import com.vaadin.server.ThemeResource; |
| import com.vaadin.ui.ComboBox; |
| import com.vaadin.ui.Component; |
| import com.vaadin.ui.DateField; |
| import com.vaadin.ui.HorizontalLayout; |
| import com.vaadin.ui.Label; |
| |
| @SuppressWarnings("serial") |
| public class CompareDateComponent extends CompareComponent { |
| |
| private Label captionField; |
| |
| private ComboBox compareTypeField; |
| |
| private DateField valueField; |
| |
| @Inject |
| public CompareDateComponent(@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(); |
| valueField = new DateField(); |
| |
| mainLayout.addComponent(captionField); |
| mainLayout.addComponent(compareTypeField); |
| mainLayout.addComponent(valueField); |
| |
| captionField.setWidth("100%"); |
| compareTypeField.setWidth("100%"); |
| valueField.setWidth("100%"); |
| mainLayout.setExpandRatio(captionField, 1.0f); |
| mainLayout.setExpandRatio(compareTypeField, 0.5f); |
| mainLayout.setExpandRatio(valueField, 1.5f); |
| |
| updateContainer(); |
| |
| compareTypeField.setItemCaptionPropertyId("caption"); |
| compareTypeField.setItemIconPropertyId("image"); |
| |
| return mainLayout; |
| } |
| |
| protected void updateContainer() { |
| BeanItemContainer<CompareType> container = new BeanItemContainer<>(CompareType.class); |
| container |
| .addBean(new CompareType(CompareTypeEnum.EQ, toLabel(CompareTypeEnum.EQ), toImage(CompareTypeEnum.EQ))); |
| container |
| .addBean(new CompareType(CompareTypeEnum.NE, toLabel(CompareTypeEnum.NE), toImage(CompareTypeEnum.NE))); |
| container |
| .addBean(new CompareType(CompareTypeEnum.GT, toLabel(CompareTypeEnum.GT), toImage(CompareTypeEnum.GT))); |
| container |
| .addBean(new CompareType(CompareTypeEnum.GE, toLabel(CompareTypeEnum.GE), toImage(CompareTypeEnum.GE))); |
| container |
| .addBean(new CompareType(CompareTypeEnum.LT, toLabel(CompareTypeEnum.LT), toImage(CompareTypeEnum.LT))); |
| container |
| .addBean(new CompareType(CompareTypeEnum.LE, toLabel(CompareTypeEnum.LE), toImage(CompareTypeEnum.LE))); |
| |
| compareTypeField.setContainerDataSource(container); |
| } |
| |
| protected String toLabel(CompareTypeEnum enumx) { |
| return Util.getCaption(i18nService, enumx.name(), enumx.name(), getLocale()); |
| } |
| |
| protected Resource toImage(CompareTypeEnum enumx) { |
| return themeResourceService.getThemeResource(enumx.name(), ThemeResourceType.ICON); |
| } |
| |
| public Filter getFilter() { |
| if (!valueField.isValid() || !compareTypeField.isValid()) { |
| return null; |
| } |
| |
| CompareType compareType = (CompareType) compareTypeField.getValue(); |
| |
| if (compareType == null) { |
| return null; |
| } |
| |
| Date value = valueField.getValue(); |
| if (value == null) { |
| return null; |
| } |
| |
| Filter filter = null; |
| switch (compareType.typeEnum) { |
| case EQ: |
| filter = new Compare.Equal(propertyId, value); |
| break; |
| case GE: |
| filter = new Compare.GreaterOrEqual(propertyId, value); |
| break; |
| case GT: |
| filter = new Compare.Greater(propertyId, value); |
| break; |
| case LE: |
| filter = new Compare.LessOrEqual(propertyId, value); |
| break; |
| case LT: |
| filter = new Compare.Less(propertyId, value); |
| break; |
| case NE: |
| filter = new Not(new Compare.Equal(propertyId, value)); |
| break; |
| } |
| |
| return filter; |
| } |
| |
| @Override |
| public void resetAllFilters() { |
| compareTypeField.setValue(null); |
| valueField.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 { |
| EQ, NE, GT, GE, LE, LT; |
| } |
| } |