<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009" creationComplete="vbox1_creationCompleteHandler(event)"
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.*"
>
<fx:Script>
<![CDATA[
import com.flexicious.example.model.billing.LineItem;
import com.flexicious.example.serviceproxies.BusinessService;
import com.flexicious.example.utils.ExampleUtils;
import com.flexicious.example.view.support.ActionMenu;
import com.flexicious.nestedtreedatagrid.events.FlexDataGridEvent;
import com.flexicious.nestedtreedatagrid.interfaces.IFlexDataGridCell;
import com.flexicious.nestedtreedatagrid.interfaces.IFlexDataGridDataCell;
import com.flexicious.nestedtreedatagrid.valueobjects.ComponentInfo;
import com.flexicious.nestedtreedatagrid.valueobjects.RowPositionInfo;
import com.flexicious.utils.UIUtils;
import flash.utils.describeType;
import flash.utils.getQualifiedClassName;
import flashx.textLayout.container.ScrollPolicy;
import mock.FlexiciousMockGenerator;
import mx.collections.ArrayCollection;
import mx.containers.HBox;
import mx.controls.Alert;
import mx.controls.Image;
import mx.core.DragSource;
import mx.core.EventPriority;
import mx.core.IUIComponent;
import mx.core.UIComponent;
import mx.events.CloseEvent;
import mx.events.DragEvent;
import mx.events.FlexEvent;
import mx.managers.DragManager;
import mx.rpc.AsyncToken;
import mx.rpc.events.ResultEvent;
import mx.utils.ObjectUtil;
import pdf.AlivePdfGenerator;
protected function vbox1_creationCompleteHandler(event:FlexEvent):void
{
BusinessService.getInstance().getDeepOrgList(function(evt:ResultEvent,token:AsyncToken):void{grid.dataProvider=evt.result})
}
private function isDraggable(cell:IFlexDataGridDataCell):Boolean{
return true;
}
private function isDroppable(target:IFlexDataGridDataCell):Boolean{
return target&&grid.dragColumn&&(grid.dragColumn.level==target.level);
}
private function onDragComplete(target:IFlexDataGridDataCell):void{
var dragItem:Object=grid.dragRowData; var dropItem:Object=target.rowInfo.data; var dragCol:FlexDataGridColumn=grid.dragColumn; UIUtils.showConfirm("Are you sure you wish to move Item : " + dragItem.id
+ " next to " + dropItem.id +"?",
function (comp:UIComponent,evt:CloseEvent):void{
if(evt.detail==Alert.YES){ var destArr:ArrayCollection=grid.dataProvider as ArrayCollection ;
var srcArr:ArrayCollection=grid.dataProvider as ArrayCollection;
if(dragCol.level.nestDepth>1){
destArr=dropItem.parent.children as ArrayCollection;
srcArr=dragItem.parent.children as ArrayCollection;
dragItem.parent=dropItem.parent; }else{
}
srcArr.removeItemAt(srcArr.getItemIndex( dragItem)); destArr.addItemAt(dragItem,destArr.getItemIndex(dropItem)+1); grid.rebuild(); }
},this
);
}
]]>
</fx:Script>
<fx:Declarations>
</fx:Declarations>
<nestedtreedatagrid:FlexDataGrid dragAvailableFunction="isDraggable"
dropAcceptRejectFunction="isDroppable"
dragDropCompleteFunction="onDragComplete"
id="grid" width="100%" enablePrint="true" height="100%"
enablePreferencePersistence="true" enableDrillDown="true"
enableExport="true" enableCopy="true"
pdfBytesReady="new AlivePdfGenerator().generate(event.target as FlexDataGrid ,event.printOptions)"
preferencePersistenceKey="nesteddata"
enableDrag="true"
enableDrop="true"
>
<nestedtreedatagrid:columnLevel >
<nestedtreedatagrid:FlexDataGridColumnLevel enableFilters="true" enablePaging="true"
pageSize="20" childrenField="deals" enableFooters="true" selectedKeyField="id"
>
<nestedtreedatagrid:columns>
<nestedtreedatagrid:FlexDataGridCheckBoxColumn />
<nestedtreedatagrid:FlexDataGridColumn sortable="false" enableCellClickRowSelect="false" columnWidthMode="fitToContent"
selectable="true" dataField="id" headerText="ID" filterControl="TextInput"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" truncateToFit="true" enableCellClickRowSelect="false"
selectable="true" dataField="legalName" headerText="Legal Name" width="150" columnWidthMode="fixed"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="headquarterAddress.line1" headerText="Address Line 1" footerLabel="Count:" footerOperation="count"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="headquarterAddress.line2" headerText="Address Line 2"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="headquarterAddress.city.name" headerText="City" filterControl="MultiSelectComboBox" filterComboBoxBuildFromGrid="true" filterComboBoxWidth="150"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="headquarterAddress.state.name" headerText="State" filterControl="MultiSelectComboBox" filterComboBoxBuildFromGrid="true" filterComboBoxWidth="150"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="headquarterAddress.country.name" headerText="Country" filterControl="MultiSelectComboBox" filterComboBoxBuildFromGrid="true" filterComboBoxWidth="150"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="annualRevenue" headerText="Annual Revenue" columnWidthMode="fitToContent"
textAlign="right" headerAlign="center" footerLabel="Avg:" footerOperation="average" footerAlign="center" columnWidthModeFitToContentExcludeHeader="true"
footerOperationPrecision="2" footerFormatter="{ExampleUtils.globalCurrencyFormatter}" labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="numEmployees" headerText="Num Employees" columnWidthMode="fitToContent" columnWidthModeFitToContentExcludeHeader="true"
textAlign="right" footerLabel="Avg:" footerOperation="average" footerOperationPrecision="2"
footerFormatter="{ExampleUtils.globalCurrencyFormatter}" labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="earningsPerShare" headerText="EPS" columnWidthMode="fitToContent" columnWidthModeFitToContentExcludeHeader="true"
textAlign="right" footerLabel="Avg:" footerOperation="average" footerFormatter="{ExampleUtils.globalCurrencyFormatter}" labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="lastStockPrice" headerText="Stock Price" columnWidthMode="fitToContent" columnWidthModeFitToContentExcludeHeader="true"
textAlign="right" footerLabel="Avg:" footerOperation="average" footerOperationPrecision="2"
footerFormatter="{ExampleUtils.globalCurrencyFormatter}" labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
</nestedtreedatagrid:columns>
<nestedtreedatagrid:nextLevel>
<nestedtreedatagrid:FlexDataGridColumnLevel childrenField="invoices" enableFooters="true" selectedKeyField="id"
>
<nestedtreedatagrid:columns>
<nestedtreedatagrid:FlexDataGridCheckBoxColumn />
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="dealDescription" headerText="Deal Description"
footerLabel="Count:" footerOperation="count" footerAlign="center"
/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="dealAmount" headerText="Deal Amount" textAlign="right"
footerLabel="Total:" footerOperation="sum" footerAlign="right"
footerOperationPrecision="2" footerFormatter="{ExampleUtils.globalCurrencyFormatter}"
labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn dataField="dealDate" headerText="Deal Date" labelFunction="UIUtils.dataGridFormatDateLabelFunction"/>
</nestedtreedatagrid:columns>
<nestedtreedatagrid:nextLevel>
<nestedtreedatagrid:FlexDataGridColumnLevel childrenField="lineItems" enableFooters="true" enablePaging="true" pageSize="3"
selectedKeyField="id">
<nestedtreedatagrid:columns>
<nestedtreedatagrid:FlexDataGridCheckBoxColumn />
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="id" headerText="Invoice Number"
footerLabel="Count:" footerOperation="count" footerAlign="center"
/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="invoiceAmount" headerText="Invoice Amount" textAlign="right"
footerLabel="Total:" footerOperation="sum" footerAlign="right"
footerOperationPrecision="2" footerFormatter="{ExampleUtils.globalCurrencyFormatter}"
labelFunction="UIUtils.dataGridFormatCurrencyLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="invoiceStatus.name" headerText="Invoice Status" />
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="invoiceDate" headerText="Invoice Date"
labelFunction="UIUtils.dataGridFormatDateLabelFunction"/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="dueDate" headerText="Due Date"
labelFunction="UIUtils.dataGridFormatDateLabelFunction"/>
</nestedtreedatagrid:columns>
<nestedtreedatagrid:nextLevel>
<nestedtreedatagrid:FlexDataGridColumnLevel enableFooters="true" selectedKeyField="id">
<nestedtreedatagrid:columns>
<nestedtreedatagrid:FlexDataGridCheckBoxColumn />
<nestedtreedatagrid:FlexDataGridColumn sortable="false" dataField="lineItemDescription" headerText="Line Item Description"
footerLabel="Count:" footerOperation="count" footerAlign="center"
/>
<nestedtreedatagrid:FlexDataGridColumn sortable="false" 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 >