//>>built
define("dojox/grid/enhanced/plugins/Filter",["dojo/_base/declare","dojo/_base/lang","dojo/i18n","../_Plugin","./Dialog","./filter/FilterLayer","./filter/FilterBar","./filter/FilterDefDialog","./filter/FilterStatusTip","./filter/ClearFilterConfirm","../../EnhancedGrid","dojo/i18n!../nls/Filter"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b){
var _c=_1("dojox.grid.enhanced.plugins.Filter",_4,{name:"filter",constructor:function(_d,_e){
this.grid=_d;
this.nls=_3.getLocalization("dojox.grid.enhanced","Filter");
_e=this.args=_2.isObject(_e)?_e:{};
if(typeof _e.ruleCount!="number"||_e.ruleCount<0){
_e.ruleCount=3;
}
var rc=this.ruleCountToConfirmClearFilter=_e.ruleCountToConfirmClearFilter;
if(rc===undefined){
this.ruleCountToConfirmClearFilter=2;
}
this._wrapStore();
var _f={"plugin":this};
this.clearFilterDialog=new _5({refNode:this.grid.domNode,title:this.nls["clearFilterDialogTitle"],content:new _a(_f)});
this.filterDefDialog=new _8(_f);
this.filterBar=new _7(_f);
this.filterStatusTip=new _9(_f);
_d.onFilterDefined=function(){
};
this.connect(_d.layer("filter"),"onFilterDefined",function(_10){
_d.onFilterDefined(_d.getFilter(),_d.getFilterRelation());
});
},destroy:function(){
this.inherited(arguments);
try{
this.grid.unwrap("filter");
this.filterBar.destroyRecursive();
this.filterBar=null;
this.clearFilterDialog.destroyRecursive();
this.clearFilterDialog=null;
this.filterStatusTip.destroy();
this.filterStatusTip=null;
this.filterDefDialog.destroy();
this.filterDefDialog=null;
this.grid=null;
this.nls=null;
this.args=null;
}
catch(e){
console.warn("Filter.destroy() error:",e);
}
},_wrapStore:function(){
var g=this.grid;
var _11=this.args;
var _12=_11.isServerSide?new _6.ServerSideFilterLayer(_11):new _6.ClientSideFilterLayer({cacheSize:_11.filterCacheSize,fetchAll:_11.fetchAllOnFirstFilter,getter:this._clientFilterGetter});
_6.wrap(g,"_storeLayerFetch",_12);
this.connect(g,"_onDelete",_2.hitch(_12,"invalidate"));
},onSetStore:function(_13){
this.filterDefDialog.clearFilter(true);
},_clientFilterGetter:function(_14,_15,_16){
return _15.get(_16,_14);
}});
_b.registerPlugin(_c);
return _c;
});
