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

Source Code of com.extjs.gxt.ui.client.widget.grid.filters.ListMenu

/*
* 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.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.store.ListStore;
import com.extjs.gxt.ui.client.widget.menu.CheckMenuItem;
import com.extjs.gxt.ui.client.widget.menu.Menu;

public class ListMenu extends Menu {

  private Listener<MenuEvent> checkListener = new Listener<MenuEvent>() {
    public void handleEvent(MenuEvent be) {
      onCheckChange(be);
    }
  };
  private ListFilter filter;
  private List<ModelData> selected;
  private ListStore<ModelData> store;

  @SuppressWarnings({"unchecked", "rawtypes"})
  public ListMenu(ListFilter filter, ListStore store) {
    this.filter = filter;
    this.store = store;

    selected = new ArrayList<ModelData>();
  }

  public ListFilter getFilter() {
    return filter;
  }

  public List<ModelData> getSelected() {
    return selected;
  }

  public List<String> getValue() {
    List<String> values = new ArrayList<String>();
    for (ModelData m : selected) {
      values.add((String) m.get(filter.getDisplayProperty()));
    }
    return values;
  }

  public void setSelected(List<ModelData> selected) {
    this.selected = new ArrayList<ModelData>(selected);
  }

  protected void onCheckChange(MenuEvent be) {
    CheckMenuItem item = (CheckMenuItem) be.getItem();
    ModelData m = (ModelData) item.getData("model");
    if (be.isChecked()) {
      if (!selected.contains(m)) {
        selected.add(m);
      }
    } else {
      selected.remove(m);
    }
    filter.onCheckChange(be);
  }

  @Override
  protected void onShow() {
    super.onShow();

    removeAll(true);
    for (int i = 0; i < store.getCount(); i++) {
      ModelData m = store.getAt(i);
      CheckMenuItem item = new CheckMenuItem();
      Object v = m.get(filter.getDisplayProperty());
      item.setText(v == null ? "" : v.toString());
      item.setChecked(selected.contains(m));
      item.setHideOnClick(false);
      item.setData("model", m);
      item.addListener(Events.CheckChange, checkListener);
      add(item);
    }

    layout();
  }

}
TOP

Related Classes of com.extjs.gxt.ui.client.widget.grid.filters.ListMenu

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.