Package org.zkoss.zss.ui.au.in

Source Code of org.zkoss.zss.ui.au.in.FilterCommand

/* FilterCommand.java

{{IS_NOTE
  Purpose:
   
  Description:
   
  History:
    Dec 5, 2011 9:44:00 AM , Created by sam
}}IS_NOTE

Copyright (C) 2011 Potix Corporation. All Rights Reserved.

{{IS_RIGHT
}}IS_RIGHT
*/
package org.zkoss.zss.ui.au.in;

import java.util.Map;

import org.zkoss.json.JSONArray;
import org.zkoss.poi.ss.usermodel.AutoFilter;
import org.zkoss.zk.au.AuRequest;
import org.zkoss.zk.mesg.MZk;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.UiException;
import org.zkoss.zss.model.Range;
import org.zkoss.zss.model.Ranges;
import org.zkoss.zss.model.Worksheet;
import org.zkoss.zss.ui.Spreadsheet;

/**
* @author sam
*
*/
public class FilterCommand implements Command {

  @Override
  public void process(AuRequest request) {
    final Component comp = request.getComponent();
    if (comp == null)
      throw new UiException(MZk.ILLEGAL_REQUEST_COMPONENT_REQUIRED, this);
   
    final Map data = request.getData();
    String type = (String) data.get("type");
    if ("onApplyFilter".equals(type)) {
      applyFilter(((Spreadsheet) comp).getSelectedSheet(), data);
    }
  }
 
  private void applyFilter (Worksheet worksheet, Map data) {
    final boolean selectAll = (Boolean) data.get("all");
    final String cellRangeAddr = (String) data.get("range");
    final int field = (Integer) data.get("field");
    final Range range = Ranges.range(worksheet, cellRangeAddr);
   
    if (selectAll) {
      range.autoFilter(field, null, AutoFilter.FILTEROP_VALUES, null, null);
    } else { //partial selection
      JSONArray ary = (JSONArray) data.get("criteria");
      range.autoFilter(field, ary.toArray(new String[ary.size()]), AutoFilter.FILTEROP_VALUES, null, null);
    }
  }
}
TOP

Related Classes of org.zkoss.zss.ui.au.in.FilterCommand

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.