blob: ba3c3fbd05181988c3e71f59118f03b85e74a64d [file] [log] [blame]
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;
}
}