<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:lo="*" layout="vertical"
  title="Test: Column Hiding" creationComplete="onCreation()" viewSourceURL="srcview/index.html">
  
  <mx:Script>
    <![CDATA[
      private static const loremIpsum:String = "Lorem ipsum dolor sit amet, consectetur adipisicing elit";
      
      [Bindable] private var rows:Array = null;
      private var colsIndex:int = 0;
      
      private function onCreation():void {
        setCols(0);
        setRows(100);
      }
      
      private function setRows(numRows:int):void {
        var newRows:Array = new Array();
        for (var rowIndex:int = 0; rowIndex < numRows; rowIndex++) {
          var newRow:Object = { id:rowIndex+1 };
          for (var colIndex:int = 0; colIndex <= 30; colIndex++)
            newRow['c'+colIndex] = newRow.id + ':' + colIndex + ' ' + loremIpsum;
          newRows.push(newRow);
        }
        rows = newRows;
      }
      
      private function setCols(index:int):void {
        colsIndex = index;
        var colWidth:int = dg.columns[0].width;
        var startIndex:int = index*10+1;
        var endIndex:int = (index+1)*10;
        for (index = startIndex ; index < endIndex+1       ; index++) dg.columns[index].visible = true;
        for (index = 1          ; index < startIndex       ; index++) dg.columns[index].visible = false;
        for (index = endIndex+1 ; index < dg.columns.length; index++) dg.columns[index].visible = false;
        trace("The AdvADG control needs to re-evaluate columnSpan properties here.");
      }
      
      // Returns 0 (ie "all") if the item is one of the groups we are showing columns for, otherwise 1.
      private function getColumnSpan(item:Object):int {
        var rowNum:int = item.id;
        return ((int(((rowNum % 15)-1)/5)) == colsIndex) ? 1 : 0;
      }
      
    ]]>
  </mx:Script>
  
  <lo:AdvDG id="dg" height="100%" width="100%" dataProvider="{rows}" variableRowHeight="true" itemRenderer="AdvDGIR">
    <lo:columns>
      <mx:AdvancedDataGridColumn id="c0" headerText="" dataField="c0" width="150" resizable="false" wordWrap="false"/>

      <mx:AdvancedDataGridColumn id="c1" dataField="c1"/>
      <mx:AdvancedDataGridColumn id="c2" dataField="c2"/>
      <mx:AdvancedDataGridColumn id="c3" dataField="c3"/>
      <mx:AdvancedDataGridColumn id="c4" dataField="c4"/>
      <mx:AdvancedDataGridColumn id="c5" dataField="c5"/>
      <mx:AdvancedDataGridColumn id="c6" dataField="c6"/>
      <mx:AdvancedDataGridColumn id="c7" dataField="c7"/>
      <mx:AdvancedDataGridColumn id="c8" dataField="c8"/>
      <mx:AdvancedDataGridColumn id="c9" dataField="c9"/>
      <mx:AdvancedDataGridColumn id="c10" dataField="c10"/>

      <mx:AdvancedDataGridColumn id="c11" dataField="c11"/>
      <mx:AdvancedDataGridColumn id="c12" dataField="c12"/>
      <mx:AdvancedDataGridColumn id="c13" dataField="c13"/>
      <mx:AdvancedDataGridColumn id="c14" dataField="c14" wordWrap="true"/>
      <mx:AdvancedDataGridColumn id="c15" dataField="c15"/>
      <mx:AdvancedDataGridColumn id="c16" dataField="c16"/>
      <mx:AdvancedDataGridColumn id="c17" dataField="c17"/>
      <mx:AdvancedDataGridColumn id="c18" dataField="c18"/>
      <mx:AdvancedDataGridColumn id="c19" dataField="c19"/>
      <mx:AdvancedDataGridColumn id="c20" dataField="c20"/>

      <mx:AdvancedDataGridColumn id="c21" dataField="c21"/>
      <mx:AdvancedDataGridColumn id="c22" dataField="c22"/>
      <mx:AdvancedDataGridColumn id="c23" dataField="c23"/>
      <mx:AdvancedDataGridColumn id="c24" dataField="c24"/>
      <mx:AdvancedDataGridColumn id="c25" dataField="c25"/>
      <mx:AdvancedDataGridColumn id="c26" dataField="c26"/>
      <mx:AdvancedDataGridColumn id="c27" dataField="c27"/>
      <mx:AdvancedDataGridColumn id="c28" dataField="c28"/>
      <mx:AdvancedDataGridColumn id="c29" dataField="c29"/>
      <mx:AdvancedDataGridColumn id="c30" dataField="c30"/>

      <mx:AdvancedDataGridColumn id="c31" dataField="c31"/>
      <mx:AdvancedDataGridColumn id="c32" dataField="c32"/>
      <mx:AdvancedDataGridColumn id="c33" dataField="c33"/>
      <mx:AdvancedDataGridColumn id="c34" dataField="c34"/>
      <mx:AdvancedDataGridColumn id="c35" dataField="c35"/>
      <mx:AdvancedDataGridColumn id="c36" dataField="c36"/>
      <mx:AdvancedDataGridColumn id="c37" dataField="c37"/>
      <mx:AdvancedDataGridColumn id="c38" dataField="c38"/>
      <mx:AdvancedDataGridColumn id="c39" dataField="c39"/>
      <mx:AdvancedDataGridColumn id="c40" dataField="c40"/>

      <mx:AdvancedDataGridColumn id="c41" dataField="c41"/>
      <mx:AdvancedDataGridColumn id="c42" dataField="c42"/>
      <mx:AdvancedDataGridColumn id="c43" dataField="c43"/>
      <mx:AdvancedDataGridColumn id="c44" dataField="c44"/>
      <mx:AdvancedDataGridColumn id="c45" dataField="c45"/>
      <mx:AdvancedDataGridColumn id="c46" dataField="c46"/>
      <mx:AdvancedDataGridColumn id="c47" dataField="c47"/>
      <mx:AdvancedDataGridColumn id="c48" dataField="c48"/>
      <mx:AdvancedDataGridColumn id="c49" dataField="c49"/>
      <mx:AdvancedDataGridColumn id="c50" dataField="c50"/>

      <mx:AdvancedDataGridColumn id="c51" dataField="c51"/>
      <mx:AdvancedDataGridColumn id="c52" dataField="c52"/>
      <mx:AdvancedDataGridColumn id="c53" dataField="c53"/>
      <mx:AdvancedDataGridColumn id="c54" dataField="c54"/>
      <mx:AdvancedDataGridColumn id="c55" dataField="c55"/>
      <mx:AdvancedDataGridColumn id="c56" dataField="c56"/>
      <mx:AdvancedDataGridColumn id="c57" dataField="c57"/>
      <mx:AdvancedDataGridColumn id="c58" dataField="c58"/>
      <mx:AdvancedDataGridColumn id="c59" dataField="c59"/>
      <mx:AdvancedDataGridColumn id="c60" dataField="c50"/>

      <mx:AdvancedDataGridColumn id="c61" dataField="c61"/>
      <mx:AdvancedDataGridColumn id="c62" dataField="c62"/>
      <mx:AdvancedDataGridColumn id="c63" dataField="c63"/>
      <mx:AdvancedDataGridColumn id="c64" dataField="c64"/>
      <mx:AdvancedDataGridColumn id="c65" dataField="c65"/>
      <mx:AdvancedDataGridColumn id="c66" dataField="c66"/>
      <mx:AdvancedDataGridColumn id="c67" dataField="c67"/>
      <mx:AdvancedDataGridColumn id="c68" dataField="c68"/>
      <mx:AdvancedDataGridColumn id="c69" dataField="c69"/>
      <mx:AdvancedDataGridColumn id="c70" dataField="c70"/>
    </lo:columns>
    <lo:rendererProviders>
      <lo:AdvDGIRP dataField="c0" columnIndex="0" columnSpanFunction="getColumnSpan" columnSpan="0"
        renderer="mx.controls.advancedDataGridClasses.AdvancedDataGridGroupItemRenderer"/>
    </lo:rendererProviders>
  </lo:AdvDG>
  <mx:HBox>
    <mx:TextInput id="rowsBox" text="100" maxChars="5"/>
    <mx:Button label="Set {rowsBox.text} rows" click="setRows(int(rowsBox.text))"/>
    <mx:ToggleButtonBar itemClick="setCols(event.index)">
      <mx:dataProvider>
        <mx:Array>
          <mx:String>1</mx:String>
          <mx:String>2</mx:String>
          <mx:String>3</mx:String>
        </mx:Array>
      </mx:dataProvider>
    </mx:ToggleButtonBar>
    <mx:Text text="{rows.length} rows"/>
  </mx:HBox>
</mx:WindowedApplication>