blob: 9fb9fcbdd1066c2d0502c99413a4b2df7a8d88fe [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// 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);
}
}
}
}