<?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="1" 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: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();
/**
* Default handler for the First Page Navigation Button
*/
public function onImgFirstClick():void
{
if(_pageIndex != 0)
{
_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
{
onPageChanged();
}
/**
* Default handler for the Page Change Event
*/
public function onPageChanged():void
{
dispatchEvent(new ExtendedFilterPageSortChangeEvent(ExtendedFilterPageSortChangeEvent.PAGE_CHANGE));
}
public function onCreationComplete(event:Event):void
{
if(nestedGrid.enableToolbarActions){
_bindingOwner=this;
nestedGrid.toolbarActions.addEventListener(CollectionEvent.COLLECTION_CHANGE,onToolbarActionsChanged);
nestedGrid.addEventListener(FlexDataGridEvent.CHANGE,onGridSelectionChange);
createToolbarActions();
}
}
/**
* Sets the page index to 1(0), dispatches the reset event.
*/
public function reset():void{
_pageIndex=0;
dispatchEvent(new Event("reset", true));
}
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("pageChange")]
[Bindable("reset")]
public function get pageStart():int
{
return _totalRecords==0?0:((_pageIndex)*_pageSize)+1;
}
[Bindable("pageChange")]
[Bindable("reset")]
public function get pageEnd():int
{
var val:int= (_pageIndex+1)*_pageSize;
return (val>_totalRecords)?_totalRecords:val;
}
[Bindable("pageChange")]
[Bindable("reset")]
public function get pageIndex():int
{
return _pageIndex;
}
public function set pageIndex(val:int):void
{
_pageIndex = val;
onPageChanged();
}
[Bindable("pageChange")]
[Bindable("reset")]
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;
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;
dispatchEvent(new Event("gridChanged"))
}
[Bindable("gridChanged")]
public function get nestedGrid():FlexDataGrid
{
return _grid as FlexDataGrid;
}
/**
* 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);
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:ImageButton=event.target as ImageButton;
var iconUrl:String=_toolbarActions[img.repeaterIndex].iconUrl;
if(iconUrl==ToolbarAction.DEFAULT_ICON){
img.source=_toolbarActionIcon;
}else{
img.load(iconUrl);
}
}
private var _dispatchEvents:Boolean=true;
public function get dispatchEvents():Boolean
{
return _dispatchEvents;
}
public function set dispatchEvents(value:Boolean):void
{
_dispatchEvents = value;
}
[Embed('/../assets/images/customAction.png')]
private static var _toolbarActionIcon:Class;
[Bindable(private var _bindingTrigger:Boolean=true;
[Bindable(private var _bindingOwner:StyledPager;
[Bindable(private var _levelDepth:int;
]]>
</mx:Script>
<mx:HBox id="btns" verticalAlign="middle" height="100%" horizontalGap="2"
paddingLeft="0" paddingRight="0">
<pager:ImageButton id="btnEdit" source="@Embed('/assets/images/User Edit.png')" toolTip="Edit" />
<mx:Label text="Edit" />
<mx:Spacer width="15"/>
<pager:ImageButton id="btnAdd" source="@Embed('/assets/images/User Insert.png')" toolTip="Add" />
<mx:Label text="Add" />
<mx:Spacer width="15"/>
<pager:ImageButton id="btnDelete" source="@Embed('/assets/images/User Drop.png')" toolTip="Delete" />
<mx:Label text="Delete" />
<mx:Spacer width="100%"/>
<mx:Label text="Show" />
<mx:ComboBox width="100">
<mx:dataProvider>
<mx:Array>
<mx:Object label="All"/>
</mx:Array>
</mx:dataProvider>
</mx:ComboBox>
</mx:HBox>
</mx:HBox>