/* * Ext GWT 2.2.4 - Ext for GWT * Copyright(c) 2007-2010, Ext JS, LLC. * licensing@extjs.com * * http://extjs.com/license */ package com.extjs.gxt.ui.client.widget.grid.filters; import java.util.ArrayList; import java.util.List; import com.extjs.gxt.ui.client.GXT; import com.extjs.gxt.ui.client.data.FilterConfig; import com.extjs.gxt.ui.client.data.ModelData; import com.extjs.gxt.ui.client.widget.grid.filters.RangeMenu.RangeItem; public class NumericFilter extends Filter { public static class NumericFilterMessages extends FilterMessages { private String emptyText = GXT.MESSAGES.numericFilter_emptyText(); /** * Returns the field's empty text. * * @return the empty text */ public String getEmptyText() { return emptyText; } /** * Sets the field empty text (defaults to 'Enter filter text...'). * * @param emptyText the empty text */ public void setEmptyText(String emptyText) { this.emptyText = emptyText; } } private List<RangeItem> rangeItems = new ArrayList<RangeItem>(); private RangeMenu rangeMenu; private int width = 125; public NumericFilter(String dataIndex) { super(dataIndex); setMessages(new NumericFilterMessages()); rangeItems.add(RangeItem.LESSTHAN); rangeItems.add(RangeItem.GREATERTHAN); rangeItems.add(RangeItem.EQUAL); menu = new RangeMenu(this); rangeMenu = (RangeMenu) menu; rangeMenu.setRangeItems(rangeItems); setWidth(getWidth()); } @Override public NumericFilterMessages getMessages() { return (NumericFilterMessages) super.getMessages(); } @Override public List<FilterConfig> getSerialArgs() { return getValue(); } @Override public List<FilterConfig> getValue() { return rangeMenu.getValue(); } /** * Returns the field width. * * @return the field width */ public int getWidth() { return width; } @Override public boolean isActivatable() { if (rangeMenu.eq != null && rangeMenu.eq.getValue() != null) { return true; } if (rangeMenu.lt != null && rangeMenu.lt.getValue() != null) { return true; } if (rangeMenu.gt != null && rangeMenu.gt.getValue() != null) { return true; } return false; } @Override public void setMessages(FilterMessages messages) { super.setMessages(messages); if (rangeMenu != null) { rangeMenu.setEmptyText(getMessages().getEmptyText()); } } @SuppressWarnings({"unchecked", "rawtypes"}) @Override public void setValue(Object value) { rangeMenu.setValue((List) value); fireUpdate(); } /** * Sets the field width (defaults to 125). * * @param width the field width */ public void setWidth(int width) { this.width = width; rangeMenu.setFieldWidth(width); } @Override public boolean validateModel(ModelData model) { Number val = getModelValue(model); if (rangeMenu.eq != null && rangeMenu.eq.getValue() != null) { if (val == null || rangeMenu.eq.getValue().doubleValue() != val.doubleValue()) { return false; } } if (rangeMenu.lt != null && rangeMenu.lt.getValue() != null) { if (val == null || rangeMenu.lt.getValue().doubleValue() <= val.doubleValue()) { return false; } } if (rangeMenu.gt != null && rangeMenu.gt.getValue() != null) { if (val == null || rangeMenu.gt.getValue().doubleValue() >= val.doubleValue()) { return false; } } return true; } }