{ "type": "class",
  "qname": "spark.components.supportClasses.ListBase",
  "baseClassname": "spark.components.SkinnableContainer"
  ,
    "description": "The ListBase class is the base class for all components that support selection.  <p><b>Note: </b>The Spark list-based controls (the Spark ListBase class and its subclasses such as ButtonBar, ComboBox, DropDownList, List, and TabBar) do not support the BasicLayout class as the value of the <code>layout</code> property. Do not use BasicLayout with the Spark list-based controls.</p>  attributes of its superclass and adds the following tag attributes:</p>  <pre>\\n &lt;s:ListBase\\n \\n <strong>Properties</strong>\\n arrowKeysWrapFocus=&quot;false&quot;\\n labelField=&quot;label&quot;\\n labelFunction=&quot;null&quot;\\n requireSelection=&quot;false&quot;\\n selectedIndex=&quot;-1&quot;\\n selectedItem=&quot;undefined&quot;\\n useVirtualLayout=&quot;false&quot;\\n \\n <strong>Events</strong>\\n caretChange=&quot;<i>No default</i>&quot;\\n change=&quot;<i>No default</i>&quot;\\n changing=&quot;<i>No default</i>&quot;\\n /&gt;\\n </pre>",
  "tags": [
  {  "tagName": "royalesuppresspublicvarwarning",
         "values": []},
      {  "tagName": "mxml",
         "values": ["<p>The <code>&lt;s:ListBase&gt;</code> tag inherits all of the tag"]},
      {  "tagName": "playerversion",
         "values": ["Flash 10", "AIR 1.5"]},
      {  "tagName": "productversion",
         "values": ["Royale 0.9.4"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "method",
        "qname": "spark.components.supportClasses.ListBase",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Constructor.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": []}
      ,
      { "type": "accessor",
        "access": "read-only",
        "return": "Number",
        "qname": "caretIndex",
        "namespace": "public",
        "bindable": ["caretChange"],
        "details": [],
        "deprecated": {},
          "description": "Item that is currently in focus.",
        "tags": [
        {  "tagName": "default",
               "values": ["-1"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "mx.collections.IList",
        "qname": "dataProvider",
        "namespace": "public",
        "bindable": ["dataProviderChanged"],
        "details": [],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "see",
               "values": ["#itemRenderer", "#itemRendererFunction", "mx.collections.IList", "mx.collections.ArrayCollection", "mx.collections.ArrayList", "mx.collections.XMLListCollection"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "copy",
               "values": ["spark.components.DataGroup#dataProvider"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.4"]},
            {  "tagName": "royaleignorecoercion",
               "values": ["spark.components.DataGroup", "spark.components.beads.SparkContainerView"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "mx.core.IFactory",
        "qname": "itemRenderer",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "copy",
               "values": ["spark.components.DataGroup#itemRenderer"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.4"]},
            {  "tagName": "royaleignorecoercion",
               "values": ["spark.components.DataGroup", "spark.components.beads.SparkContainerView"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "String",
        "qname": "labelField",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The name of the field in the data provider items to display as the label.  If labelField is set to an empty string (&quot;&quot;), no field will be considered on the data provider to represent label.  The <code>labelFunction</code> property overrides this property.",
        "tags": [
        {  "tagName": "default",
               "values": [""label""]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Boolean",
        "qname": "requireSelection",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "If <code>true</code>, a data item must always be selected in the control. If the value is <code>true</code>, the <code>selectedIndex</code> property is always set to a value between 0 and (<code>dataProvider.length</code> - 1).  <p>The default value is <code>false</code> for most subclasses, except TabBar. In that case, the default is <code>true</code>.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["false"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "int",
        "qname": "selectedIndex",
        "namespace": "public",
        "bindable": ["change","valueCommit"],
        "details": [],
        "deprecated": {},
          "description": "The 0-based index of the selected item, or -1 if no item is selected. Setting the <code>selectedIndex</code> property deselects the currently selected item and selects the data item at the specified index.  <p>The value is always between -1 and (<code>dataProvider.length</code> - 1). If items at a lower index than <code>selectedIndex</code> are removed from the component, the selected index is adjusted downward accordingly.</p>  <p>If the selected item is removed, the selected index is set to:</p>  <ul> <li>-1 if <code>requireSelection</code> = <code>false</code> or there are no remaining items.</li> <li>0 if <code>requireSelection</code> = <code>true</code> and there is at least one item.</li> </ul>  <p>When the user changes the <code>selectedIndex</code> property by interacting with the control, the control dispatches the <code>change</code> and <code>changing</code> events. When you change the value of the <code>selectedIndex</code> property programmatically, it dispatches the <code>valueCommit</code> event.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["-1"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "*",
        "qname": "selectedItem",
        "namespace": "public",
        "bindable": ["change","valueCommit"],
        "details": [],
        "deprecated": {},
          "description": "The item that is currently selected. Setting this property deselects the currently selected item and selects the newly specified item.  <p>Setting <code>selectedItem</code> to an item that is not in this component results in no selection, and <code>selectedItem</code> being set to <code>undefined</code>.</p>  <p>If the selected item is removed, the selected item is set to:</p>  <ul> <li><code>undefined</code> if <code>requireSelection</code> = <code>false</code> or there are no remaining items.</li> <li>The first item if <code>requireSelection</code> = <code>true</code> and there is at least one item.</li> </ul>  <p>When the user changes the <code>selectedItem</code> property by interacting with the control, the control dispatches the <code>change</code> and <code>changing</code> events. When you change the value of the <code>selectedItem</code> property programmatically, it dispatches the <code>valueCommit</code> event.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["undefined"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "findRowIndices",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "This will search through a dataprovider checking the given field and for the given values and return an array of indices that matched.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 11.1", "AIR 3.4"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Array",
          "params": [{ "name": "field", "type": "String"},
        { "name": "values", "type": "Array"},
        { "name": "patternType", "type": "String"}]}
      ,
      { "type": "method",
        "qname": "setActualSize",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "return": "void",
          "params": [{ "name": "w", "type": "Number"},
        { "name": "h", "type": "Number"}]}
      ]
  ,
  "events": [
  { "qname": "changing",
        "type": "spark.events.IndexChangeEvent"
      ,
          "description": "Dispatched when the selection is going to change. Calling the <code>preventDefault()</code> method on the event prevents the selection from changing.  <p>This event is dispatched when the user interacts with the control. When you change the value of the <code>selectedIndex</code> or <code>selectedItem</code> properties programmatically, the control does not dispatch the <code>changing</code> event. It dispatches the <code>valueCommit</code> event instead.</p>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "eventType",
               "values": ["spark.events.IndexChangeEvent.CHANGING"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "qname": "change",
        "type": "spark.events.IndexChangeEvent"
      ,
          "description": "Dispatched after the selection has changed. This event is dispatched when the user interacts with the control.  <p>When you change the value of the <code>selectedIndex</code> or <code>selectedItem</code> properties programmatically, the control does not dispatch the <code>change</code> event. It dispatches the <code>valueCommit</code> event instead.</p>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "eventType",
               "values": ["spark.events.IndexChangeEvent.CHANGE"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.4"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]}]
  }



