{ "type": "class",
  "qname": "org.apache.royale.html.beads.SensitiveMultiSelectionDropTargetBead",
  "baseClassname": "org.apache.royale.events.EventDispatcher"
  ,
    "description": "The SensitiveMultiSelectionDropTargetBead enables items to be dropped onto multi-selection List components. When the pointing device is in the first half of an item renderer it assumes the item is to be dropped on that item renderer. If it is on the second half it assumes the drop target is the next item renderer.",
  "tags": [
  {  "tagName": "see",
         "values": ["org.apache.royale.html.beads.SingleSelectionDropTargetBead"]},
      {  "tagName": "playerversion",
         "values": ["Flash 10.2", "AIR 2.6"]},
      {  "tagName": "productversion",
         "values": ["Royale 0.9.7"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "method",
        "qname": "org.apache.royale.html.beads.SensitiveMultiSelectionDropTargetBead",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Constructor",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.7"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": []}
      ,
      { "type": "accessor",
        "access": "write-only",
        "return": "org.apache.royale.core.IStrand",
        "qname": "strand",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "private",
               "values": []},
            {  "tagName": "royaleignorecoercion",
               "values": ["org.apache.royale.events.IEventDispatcher"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "String",
        "qname": "dropDirection",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The direction the drop indicator should display. &quot;horizontal&quot; (default) or &quot;vertical&quot;.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.7"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "_indicatorParent",
        "return": "org.apache.royale.core.UIBase",
        "namespace": "protected",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "accessor",
        "access": "read-only",
        "return": "org.apache.royale.core.UIBase",
        "qname": "indicatorParent",
        "namespace": "protected",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "private",
               "values": []},
            {  "tagName": "royaleignorecoercion",
               "values": ["org.apache.royale.html.beads.IDrawingLayerBead"]}  ]}]
  ,
  "events": [
  { "qname": "enter",
        "type": "org.apache.royale.events.Event"
      ,
          "description": "The enter event is dispatched when a DragEnter has been detected in the drop target strand. This event can be used to determine if the strand can and will accept the data being dragged onto it. If the data cannot be used by the drop target strand this event should be cancelled.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.7"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "qname": "exit",
        "type": "org.apache.royale.events.Event"
      ,
          "description": "The exit event is sent when the drag goes outside of the drop target space.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.7"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "qname": "over",
        "type": "org.apache.royale.events.Event"
      ,
          "description": "The over event is dispatched while the drag is happening over the drop target space. This event may be cancelled if that particular area of the drop target cannot accept the drag source data.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.7"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "qname": "drop",
        "type": "org.apache.royale.events.Event"
      ,
          "description": "The drop event is dispatched just prior to incorporating the drag source data into the drop target's dataProvider. This event may be cancelled to prevent that from happening. Note that a &quot;exit&quot; event always precedes this event to allow any drag-drop graphics to be cleared.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.7"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "qname": "complete",
        "type": "org.apache.royale.events.Event"
      ,
          "description": "The complete event is dispatched when the drop operation has completed from the drop target's perspective.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.7"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]}]
  }
