{ "type": "class",
  "qname": "spark.events.GridEvent",
  "baseClassname": "org.apache.royale.events.MouseEvent"
  ,
    "description": "The GridEvent class extends the MouseEvent class to includes additional grid specific information based on the event's location relative to a grid cell. This information includes the following:  <ul> <li>The row and column index of the cell.</li> <li>The GridColumn object of the cell.</li> <li>The data provider item that corresponds to the row of the cell.</li> <li>The item renderer.</li> </ul>  <p>Grid events have a one-to-one correspondence with mouse events. They are dispatched in response to mouse events that have &quot;bubbled&quot; from some Grid descendant to the Grid itself. One significant difference is that event listeners for grid events are guaranteed to see an entire down-drag-up mouse gesture, even if the drag and up parts of the gesture do not occur over the grid. The <code>gridMouseDrag</code> event corresponds to a mouse move event with the button held down.</p>",
  "tags": [
  {  "tagName": "see",
         "values": ["spark.components.DataGrid", "spark.components.Grid", "spark.components.gridClasses.GridSelectionMode"]},
      {  "tagName": "playerversion",
         "values": ["Flash 10", "AIR 2.5"]},
      {  "tagName": "productversion",
         "values": ["Flex 4.5"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "field",
        "qname": "GRID_MOUSE_DOWN",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>gridMouseDown</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.GRID_MOUSE_DOWN</td></tr> </table>",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.display.InteractiveObject#event:mouseDown"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["gridMouseDown"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "GRID_MOUSE_DRAG",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>gridMouseDrag</code> GridEvent. This event is only dispatched when a listener has handled a <code>mouseDown</code> event, and then only while the mouse moves with the button held down.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.GRID_MOUSE_DRAG</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["gridMouseDrag"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "GRID_MOUSE_UP",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>gridMouseUp</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.GRID_MOUSE_UP</td></tr> </table>",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.display.InteractiveObject#event:mouseUp"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["gridMouseUp"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "GRID_CLICK",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>gridClick</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.GRID_CLICK</td></tr> </table>",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.display.InteractiveObject#event:click"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["gridClick"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "GRID_DOUBLE_CLICK",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>gridDoubleClick</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.GRID_DOUBLE_CLICK</td></tr> </table>",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.display.InteractiveObject#event:doubleClick"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["gridDoubleClick"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "GRID_ROLL_OVER",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>gridRollOver</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.GRID_ROLL_OVER</td></tr> </table>",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.display.InteractiveObject#event:rollOver"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["gridRollOver"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "GRID_ROLL_OUT",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>gridRollOut</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.GRID_ROLL_OUT</td></tr> </table>",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.display.InteractiveObject#event:rollOut"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["gridRollOut"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "SEPARATOR_MOUSE_DRAG",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>separatorMouseDrag</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.SEPARATOR_MOUSE_DRAG</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["separatorMouseDrag"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "SEPARATOR_CLICK",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>separatorClick</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.SEPARATOR_CLICK</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["separatorClick"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "SEPARATOR_DOUBLE_CLICK",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>separatorDoubleClick</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.SEPARATOR_DOUBLE_CLICK</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["separatorDoubleClick"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "SEPARATOR_MOUSE_DOWN",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>separatorMouseDown</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.SEPARATOR_MOUSE_DOWN</td></tr> </table>",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.display.InteractiveObject#event:rollOut"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["separatorMouseDown"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "SEPARATOR_MOUSE_UP",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>separatorMouseUp</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.SEPARATOR_MOUSE_UP</td></tr> </table>",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.display.InteractiveObject#event:rollOut"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["separatorMouseUp"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "SEPARATOR_ROLL_OUT",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>separatorRollOut</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.SEPARATOR_ROLL_OUT</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["separatorRollOut"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "SEPARATOR_ROLL_OVER",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The value of the <code>type</code> property for a <code>separatorRollOver</code> GridEvent.  <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>false</td></tr> <tr><td><code>cancelable</code></td><td>false</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>column</code></td><td>The column where the event occurred, or null if the event did not occur over a column.</td></tr> <tr><td><code>columnIndex</code></td><td>The index of the column where the event occurred, or -1 if the event did not occur over a grid column.</td></tr> <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr> <tr><td><code>item</code></td><td>The data provider item for this row, or null if the event did not occur over a grid row.</td></tr> <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed this cell, or null if the event did not occur over a visible cell.</td></tr> <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, or -1 if the event did not occur over a grid row.</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>type</code></td><td>GirdEvent.SEPARATOR_ROLL_OVER</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["separatorRollOver"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "spark.events.GridEvent",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "GridEvents dispatched by the Grid class in response to mouse event are constructed with the incoming mouse event's properties. The grid event's x,y location, meaning the value of its <code>localX</code> and <code>localY</code> properties, is defined relative to the entire grid, not just the part of the grid that has been scrolled into view. Similarly, the event's row and column indices might correspond to a cell that has not been scrolled into view.           MouseEvent that triggered this GridEvent.",
        "tags": [
        {  "tagName": "param",
               "values": ["type Distinguishes the mouse gesture that caused this event to be dispatched.", "bubbles Specifies whether the event can bubble up the display list hierarchy.", "cancelable Specifies whether the behavior associated with the event can be prevented.", "localX The event's x coordinate relative to grid.", "localY The event's y coordinate relative to grid.", "rowIndex The index of the row where the event occurred, or -1.", "columnIndex The index of the column where the event occurred, or -1.", "column The column where the event occurred, or null.", "item The data provider item at <code>rowIndex</code>.", "relatedObject The <code>relatedObject</code> property of the", "itemRenderer The visible item renderer where the event occurred, or null.", "ctrlKey Whether the Control key is down.", "altKey Whether the Alt key is down.", "shiftKey Whether the Shift key is down.", "buttonDown Whether the Control key is down.", "delta Not used."]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": []}
      ,
      { "type": "accessor",
        "access": "read-write",
        "return": "int",
        "qname": "rowIndex",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "accessor",
        "access": "read-write",
        "return": "int",
        "qname": "columnIndex",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "accessor",
        "access": "read-write",
        "return": "Object",
        "qname": "item",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "accessor",
        "access": "read-write",
        "return": "spark.components.gridClasses.IGridItemRenderer",
        "qname": "itemRenderer",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}}]
  }
