<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" verticalAlign="middle" horizontalGap="{horizontalGapNum}"
implements="com.flexicious.nestedtreedatagrid.pager.IExtendedPager,com.flexicious.nestedtreedatagrid.interfaces.IFixedWidth"
styleName="pagingControl" horizontalScrollPolicy="off"
creationComplete="onCreationComplete(event)" xmlns:controls="com.sample.examples.support.controls.*"
paddingTop="0" paddingBottom="0" verticalGap="0" xmlns:pager="com.flexicious.nestedtreedatagrid.pager.*">
<mx:Metadata> [Event("pageChange",type="com.flexicious.nestedtreedatagrid.events.ExtendedFilterPageSortChangeEvent")] </mx:Metadata>
<mx:Metadata> [Event("reset")] </mx:Metadata>
<mx:Style>
.pagerImageButton
{
image-padding-left:0;
image-padding-top:0;
image-padding-bottom:0;
image-padding-right:0;
label-padding-left:0;
label-padding-top:0;
label-padding-bottom:0;
label-padding-right:0;
background-colors:"";
border-color:"";
}
</mx:Style>
<mx:Script>
<![CDATA[
import com.flexicious.export.ExportOptions;
import com.flexicious.grids.dependencies.IExtendedDataGrid;
import com.flexicious.nestedtreedatagrid.FlexDataGrid;
import com.flexicious.nestedtreedatagrid.FlexDataGridColumnLevel;
import com.flexicious.nestedtreedatagrid.events.ExtendedFilterPageSortChangeEvent;
import com.flexicious.nestedtreedatagrid.events.FlexDataGridEvent;
import com.flexicious.nestedtreedatagrid.export.ExtendedExportController;
import com.flexicious.nestedtreedatagrid.interfaces.IExtendedFlexDataGrid;
import com.flexicious.nestedtreedatagrid.print.ExtendedPrintController;
import com.flexicious.nestedtreedatagrid.print.ExtendedPrintOptionsView;
import com.flexicious.nestedtreedatagrid.valueobjects.RowInfo;
import com.flexicious.nestedtreedatagrid.valueobjects.ToolbarAction;
import com.flexicious.persistence.SaveSettingsPopup;
import com.flexicious.persistence.SettingsPopup;
import com.flexicious.print.PrintOptions;
import com.flexicious.utils.UIUtils;
import mx.collections.ArrayCollection;
import mx.events.CollectionEvent;
[Bindable(public var horizontalGapNum:Number= 3;
[Bindable(private var _pages:ArrayCollection= new ArrayCollection();
private var _totalRecords:int=0;
[Bindable(private var _pageSize:int=50;
[Bindable(private var _pageIndex:int=0;
[Bindable(private var _pagerPosition:String="middle";
[Bindable(private var _level:FlexDataGridColumnLevel;
[Bindable(private var _grid:IExtendedFlexDataGrid;
[Bindable(private var _rowInfo:RowInfo;
[Bindable(private var _gridAutomationName:String="";
/**
* Default handler for the First Page Navigation Button
*/
public function onImgFirstClick():void
{
{
_pageIndex = 0;
onPageChanged();
}
}
/**
* Default handler for the Previous Page Navigation Button
*/
public function onImgPreviousClick():void
{
if(_pageIndex > 0)
{
_pageIndex--;
onPageChanged();
}
}
/**
* Default handler for the Next Page Navigation Button
*/
public function onImgNextClick():void
{
if(_pageIndex < pageCount-1)
{
_pageIndex++;
onPageChanged();
}
}
/**
* Default handler for the Last Page Navigation Button
*/
public function onImgLastClick():void
{
if(_pageIndex < pageCount-1)
{
_pageIndex = pageCount-1;
onPageChanged();
}
}
/**
* Default handler for the Page Change Combo Box
*/
public function onPageCbxChange():void
{
_pageIndex = parseInt(cbxPage.selectedLabel)-1;
onPageChanged();
}
/**
* Default handler for the Page Change Event
*/
public function onPageChanged():void
{
if(cbxPage && (cbxPage.selectedIndex != (_pageIndex)))
{
cbxPage.selectedIndex=_pageIndex;
}
if(dispatchEvents)
dispatchEvent(new ExtendedFilterPageSortChangeEvent(ExtendedFilterPageSortChangeEvent.PAGE_CHANGE));
}
public function onCreationComplete(event:Event):void
{
if(nestedGrid.enableToolbarActions){
_bindingOwner=this;
}
}
/**
* Sets the page index to 1(0), dispatches the reset event.
*/
public function reset():void{
_pageIndex=0;
cbxPage.selectedIndex=0;
dispatchEvent(new Event("reset", true));
}
[Bindable("pageChange")]
[Bindable("reset")]
[Bindable("pageIndexChanged")]
public function get pageStart():int
{
return _totalRecords==0?0:((_pageIndex)*_pageSize)+1;
}
[Bindable("pageChange")]
[Bindable("reset")]
[Bindable("pageIndexChanged")]
public function get pageEnd():int
{
var val:int= (_pageIndex+1)*_pageSize;
return (val>_totalRecords)?_totalRecords:val;
}
[Bindable("pageChange")]
[Bindable("reset")]
[Bindable("pageIndexChanged")] public function get pageIndex():int
{
return _pageIndex;
}
public function set pageIndex(val:int):void
{
if(_pageIndex != val){
_pageIndex = val;
onPageChanged();
dispatchEvent(new Event("pageIndexChanged"));
}
}
[Bindable("pageChange")]
[Bindable("reset")]
[Bindable("pageIndexChanged")]
public function get pageCount():int
{
return pageSize>0?Math.ceil(totalRecords/pageSize):0;
}
public function set totalRecords(val:int):void
{
_totalRecords = val;
var pages:ArrayCollection=new ArrayCollection();
for(var i:int=1;i<=pageCount;i++){
pages.addItem(i);
}
_pages=pages;
pageIndex=0;
dispatchEvent(new Event("reset"));
}
[Bindable(public function get totalRecords():int
{
return _totalRecords;
}
public function set pageSize(val:int):void
{
_pageSize = val;
}
public function get pageSize():int
{
return _pageSize;
}
[Inspectable("bottomLeft", type="List", enumeration="bottomLeft,bottomRight,bottomMiddle" )]
public function set pagerPosition(val:String):void
{
_pagerPosition= val;
}
public function get pagerPosition():String
{
return _pagerPosition;
}
public function set level(val:FlexDataGridColumnLevel):void
{
_level = val;
if(val)
_levelDepth=val.nestDepth
}
[Bindable(public function get level():FlexDataGridColumnLevel
{
return _level;
}
public function set rowInfo(val:RowInfo):void
{
_rowInfo = val;
}
[Bindable(public function get rowInfo():RowInfo
{
return _rowInfo;
}
[Bindable(public function get grid():IExtendedDataGrid
{
return _grid;
}
public function set grid(val:IExtendedDataGrid):void
{
_grid = val as IExtendedFlexDataGrid;
if(_grid)
_gridAutomationName= nestedGrid.automationName;
dispatchEvent(new Event("gridChanged"))
}
[Bindable("gridChanged")]
public function get nestedGrid():FlexDataGrid
{
return _grid as FlexDataGrid;
}
private var _dispatchEvents:Boolean=true;
public function get dispatchEvents():Boolean
{
return _dispatchEvents;
}
public function set dispatchEvents(value:Boolean):void
{
_dispatchEvents = value;
}
/**
* Default handler for the Word Export Button. Calls
* ExtendedExportController.instance().export(this.grid,ExportOptions.create(ExportOptions.DOC_EXPORT))
*/
public function onWordExport():void{
ExtendedExportController.instance().export(this.grid,ExportOptions.create(ExportOptions.DOC_EXPORT))
}
/**
* Default handler for the Word Export Button. Calls
* ExtendedExportController.instance().export(this.grid,ExportOptions.create())
*/
public function onExcelExport():void{
ExtendedExportController.instance().export(this.grid,ExportOptions.create())
}
/**
* Default handler for the Print Button. Calls
* var po:PrintOptions=PrintOptions.create();
* po.printOptionsViewrenderer = new ClassFactory(ExtendedPrintOptionsView);
* ExtendedPrintController.instance().print(this.grid,po)
*/
public function onPrint():void{
var po:PrintOptions=PrintOptions.create();
po.printOptionsViewrenderer = new ClassFactory(ExtendedPrintOptionsView);
ExtendedPrintController.instance().print(this.grid,po)
}
/**
* Default handler for the Print Button. Calls
* var po:PrintOptions=PrintOptions.create(true);
* po.printOptionsViewrenderer = new ClassFactory(ExtendedPrintOptionsView);
* ExtendedPrintController.instance().print(this.grid,po)
*/
public function onPdf():void{
var po:PrintOptions=PrintOptions.create(true);
po.printOptionsViewrenderer = new ClassFactory(ExtendedPrintOptionsView);
po.showWarningMessage=false;
ExtendedPrintController.instance().print(this.grid,po)
}
/**
* Default handler for the Clear Filter Button.
* Calls grid.clearFilter()
*/
public function onClearFilter():void{
this.grid.clearFilter()
}
/**
* Default handler for the Process Filter Button.
* Calls grid.processFilter()
*/
public function onProcessFilter():void{
this.grid.processFilter();
}
/**
* Default handler for the Show Hide Filter Button.
* Calls this.grid.filterVisible=!this.grid.filterVisible;nestedGrid.placeSections()
*/
public function onShowHideFilter():void{
this.grid.filterVisible=!this.grid.filterVisible;nestedGrid.placeSections()
}
/**
* Default handler for the Show Hide Filter Button.
* Calls this.grid.filterVisible=!this.grid.filterVisible;nestedGrid.placeSections()
*/
public function onShowHideFooter():void{
this.grid.footerVisible=!this.grid.footerVisible;nestedGrid.placeSections()
}
/**
* Default handler for the Settings Popup
* Calls var popup:SaveSettingsPopup=new SaveSettingsPopup();UIUtils.addPopUp(popup,grid as DisplayObject);popup.grid=grid;
*/
public function onShowSettingsPopup():void{
var popup:SettingsPopup=new SettingsPopup();UIUtils.addPopUp(popup,grid as DisplayObject);popup.grid=grid;
}
/**
* Default handler for the Save Settings Popup
* Calls var popup:SaveSettingsPopup=new SaveSettingsPopup();UIUtils.addPopUp(popup,grid as DisplayObject);popup.grid=grid;
*/
public function onSaveSettingsPopup():void{
var popup:SaveSettingsPopup=new SaveSettingsPopup();UIUtils.addPopUp(popup,grid as DisplayObject);popup.grid=grid;
}
override public function set width(val:Number):void{
super.width=val;
}
public override function setActualSize(w:Number, h:Number):void{
super.setActualSize(w,h);
}
[Bindable(protected var _toolbarActions:ArrayCollection=new ArrayCollection();
public function initializePager():void{
}
protected function createToolbarActions():void
{
_toolbarActions=new ArrayCollection(nestedGrid.toolbarActions.source);
_toolbarActions.filterFunction=toolbarActionFilterFunction;
_toolbarActions.refresh();
}
protected function onToolbarActionsChanged(event:Event):void
{
createToolbarActions();
}
protected function onGridSelectionChange(event:FlexDataGridEvent):void
{
_bindingTrigger=false;
_bindingTrigger=true;
}
private function toolbarActionFilterFunction(item:ToolbarAction):Boolean{
return item.level==this.level.nestDepth || item.level==-1;
}
import mx.events.FlexEvent;
protected function onToolbarButtonClick(event:MouseEvent):void
{
var action:ToolbarAction=_toolbarActions[event.currentTarget.repeaterIndex];
nestedGrid.runToolbarAction(action,event.currentTarget,this);
}
protected function onToolbarbuttonCreationComplete(event:FlexEvent):void
{
var img:Object=event.target as Object;
if(_toolbarActions.length>img.repeaterIndex){
var iconUrl:String=_toolbarActions[img.repeaterIndex].iconUrl;
if(!img.enabled && _toolbarActions[img.repeaterIndex].disabledIconUrl){
iconUrl=_toolbarActions[img.repeaterIndex].disabledIconUrl;
}
if(iconUrl==ToolbarAction.DEFAULT_ICON){
img.source=_toolbarActionIcon;
}else{
img.load(iconUrl);
}
}
}
[Embed('/../assets/images/customAction.png')]
private static var _toolbarActionIcon:Class;
[Bindable(private var _bindingTrigger:Boolean=true;
[Bindable(private var _bindingOwner:Object;
[Bindable(private var _levelDepth:int;
]]>
</mx:Script>
<mx:Label text="Items {pageStart} to {pageEnd} of {totalRecords}. Page {totalRecords==0?0:pageIndex+1} of {pageCount}" height="20" baseline="-2" />
<mx:Label text="|" width="10"/>
<mx:ComboBox id="cbxPage" automationName="{_gridAutomationName}_{_gridAutomationName}_cbxPage" dataProvider="{_pages}" change="onPageCbxChange()" height="15" width="55"/>
</mx:HBox>