{ "type": "class",
  "qname": "mx.managers.DragManager",
  "baseClassname": ""
  ,
    "description": "The DragManager class manages drag and drop operations, which let you move data from one place to another in a Flex application. For example, you can select an object, such as an item in a List control or a Flex control, such as an Image control, and then drag it over another component to add it to that component.  <p>All methods and properties of the DragManager are static, so you do not need to create an instance of it.</p>  <p>All Flex components support drag and drop operations. Flex provides additional support for drag and drop to the List, Tree, and DataGrid controls.</p>  <p>When the user selects an item with the mouse, the selected component is called the drag initiator. The image displayed during the drag operation is called the drag proxy.</p>  <p>When the user moves the drag proxy over another component, the <code>dragEnter</code> event is sent to that component. If the component accepts the drag, it becomes the drop target and receives <code>dragOver</code>, <code>dragExit</code>, and <code>dragDrop</code> events.</p>  <p>When the drag is complete, a <code>dragComplete</code> event is sent to the drag initiator.</p>",
  "tags": [
  {  "tagName": "see",
         "values": ["mx.core.DragSource", "mx.events.DragEvent", "mx.core.UIComponent"]},
      {  "tagName": "playerversion",
         "values": ["Flash 9", "AIR 1.1"]},
      {  "tagName": "productversion",
         "values": ["Royale 0.9.3"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "field",
        "qname": "LINK",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Constant that specifies that the type of drag action is &quot;link&quot;.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "doDrag",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Initiates a drag and drop operation.  the drag.  being dragged.  for the start of the drag.  If omitted, a standard drag rectangle is used during the drag and drop operation. If you specify an image, you must explicitly set a height and width of the image or else it will not appear.  <code>dragImage</code>. This argument is optional. If omitted, the drag proxy is shown at the upper-left corner of the drag initiator. The offset is expressed in pixels from the left edge of the drag proxy to the left edge of the drag initiator, and is usually a negative number.  <code>dragImage</code>. This argument is optional. If omitted, the drag proxy is shown at the upper-left corner of the drag initiator. The offset is expressed in pixels from the top edge of the drag proxy to the top edge of the drag initiator, and is usually a negative number.  drag image. This argument is optional. If omitted, the default alpha value is 0.5. A value of 0.0 indicates that the image is transparent; a value of 1.0 indicates it is fully opaque.",
        "tags": [
        {  "tagName": "param",
               "values": ["dragInitiator IUIComponent that specifies the component initiating", "dragSource DragSource object that contains the data", "mouseEvent The MouseEvent that contains the mouse information", "dragImage The image to drag. This argument is optional.", "xOffset Number that specifies the x offset, in pixels, for the", "yOffset Number that specifies the y offset, in pixels, for the", "imageAlpha Number that specifies the alpha value used for the", "allowMove Indicates if a drop target is allowed to move the dragged data."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "dragInitiator", "type": "mx.core.IUIComponent"},
        { "name": "dragSource", "type": "mx.core.DragSource"},
        { "name": "mouseEvent", "type": "org.apache.royale.events.MouseEvent"},
        { "name": "dragImage", "type": "mx.core.IFlexDisplayObject"},
        { "name": "xOffset", "type": "Number"},
        { "name": "yOffset", "type": "Number"},
        { "name": "imageAlpha", "type": "Number"},
        { "name": "allowMove", "type": "Boolean"}]}
      ,
      { "type": "method",
        "qname": "acceptDragDrop",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Call this method from your <code>dragEnter</code> event handler if you accept the drag/drop data. Typically, you cast <code>event.target</code> to the data type of the  drop target. In the following example, the drop target is an MX Canvas container:  <pre>DragManager.acceptDragDrop(Canvas(event.target));</pre>",
        "tags": [
        {  "tagName": "param",
               "values": ["target The drop target accepting the drag."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "target", "type": "mx.core.IUIComponent"}]}
      ,
      { "type": "method",
        "qname": "showFeedback",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Sets the feedback indicator for the drag and drop operation. Possible values are <code>DragManager.COPY</code>, <code>DragManager.MOVE</code>, <code>DragManager.LINK</code>, or <code>DragManager.NONE</code>.",
        "tags": [
        {  "tagName": "param",
               "values": ["feedback The type of feedback indicator to display."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "feedback", "type": "String"}]}
      ]
  }
