| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // 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.managers.marshalClasses |
| { |
| |
| import flash.display.DisplayObject; |
| import flash.display.Sprite; |
| import flash.events.Event; |
| import flash.geom.Rectangle; |
| |
| import mx.core.IUIComponent; |
| import mx.core.mx_internal; |
| import mx.effects.Effect; |
| import mx.events.SandboxMouseEvent; |
| import mx.managers.ISystemManager; |
| import mx.managers.PopUpData; |
| |
| use namespace mx_internal; |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // Helper class: MarshalPopUpData |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| [ExcludeClass] |
| |
| /** |
| * @private |
| */ |
| public class MarshalPopUpData extends PopUpData |
| { |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Constructor |
| // |
| //-------------------------------------------------------------------------- |
| |
| /** |
| * Constructor. |
| */ |
| public function MarshalPopUpData() |
| { |
| super(); |
| useExclude = true; |
| } |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Variables |
| // |
| //-------------------------------------------------------------------------- |
| |
| //-------------------------------------- |
| // fields only for remote modal windows |
| //-------------------------------------- |
| |
| /** |
| * @private |
| * |
| * Is this popup just a modal window for a popup |
| * in an untrusted sandbox? |
| */ |
| public var isRemoteModalWindow:Boolean; |
| |
| /** |
| * @private |
| */ |
| public var modalTransparencyDuration:Number; |
| |
| /** |
| * @private |
| */ |
| public var modalTransparency:Number; |
| |
| /** |
| * @private |
| */ |
| public var modalTransparencyBlur:Number; |
| |
| /** |
| * @private |
| */ |
| public var modalTransparencyColor:Number; |
| |
| /** |
| * @private |
| * |
| * Object to exclude from the modal dialog. The area of the |
| * display object will be excluded from the modal dialog. |
| */ |
| public var exclude:IUIComponent; |
| |
| /** |
| * @private |
| * |
| * Flag to determine if the exclude property should be used |
| * or ignored. Typically the exclude field is used when a |
| * SystemManager contains its exclude child. But this isn't |
| * true when the child is in a pop up window. In this case |
| * useExclude is false. |
| */ |
| public var useExclude:Boolean; |
| |
| /** |
| * @private |
| * |
| * Rectangle to exclude from the <code>exclude</code> component |
| * which is in turn excluded from the modal dialog. |
| * This is passed within a sandbox so A.2 can tell A what |
| * the size of A.2.3 was. Each top-level application |
| * calculates excludeRect if there is mutual trust with its parent. |
| * If there is no trust this property will be null. |
| */ |
| public var excludeRect:Rectangle; |
| |
| /** |
| * @private |
| * |
| * Mask created from the modalWindow and exclude fields. |
| */ |
| public var modalMask:Sprite; |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Event handlers |
| // |
| //-------------------------------------------------------------------------- |
| |
| /** |
| * @private |
| */ |
| public function marshalMouseOutsideHandler(event:Event):void |
| { |
| if (!(event is SandboxMouseEvent)) |
| event = SandboxMouseEvent.marshal(event); |
| |
| if (owner) |
| owner.dispatchEvent(event); |
| } |
| |
| /** |
| * @private |
| * Set by PopUpManager on modal windows to make sure they cover the whole screen |
| */ |
| override public function resizeHandler(event:Event):void |
| { |
| // Resize the modal window if either the popup or the modal window are on the |
| // same stage as the resize event target. |
| // A modal window may have no popup in the case where the popup originated |
| // from an untrusted application. |
| if ((owner && owner.stage == DisplayObject(event.target).stage) || |
| (modalWindow && modalWindow.stage == DisplayObject(event.target).stage)) |
| { |
| var s:Rectangle = systemManager.screen; |
| |
| modalWindow.width = s.width; |
| modalWindow.height = s.height; |
| modalWindow.x = s.x; |
| modalWindow.y = s.y; |
| if (modalMask) |
| PopUpManagerMarshalMixin.updateModalMask(systemManager, modalWindow, |
| exclude, excludeRect, modalMask); |
| } |
| } |
| } |
| |
| } |