//////////////////////////////////////////////////////////////////////////////// // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. // The ASF licenses this file to You under the Apache License, Version 2.0 // (the "License"); you may not use this file except in compliance with // the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////////// package mx.events { import flash.display.DisplayObject; import flash.display.InteractiveObject; import flash.events.Event; import mx.core.DragSource; import mx.core.IUIComponent; import mx.events.DragEvent; /** * An event sent between DragManagers that are * in separate but trusted ApplicationDomains to * handle the dispatching of DragEvents to the drag targets. * One DragManager has a DragProxy that moves with * the mouse and looks for changes to the dropTarget. * It cannot directly dispatch the DragEvent to a potential * target in another ApplicationDomain because code * in that ApplicationDomain would not type-match on DragEvent. * Instead, the DragManager dispatches a InterDragManagerEvent * that the other ApplicationDomain's DragManager listens * for and it marshals the DragEvent and dispatches it to * the potential dropTarget. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public class InterDragManagerEvent extends DragEvent { include "../core/Version.as"; //-------------------------------------------------------------------------- // // Class constants // //-------------------------------------------------------------------------- /** * Dispatch a DragEvent event to a target in another ApplicationDomain. * The receiving DragManager marshals the DragEvent and dispatches it * to the target specified in the dropTarget property. * * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public static const DISPATCH_DRAG_EVENT:String = "dispatchDragEvent"; //-------------------------------------------------------------------------- // // Constructor // //-------------------------------------------------------------------------- /** * Constructor. * * @param type The event type; indicates the action that caused the event. * * @param bubbles Specifies whether the event can bubble up the display list hierarchy. * * @param cancelable Specifies whether the behavior associated with the event can be prevented. * * @param localX The horizontal coordinate at which the event occurred relative to the containing sprite. * * @param localY The vertical coordinate at which the event occurred relative to the containing sprite. * * @param relatedObject A reference to a display list object that is related to the event. * * @param ctrlKey Indicates whether the Ctrl key was pressed. * * @param altKey Indicates whether the Alt key was pressed. * * @param shiftKey Indicates whether the Shift key was pressed. * * @param buttonDown Indicates whether the primary mouse button is pressed (true) or not (false). * * @param delta Indicates how many lines should be scrolled for each unit the user rotates the mouse wheel. * * @param dropTarget The potential drop target in the other application domain (which is why it is a DisplayObject and not some other class). * * @param dragEventType The event type for the DragEvent to be used by the receiving DragManager when creating the marshaled DragEvent. * * @param dragInitiator IUIComponent that specifies the component initiating * the drag. * * @param dragSource A DragSource object containing the data being dragged. * * @param action The specified drop action, such as DragManager.MOVE. * * @param draggedItem An object representing the item that was dragged. * * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public function InterDragManagerEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, localX:Number = NaN, localY:Number = NaN, relatedObject:InteractiveObject = null, ctrlKey:Boolean = false, altKey:Boolean = false, shiftKey:Boolean = false, buttonDown:Boolean = false, delta:int = 0, dropTarget:DisplayObject = null, dragEventType:String = null, dragInitiator:IUIComponent = null, dragSource:DragSource = null, action:String = null, draggedItem:Object = null) { super(type, false, false, dragInitiator, dragSource, action, ctrlKey, altKey, shiftKey); this.dropTarget = dropTarget; this.dragEventType = dragEventType; this.draggedItem = draggedItem; this.localX = localX; this.localY = localY; this.buttonDown = buttonDown; this.delta = delta; this.relatedObject = relatedObject; } //-------------------------------------------------------------------------- // // Properties // //-------------------------------------------------------------------------- //---------------------------------- // dragTarget //---------------------------------- /** * The potential drop target in the other ApplicationDomain * (which is why it is a DisplayObject and not some other class). * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var dropTarget:DisplayObject; //---------------------------------- // dragEventType //---------------------------------- /** * The event type for the DragEvent to be used * by the receiving DragManager when creating the * marshaled DragEvent. * * @see mx.events.DragEvent * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var dragEventType:String; //-------------------------------------------------------------------------- // // Overridden methods: Event // //-------------------------------------------------------------------------- /** * @private */ override public function clone():Event { var cloneEvent:InterDragManagerEvent = new InterDragManagerEvent(type, bubbles, cancelable, localX, localY, relatedObject, ctrlKey, altKey, shiftKey, buttonDown, delta, dropTarget, dragEventType, dragInitiator, dragSource, action, draggedItem); return cloneEvent; } } }