<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%"
xmlns:nestedtreedatagrid="com.flexicious.nestedtreedatagrid.*" xmlns:billing="com.flexicious.example.model.billing.*"
xmlns:controls="com.flexicious.controls.*" xmlns:mate="http://mate.asfusion.com/" creationComplete="vbox1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import com.flexicious.example.serviceproxies.BusinessService;
import com.flexicious.example.utils.ExampleUtils;
import com.flexicious.nestedtreedatagrid.pager.IExtendedPager;
import com.flexicious.nestedtreedatagrid.valueobjects.ToolbarAction;
import com.flexicious.utils.UIUtils;
import mock.FlexiciousMockGenerator;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.events.FlexEvent;
import mx.events.ListEvent;
import mx.rpc.AsyncToken;
import mx.rpc.events.ResultEvent;
import pdf.AlivePdfGenerator;
protected function vbox1_creationCompleteHandler(event:FlexEvent):void
{
grid.toolbarActions.addItem(new ToolbarAction("Edit",-1,"","Edit Record","assets/images/edit.png",true,false));
grid.toolbarActions.addItem(new ToolbarAction("Delete",-1,"","Delete Record","assets/images/delete.png",false,true));
BusinessService.getInstance().getDeepOrgList(function(evt:ResultEvent,token:AsyncToken):void{grid.dataProvider=evt.result})
}
private function isValidToolbarAction(action:ToolbarAction,currentTarget:Object,extendedPager:IExtendedPager):Boolean{
return extendedPager.level.selectedKeys.length==1;
}
private function onExecuteToolbarAction(action:ToolbarAction,currentTarget:Object,extendedPager:IExtendedPager):void{
if(action.code=="Edit")
Alert.show("Launch Edit Window: " + extendedPager.level.levelName + " with id " + extendedPager.level.selectedKeys[0] )
else if(action.code=="Delete")
Alert.show("Are you sure you wish to delete this record?","Confirm Delete",Alert.OK|Alert.CANCEL,this,
function(event:CloseEvent):void
{
if(event.detail==Alert.OK){
Alert.show("Trigger delete for: " + extendedPager.level.levelName + " with id " + extendedPager.level.selectedKeys[0] )
}
}
)
else
Alert.show("Invalid action!")
}
]]>
</fx:Script>
<fx:Declarations>
</fx:Declarations>
<nestedtreedatagrid:FlexDataGrid id="grid" width="100%" height="100%" enablePrint="true"
enablePreferencePersistence="true" enableDrillDown="true"
enableExport="true" enableCopy="true" enableToolbarActions="true"
toolbarActionExecutedFunction="onExecuteToolbarAction"
toolbarActionValidFunction="isValidToolbarAction"
pdfBytesReady="new AlivePdfGenerator().generate(event.target as FlexDataGrid ,event.printOptions)"
preferencePersistenceKey="nestedToolbarActions">
<nestedtreedatagrid:columnLevel >
<nestedtreedatagrid:FlexDataGridColumnLevel levelName="levelOrganizations" enableFilters="true" enablePaging="true"
pageSize="20" childrenField="deals" enableFooters="true" selectedKeyField="id">
<nestedtreedatagrid:columns>
<nestedtreedatagrid:FlexDataGridCheckBoxColumn />
<nestedtreedatagrid:FlexDataGridColumn enableCellClickRowSelect="false" columnWidthMode="fitToContent"
selectable="true" dataField="id" headerText="ID" filterControl="TextInput"/>
<nestedtreedatagrid:FlexDataGridColumn truncateToFit="true" enableCellClickRowSelect="false" columnWidthMode="fitToContent"
selectable="true" dataField="legalName" headerText="Legal Name"/>
<nestedtreedatagrid:FlexDataGridColumn dataField="annualRevenue" headerText="Annual Revenue" columnWidthMode="fitToContent"
textAlign="right" headerAlign="center" footerLabel="Avg:" footerOperation="average" footerAlign="center" footerOperationPrecision="2" footerFormatter="{ExampleUtils.globalCurrencyFormatter}" labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn dataField="numEmployees" headerText="Num Employees" columnWidthMode="fitToContent"
textAlign="right" footerLabel="Avg:" footerOperation="average" footerOperationPrecision="2" footerFormatter="{ExampleUtils.globalCurrencyFormatter}" labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn dataField="earningsPerShare" headerText="EPS" columnWidthMode="fitToContent"
textAlign="right" footerLabel="Avg:" footerOperation="average" footerFormatter="{ExampleUtils.globalCurrencyFormatter}" labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn dataField="lastStockPrice" headerText="Stock Price" columnWidthMode="fitToContent"
textAlign="right" footerLabel="Avg:" footerOperation="average" footerOperationPrecision="2" footerFormatter="{ExampleUtils.globalCurrencyFormatter}" labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
</nestedtreedatagrid:columns>
<nestedtreedatagrid:nextLevel>
<nestedtreedatagrid:FlexDataGridColumnLevel levelName="levelDeals" childrenField="invoices" enableFooters="true" selectedKeyField="id" forcePagerRow="true"
>
<nestedtreedatagrid:columns>
<nestedtreedatagrid:FlexDataGridCheckBoxColumn />
<nestedtreedatagrid:FlexDataGridColumn dataField="dealDescription" headerText="Deal Description"
footerLabel="Count:" footerOperation="count" footerAlign="center"
/>
<nestedtreedatagrid:FlexDataGridColumn dataField="dealAmount" headerText="Deal Amount" textAlign="right"
footerLabel="Total:" footerOperation="sum" footerAlign="right"
footerOperationPrecision="2" footerFormatter="{ExampleUtils.globalCurrencyFormatter}" labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn itemEditor="{new ClassFactory(mx.controls.DateField)}"
editorDataField="selectedDate" dataField="dealDate" headerText="Deal Date" labelFunction="UIUtils.dataGridFormatDateLabelFunction"/>
</nestedtreedatagrid:columns>
<nestedtreedatagrid:nextLevel>
<nestedtreedatagrid:FlexDataGridColumnLevel levelName="levelInvoices" childrenField="lineItems" enableFooters="true" enablePaging="true" pageSize="5"
selectedKeyField="id" pagerDrawTopBorder="true" pagerHorizontalGridLines="false">
<nestedtreedatagrid:columns>
<nestedtreedatagrid:FlexDataGridCheckBoxColumn />
<nestedtreedatagrid:FlexDataGridColumn dataField="id" headerText="Invoice Number"
footerLabel="Count:" footerOperation="count" footerAlign="center"
/>
<nestedtreedatagrid:FlexDataGridColumn dataField="invoiceAmount" headerText="Invoice Amount" textAlign="right"
footerLabel="Total:" footerOperation="sum" footerAlign="right"
footerOperationPrecision="2" footerFormatter="{ExampleUtils.globalCurrencyFormatter}" labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn dataField="invoiceStatus.name" headerText="Invoice Status" />
<nestedtreedatagrid:FlexDataGridColumn itemEditor="{new ClassFactory(mx.controls.DateField)}"
editorDataField="selectedDate" dataField="invoiceDate" headerText="Invoice Date"
labelFunction="UIUtils.dataGridFormatDateLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn itemEditor="{new ClassFactory(mx.controls.DateField)}"
editorDataField="selectedDate" dataField="dueDate" headerText="Due Date"
labelFunction="UIUtils.dataGridFormatDateLabelFunction"/>
</nestedtreedatagrid:columns>
<nestedtreedatagrid:nextLevel>
<nestedtreedatagrid:FlexDataGridColumnLevel levelName="levelLineItems" enableFooters="true" selectedKeyField="id" forcePagerRow="true"
>
<nestedtreedatagrid:columns>
<nestedtreedatagrid:FlexDataGridCheckBoxColumn />
<nestedtreedatagrid:FlexDataGridColumn dataField="lineItemDescription" headerText="Line Item Description"
footerLabel="Count:" footerOperation="count" footerAlign="center"
/>
<nestedtreedatagrid:FlexDataGridColumn dataField="lineItemAmount" headerText="Line Item Amount" textAlign="right"
footerLabel="Total:" footerOperation="sum" footerAlign="right"
footerOperationPrecision="2" footerFormatter="{ExampleUtils.globalCurrencyFormatter}" labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
</nestedtreedatagrid:columns>
</nestedtreedatagrid:FlexDataGridColumnLevel>
</nestedtreedatagrid:nextLevel>
</nestedtreedatagrid:FlexDataGridColumnLevel>
</nestedtreedatagrid:nextLevel>
</nestedtreedatagrid:FlexDataGridColumnLevel>
</nestedtreedatagrid:nextLevel>
</nestedtreedatagrid:FlexDataGridColumnLevel>
</nestedtreedatagrid:columnLevel>
</nestedtreedatagrid:FlexDataGrid>
</mx:VBox >