{ "type": "class",
  "qname": "mx.events.AdvancedDataGridEvent",
  "baseClassname": "org.apache.royale.events.Event"
  ,
    "description": "The AdvancedDataGridEvent class represents event objects that are specific to the AdvancedDataGrid control, such as the event that is dispatched when an editable grid item gets the focus.",
  "tags": [
  {  "tagName": "see",
         "values": ["mx.controls.AdvancedDataGrid", "mx.events.AdvancedDataGridEventReason"]},
      {  "tagName": "royalesuppresspublicvarwarning",
         "values": []},
      {  "tagName": "playerversion",
         "values": ["Flash 9", "AIR 1.1"]},
      {  "tagName": "productversion",
         "values": ["Royale 0.9.3"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "field",
        "qname": "ITEM_CLOSE",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The AdvancedDataGridEvent.ITEM_CLOSE event type constant indicates that a AdvancedDataGrid branch closed or collapsed.  <p>The properties of the event object for this event type have the following values. Not all properties are meaningful for all kinds of events. See the detailed property descriptions for more information.</p>  <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>bubbles</code></td><td><code>false</code></td></tr> <tr><td><code>cancelable</code></td><td><code>false</code></td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>. </td></tr> <tr><td><code>dataField</code></td><td>The name of the field or property in the data associated with the column.</td></tr> <tr><td><code>item</code></td><td>The AdvancedDataGrid item (node) that closed.</td></tr> <tr><td><code>itemRenderer</code></td> <td>The ListItemRenderer for the node that closed.</td></tr> <tr><td><code>localX</code></td><td>NaN</td></tr> <tr><td><code>multiColumnSort </code></td><td><code>false</code></td></tr> <tr><td><code>removeColumnFromSort</code></td><td><code>false</code></td></tr> <tr><td><code>rowIndex</code></td><td>-1</td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> <tr><td><code>triggerEvent</code></td> <td>If the node closed in response to a user action, identifies it as a keyboard action or a mouse action.</td></tr> <tr><td><code>type</code></td><td>AdvancedDataGridEvent.ITEM_CLOSE</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["itemClose"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "ITEM_EDIT_BEGIN",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The AdvancedDataGridEvent.ITEM_EDIT_BEGIN constant defines the value of the <code>type</code> property of the event object for a <code>itemEditBegin</code> event, which indicates that an item is ready to be edited.  <p>The default listener for this event performs the following actions:</p>  <ul> <li>Creates an item editor object by using a call to the <code>createItemEditor()</code> method.</li> <li>Copies the <code>data</code> property from the item to the editor. By default, the item editor object is an instance of the TextInput control. You use the <code>itemEditor</code> property of the list control to specify a custom item editor class.</li>  <li>Sets the <code>itemEditorInstance</code> property of the list control to reference the item editor instance.</li> </ul>  <p>You can write an event listener for this event to modify the data passed to the item editor. For example, you might modify the data, its format, or other information used by the item editor.</p>  <p>You can also create an event listener to specify the item editor used to edit the item. For example, you might have two different item editors. Within the event listener, you can examine the data to be edited or other information, and open the appropriate item editor by doing the following:</p>  <ol> <li>Call <code>preventDefault()</code> to stop Flex from calling the <code>createItemEditor()</code> method as part of the default event listener.</li> <li>Set the <code>itemEditor</code> property to the appropriate editor.</li> <li>Call the <code>createItemEditor()</code> method.</li> </ol>  <p>The properties of the event object have the following values:</p>  <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>bubbles</code></td><td><code>false</code></td></tr> <tr><td><code>cancelable</code></td><td><code>true</code></td></tr> <tr><td><code>columnIndex</code></td><td> The zero-based index of the item's column in the AdvancedDataGrid object's <code>columns</code> array.</td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>. </td></tr> <tr><td><code>dataField</code></td><td>null</td></tr> <tr><td><code>item</code></td><td>The AdvancedDataGrid item (node).</td></tr> <tr><td><code>itemRenderer</code></td><td>The item renderer for the item that is being edited.</td></tr> <tr><td><code>localX</code></td><td>NaN</td></tr> <tr><td><code>multiColumnSort </code></td><td><code>false</code></td></tr> <tr><td><code>reason</code></td><td>null</td></tr> <tr><td><code>removeColumnFromSort</code></td><td><code>false</code></td></tr> <tr><td><code>rowIndex</code></td><td>The zero-based index of the item in the data provider.</td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> <tr><td><code>triggerEvent</code></td> <td>If the node closed in response to a user action, identifies it as a keyboard action or a mouse action.</td></tr> <tr><td><code>type</code></td><td>AdvancedDataGridEvent.ITEM_EDIT_BEGIN</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["itemEditBegin"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "ITEM_EDIT_END",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The AdvancedDataGridEvent.ITEM_EDIT_END constant defines the value of the <code>type</code> property of the event object for a <code>itemEditEnd</code> event, which indicates that an edit session is ending.  <p>The list components have a default handler for this event that copies the data from the item editor to the data provider of the list control. The default event listener performs the following actions:</p>  <ul> <li>Uses the <code>editorDataField</code> property of the AdvancedDataGridColumn associated with this event to determine the property of the item editor containing the new data and updates the data provider item with that new data. Since the default item editor is the TextInput control, the default value of the <code>editorDataField</code> property is <code>&quot;text&quot;</code>, to specify that the <code>text</code> property of the TextInput contains the new item data.</li>  <li>Calls the <code>destroyItemEditor()</code> method to close the item editor.</li> </ul>  <p>You typically write an event listener for this event to perform the following actions:</p> <ul> <li>In your event listener, you can modify the data returned by the editor to the list component. For example, you can reformat the data before returning it to the list control. By default, an item editor can only return a single value. You must write an event listener for the <code>itemEditEnd</code> event if you want to return multiple values.</li>  <li>In your event listener, you can examine the data entered into the item editor. If the data is incorrect, you can call the <code>preventDefault()</code> method to stop Flex from passing the new data back to the list control and from closing the editor. </li> </ul>  <p>The properties of the event object have the following values:</p> <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>bubbles</code></td><td><code>false</code></td></tr> <tr><td><code>cancelable</code></td><td><code>true</code></td></tr> <tr><td><code>columnIndex</code></td><td> The zero-based index of the item's column in the AdvancedDataGrid object's <code>columns</code> array.</td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>. </td></tr> <tr><td><code>dataField</code></td><td>The name of the field or property in the data associated with the item's column.</td></tr> <tr><td><code>item</code></td><td>The AdvancedDataGrid item (node) that closed.</td></tr> <tr><td><code>itemRenderer</code></td><td>The item renderer for the item that is being edited.</td></tr> <tr><td><code>localX</code></td><td>NaN</td></tr> <tr><td><code>multiColumnSort </code></td><td><code>false</code></td></tr> <tr><td><code>reason</code></td><td>A constant defining the reason for the event. The value must be a member of the <code>AdvancedDataGridEventReason</code> class.</td></tr> <tr><td><code>removeColumnFromSort</code></td><td><code>false</code></td></tr> <tr><td><code>rowIndex</code></td><td>The zero-based index of the item in the data provider.</td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> <tr><td><code>triggerEvent</code></td> <td>If the node closed in response to a user action, identifies it as a keyboard action or a mouse action.</td></tr> <tr><td><code>type</code></td><td>AdvancedDataGridEvent.ITEM_EDIT_END</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["itemEditEnd"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "ITEM_FOCUS_IN",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The AdvancedDataGridEvent.ITEM_FOCUS_IN constant defines the value of the <code>type</code> property of the event object for a <code>itemFocusIn</code> event, which indicates that an item has received the focus.  <p>The properties of the event object have the following values:</p> <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>bubbles</code></td><td><code>false</code></td></tr> <tr><td><code>cancelable</code></td><td><code>false</code></td></tr> <tr><td><code>columnIndex</code></td><td> The zero-based index of the item's column in the AdvancedDataGrid object's <code>columns</code> array.</td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>. </td></tr> <tr><td><code>dataField</code></td><td>null</td></tr> <tr><td><code>item</code></td><td>The AdvancedDataGrid item (node) that closed.</td></tr> <tr><td><code>itemRenderer</code></td><td>The item editor instance for the item that is being edited.</td></tr> <tr><td><code>localX</code></td><td>NaN</td></tr> <tr><td><code>multiColumnSort </code></td><td><code>false</code></td></tr> <tr><td><code>reason</code></td><td>null</td></tr> <tr><td><code>removeColumnFromSort</code></td><td><code>false</code></td></tr> <tr><td><code>rowIndex</code></td><td>The zero-based index of the item in the data provider.</td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> <tr><td><code>triggerEvent</code></td> <td>If the node closed in response to a user action, identifies it as a keyboard action or a mouse action.</td></tr> <tr><td><code>type</code></td><td>AdvancedDataGridEvent.ITEM_FOCUS_IN</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["itemFocusIn"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "ITEM_FOCUS_OUT",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The AdvancedDataGridEvent.ITEM_FOCUS_OUT constant defines the value of the <code>type</code> property of the event object for a <code>itemFocusOut</code> event, which indicates that an item has lost the focus.  <p>The properties of the event object have the following values:</p> <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>bubbles</code></td><td><code>false</code></td></tr> <tr><td><code>cancelable</code></td><td><code>false</code></td></tr> <tr><td><code>columnIndex</code></td><td> The zero-based index of the item's column in the AdvancedDataGrid object's <code>columns</code> array.</td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>. </td></tr> <tr><td><code>dataField</code></td><td>null</td></tr> <tr><td><code>item</code></td><td>The AdvancedDataGrid item (node) that closed.</td></tr> <tr><td><code>itemRenderer</code></td><td>The item editor instance for the item that is being edited.</td></tr> <tr><td><code>localX</code></td><td>NaN</td></tr> <tr><td><code>multiColumnSort </code></td><td><code>false</code></td></tr> <tr><td><code>reason</code></td><td>null</td></tr> <tr><td><code>removeColumnFromSort</code></td><td><code>false</code></td></tr> <tr><td><code>rowIndex</code></td><td>The zero-based index of the item in the data provider.</td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> <tr><td><code>triggerEvent</code></td> <td>If the node closed in response to a user action, identifies it as a keyboard action or a mouse action.</td></tr> <tr><td><code>type</code></td><td>AdvancedDataGridEvent.ITEM_FOCUS_OUT</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["itemFocusOut"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "ITEM_EDIT_BEGINNING",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The AdvancedDataGridEvent.ITEM__EDIT_BEGINNING constant defines the value of the <code>type</code> property of the event object for a <code>itemEditBeginning</code> event, which indicates that the user has prepared to edit an item, for example, by releasing the mouse button over the item.  <p>The default listener for this event sets the <code>AdvancedDataGrid.editedItemPosition</code> property to the item that has focus, which starts the item editing session.</p>  <p>You typically write your own event listener for this event to disallow editing of a specific item or items. Calling the <code>preventDefault()</code> method from within your own event listener for this event prevents the default listener from executing.</p>  <p>The properties of the event object have the following values:</p> <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>bubbles</code></td><td><code>false</code></td></tr> <tr><td><code>cancelable</code></td><td><code>true</code></td></tr> <tr><td><code>columnIndex</code></td><td> The zero-based index of the item's column in the AdvancedDataGrid object's <code>columns</code> array.</td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>. </td></tr> <tr><td><code>dataField</code></td><td>The name of the field or property in the data associated with the item's column.</td></tr> <tr><td><code>item</code></td><td>The AdvancedDataGrid item (node) that closed.</td></tr> <tr><td><code>itemRenderer</code></td><td>The item renderer for the item that will be edited. This property is null if this event is generated by keyboard, as the item to be edited may be off-screen.</td></tr> <tr><td><code>localX</code></td><td>NaN</td></tr> <tr><td><code>multiColumnSort </code></td><td><code>false</code></td></tr> <tr><td><code>reason</code></td><td>null</td></tr> <tr><td><code>removeColumnFromSort</code></td><td><code>false</code></td></tr> <tr><td><code>rowIndex</code></td><td>The zero-based index of the item in the data provider.</td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> <tr><td><code>triggerEvent</code></td> <td>If the node closed in response to a user action, identifies it as a keyboard action or a mouse action.</td></tr> <tr><td><code>type</code></td><td>AdvancedDataGridEvent.ITEM_EDIT_BEGINNING</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["itemEditBeginning"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "ITEM_OPEN",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The AdvancedDataGridEvent.ITEM_OPEN event type constant indicates that an AdvancedDataGrid branch opened or expanded.  <p>The properties of the event object for this event type have the following values. Not all properties are meaningful for all kinds of events. See the detailed property descriptions for more information.</p>  <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>bubbles</code></td><td><code>false</code></td></tr> <tr><td><code>cancelable</code></td><td><code>false</code></td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>. </td></tr> <tr><td><code>item</code></td><td>The AdvancedDataGrid node that opened.</td></tr> <tr><td><code>itemRenderer</code></td> <td>The ListItemRenderer for the item (node) that opened.</td></tr> <tr><td><code>localX</code></td><td>NaN</td></tr> <tr><td><code>multiColumnSort </code></td><td><code>false</code></td></tr> <tr><td><code>removeColumnFromSort</code></td><td><code>false</code></td></tr> <tr><td><code>rowIndex</code></td><td>-1</td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> <tr><td><code>triggerEvent</code></td> <td>If the item (node) opened in response to a user action, identifies it as a keyboard action or a mouse action.</td></tr> <tr><td><code>type</code></td><td>AdvancedDataGridEvent.ITEM_OPEN</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["itemOpen"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "ITEM_OPENING",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The AdvancedDataGridEvent.ITEM_OPENING event type constant is dispatched immediately before a AdvancedDataGrid opens or closes.  <p>The properties of the event object for this event type have the following values. Not all properties are meaningful for all kinds of events. See the detailed property descriptions for more information.</p>  <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>animate</code></td><td>Whether to animate the opening or closing operation.</td></tr> <tr><td><code>bubbles</code></td><td><code>false</code></td></tr> <tr><td><code>cancelable</code></td><td><code>true</code></td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>.</td></tr> <tr><td><code>dispatchEvent</code></td><td>Whether to dispatch an <code>ITEM_OPEN</code> or <code>ITEM_CLOSE</code> event after the open or close animation is complete. true</td></tr> <tr><td><code>item</code></td><td>The AdvancedDataGrid node that opened.</td></tr> <tr><td><code>itemRenderer</code></td> <td>The ListItemRenderer for the item (node) that opened.</td></tr> <tr><td><code>localX</code></td><td>NaN</td></tr> <tr><td><code>multiColumnSort </code></td><td><code>false</code></td></tr> <tr><td><code>removeColumnFromSort</code></td><td><code>false</code></td></tr> <tr><td><code>rowIndex</code></td><td>-1</td></tr> <tr><td><code>opening</code></td><td><code>true</code> if the item is opening, false if it is closing.</td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> <tr><td><code>triggerEvent</code></td> <td>If the item opened in response to a user action, identifies it as a keyboard action or a mouse action.</td></tr> <tr><td><code>type</code></td><td>AdvancedDataGridEvent.ITEM_OPENING</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["itemOpening"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "HEADER_RELEASE",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The AdvancedDataGridEvent.HEADER_RELEASE constant defines the value of the <code>type</code> property of the event object for a <code>headerRelease</code> event, which indicates that the user pressed and released the mouse on a column header.  <p>The properties of the event object have the following values:</p> <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>bubbles</code></td><td><code>false</code></td></tr> <tr><td><code>cancelable</code></td><td><code>true</code></td></tr> <tr><td><code>columnIndex</code></td><td> The zero-based index of the item's column in the AdvancedDataGrid object's <code>columns</code> array.</td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>. </td></tr> <tr><td><code>dataField</code></td><td>The name of the field or property in the data associated with the column.</td></tr> <tr><td><code>item</code></td><td>The AdvancedDataGrid item (node) that closed.</td></tr> <tr><td><code>itemRenderer</code></td><td>The header renderer that is being released.</td></tr> <tr><td><code>localX</code></td><td>NaN</td></tr> <tr><td><code>multiColumnSort </code></td><td><code>undefined</code> - Use the <code>sort</code> event if you want to sort on multiple columns. </td></tr> <tr><td><code>reason</code></td><td>null</td></tr> <tr><td><code>removeColumnFromSort</code></td><td><code>false</code></td></tr> <tr><td><code>rowIndex</code></td><td>null</td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> <tr><td><code>triggerEvent</code></td> <td>If the node closed in response to a user action, identifies it as a keyboard action or a mouse action.</td></tr> <tr><td><code>type</code></td><td>AdvancedDataGridEvent.HEADER_RELEASE</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["headerRelease"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "SORT",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The AdvancedDataGridEvent.SORT constant defines the value of the <code>type</code> property of the event object for a <code>sort</code> event. The AdvancedDataGrid control performs sorting based on the value of the <code>dataField</code> and <code>multiColumnSort</code> properties.  <p>The properties of the event object have the following values:</p> <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>bubbles</code></td><td><code>false</code></td></tr> <tr><td><code>cancelable</code></td><td><code>true</code></td></tr> <tr><td><code>columnIndex</code></td><td> The zero-based index of the item's column in the AdvancedDataGrid object's <code>columns</code> array.</td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>. </td></tr> <tr><td><code>dataField</code></td><td>The name of the field or property in the data associated with the column.</td></tr> <tr><td><code>multiColumnSort </code></td><td>If <code>true</code>, indicates that the new <code>dataField</code> property should be used along with whatever sorting is already in use, resulting in a multicolumn sort.  <p>If <code>false</code>, any sorting present should be removed, and a fresh sorting should be done for the new <code>dataField</code> property.</p> </td></tr> <tr><td><code>removeColumnFromSort</code></td><td><code>false</code></td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> <tr><td><code>triggerEvent</code></td> <td>If the node closed in response to a user action, identifies it as a keyboard action or a mouse action.</td></tr> <tr><td><code>type</code></td><td>AdvancedDataGridEvent.SORT</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["sort"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "mx.events.AdvancedDataGridEvent",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Constructor.         was clicked.      event or <code>null</code> if this event was triggered programmatically.",
        "tags": [
        {  "tagName": "param",
               "values": ["type The event type; indicates the action that caused the event.", "bubbles Specifies whether the event can bubble up the display list hierarchy.", "cancelable Specifies whether the behavior associated with the event can be prevented.", "columnIndex The zero-based index of the column where the event occurred.", "dataField  The name of the field or property in the data associated with the column.", "rowIndex The zero-based index of the item in the data provider.", "reason The reason for an <code>itemEditEnd</code> event.", "itemRenderer The item renderer that is being edited or the header renderer that", "localX Column x position for replaying <code>columnStretch</code> events.", "multiColumnSort Specifies a multicolumn sort.", "removeColumnFromSort Specifies to remove the column from the multicolumn sort.", "item Specifies the <code>node</code> property. .", "triggerEvent The MouseEvent or KeyboardEvent that triggered this", "headerPart The part of the header that was clicked."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": [{ "name": "type", "type": "String"},
        { "name": "bubbles", "type": "Boolean"},
        { "name": "cancelable", "type": "Boolean"},
        { "name": "columnIndex", "type": "int"},
        { "name": "dataField", "type": "String"},
        { "name": "rowIndex", "type": "int"},
        { "name": "reason", "type": "String"},
        { "name": "itemRenderer", "type": "mx.controls.listClasses.IListItemRenderer"},
        { "name": "localX", "type": "Number"},
        { "name": "multiColumnSort", "type": "Boolean"},
        { "name": "removeColumnFromSort", "type": "Boolean"},
        { "name": "item", "type": "Object"},
        { "name": "triggerEvent", "type": "org.apache.royale.events.Event"},
        { "name": "headerPart", "type": "String"}]}
      ,
      { "type": "field",
        "qname": "columnIndex",
        "return": "int",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The zero-based index in the AdvancedDataGrid object's <code>columns</code> Array of the column associated with the event.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "dataField",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The name of the field or property in the data associated with the column.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "dispatchEvent",
        "return": "Boolean",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Whether to dispatch an <code>ITEM_OPEN</code> or <code>ITEM_CLOSE</code> event after the open or close animation is complete. Used for <code>ITEM_OPENING</code> events only.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "item",
        "return": "Object",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Storage for the <code>node</code> property. If you populate the AdvancedDataGrid control from XML data, access the <code>label</code> and <code>data</code> properties for the <code>node</code> as <code>event.node.attributes.label</code> and <code>event.node.attributes.data</code>.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "itemRenderer",
        "return": "mx.controls.listClasses.IListItemRenderer",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The item renderer for the item that is being edited, or the header render that is being clicked or stretched. You can access the data provider by using this property.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "reason",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The reason the <code>itemEditEnd</code> event was dispatched. Valid only for events with type <code>ITEM_EDIT_END</code>. The possible values are defined in the AdvancedDataGridEventReason class.",
        "tags": [
        {  "tagName": "see",
               "values": ["AdvancedDataGridEventReason"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "rowIndex",
        "return": "int",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The zero-based index of the item in the data provider.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]}]
  }
