Package com.extjs.gxt.ui.client.widget.grid.filters

Source Code of com.extjs.gxt.ui.client.widget.grid.filters.BooleanFilter$BooleanFilterMessages

/*
* 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.List;

import com.extjs.gxt.ui.client.GXT;
import com.extjs.gxt.ui.client.core.XDOM;
import com.extjs.gxt.ui.client.data.BaseBooleanFilterConfig;
import com.extjs.gxt.ui.client.data.FilterConfig;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.MenuEvent;
import com.extjs.gxt.ui.client.util.Util;
import com.extjs.gxt.ui.client.widget.menu.CheckMenuItem;

/**
* Boolean filter that displays yes / no radio items.
*/
public class BooleanFilter extends Filter {
  public static class BooleanFilterMessages extends FilterMessages {
    private String noText = GXT.MESSAGES.booleanFilter_noText();
    private String yesText = GXT.MESSAGES.booleanFilter_yesText();

    /**
     * @return the noText
     */
    public String getNoText() {
      return noText;
    }

    /**
     * @return the yesText
     */
    public String getYesText() {
      return yesText;
    }

    /**
     * @param noText the noText to set
     */
    public void setNoText(String noText) {
      this.noText = noText;
    }

    /**
     * @param yesText the yesText to set
     */
    public void setYesText(String yesText) {
      this.yesText = yesText;
    }
  }

  private Listener<MenuEvent> listener = new Listener<MenuEvent>() {
    public void handleEvent(MenuEvent be) {
      fireUpdate();
    }
  };

  private CheckMenuItem yesItem, noItem;

  /**
   * Creates a new boolean filter index.
   *
   * @param dataIndex the data index the filter is mapped to
   */
  public BooleanFilter(String dataIndex) {
    super(dataIndex);
    yesItem = new CheckMenuItem();
    yesItem.setGroup(XDOM.getUniqueId());
    yesItem.addListener(Events.CheckChange, listener);
    yesItem.setChecked(false);

    noItem = new CheckMenuItem();
    noItem.setGroup(yesItem.getGroup());
    noItem.addListener(Events.CheckChange, listener);
    noItem.setChecked(true);

    menu.add(yesItem);
    menu.add(noItem);

    setMessages(new BooleanFilterMessages());
  }

  @Override
  public BooleanFilterMessages getMessages() {
    return (BooleanFilterMessages) super.getMessages();
  }

  @Override
  @SuppressWarnings("unchecked")
  public List<FilterConfig> getSerialArgs() {
    FilterConfig config = new BaseBooleanFilterConfig();
    config.setType("boolean");
    config.setValue(getValue());
    return Util.createList(config);
  }

  @Override
  public Object getValue() {
    return Boolean.valueOf(yesItem.isChecked());
  }

  @Override
  public void setMessages(FilterMessages messages) {
    super.setMessages(messages);
    if (yesItem != null) {
      yesItem.setText(getMessages().getYesText());
    }
    if (noItem != null) {
      noItem.setText(getMessages().getNoText());
    }
  }

  @Override
  public void setValue(Object value) {
    boolean yes = false;
    if (value instanceof Boolean) {
      yes = ((Boolean) value).booleanValue();
    } else if (value instanceof String) {
      yes = Boolean.valueOf((String) value);
    }
    yesItem.setChecked(yes, false);
    noItem.setChecked(!yes, false);
    fireUpdate();
  }

  @Override
  public boolean validateModel(ModelData model) {
    Boolean val = getModelValue(model);
    return getValue().equals(val == null ? Boolean.FALSE : val);
  }

}
TOP

Related Classes of com.extjs.gxt.ui.client.widget.grid.filters.BooleanFilter$BooleanFilterMessages

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.