blob: 1d0a9298e040951598d76c29130bb442074fcaab [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.core
{
import flash.display.DisplayObjectContainer;
import mx.geom.TransformOffsets;
/**
* The IVisualElement interface defines the minimum properties and methods
* required for a visual element to be laid out and displayed in a Spark container.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
public interface IVisualElement extends ILayoutElement, ILayoutDirectionElement
{
/**
* The owner of this IVisualElement object.
* By default, it is the parent of this IVisualElement object.
* However, if this IVisualElement object is a child component that is
* popped up by its parent, such as the drop-down list of a ComboBox control,
* the owner is the component that popped up this IVisualElement object.
*
* <p>This property is not managed by Flex, but by each component.
* Therefore, if you use the <code>PopUpManger.createPopUp()</code> or
* <code>PopUpManger.addPopUp()</code> method to pop up a child component,
* you should set the <code>owner</code> property of the child component
* to the component that popped it up.</p>
*
* <p>The default value is the value of the <code>parent</code> property.</p>
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get owner():DisplayObjectContainer;
/**
* @private
*/
function set owner(value:DisplayObjectContainer):void;
/**
* The parent container or component for this component.
* Only visual elements should have a <code>parent</code> property.
* Non-visual items should use another property to reference
* the object to which they belong.
* By convention, non-visual objects use an <code>owner</code>
* property to reference the object to which they belong.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get parent():DisplayObjectContainer;
/**
* Determines the order in which items inside of containers
* are rendered.
* Spark containers order their items based on their
* <code>depth</code> property, with the lowest depth in the back,
* and the higher in the front.
* Items with the same depth value appear in the order
* they are added to the container.
*
* @default 0
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get depth():Number;
/**
* @private
*/
function set depth(value:Number):void;
/**
* Controls the visibility of this visual element.
* If <code>true</code>, the object is visible.
*
* <p>If an object is not visible, but the <code>includeInLayout</code>
* property is set to <code>true</code>, then the object
* takes up space in the container, but is invisible.</p>
*
* <p>If <code>visible</code> is set to <code>true</code>, the object may not
* necessarily be visible due to its size and whether container clipping
* is enabled.</p>
*
* <p>Setting <code>visible</code> to <code>false</code>,
* prevents the component from getting focus.</p>
*
* @default true
* @see ILayoutElement#includeInLayout
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get visible():Boolean;
/**
* @private
*/
function set visible(value:Boolean):void;
/**
* @copy flash.display.DisplayObject#alpha
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get alpha():Number;
/**
* @private
*/
function set alpha(value:Number):void;
/**
* @copy flash.display.DisplayObject#width
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get width():Number;
/**
* @private
*/
function set width(value:Number):void;
/**
* @copy flash.display.DisplayObject#height
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get height():Number;
/**
* @private
*/
function set height(value:Number):void;
/**
* @copy flash.display.DisplayObject#x
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get x():Number;
/**
* @private
*/
function set x(value:Number):void;
/**
* @copy flash.display.DisplayObject#y
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get y():Number;
/**
* @private
*/
function set y(value:Number):void;
/**
* Specifies the optional DesignLayer instance associated with this visual
* element.
*
* <p>When a DesignLayer is assigned, a visual element must consider the
* visibility and alpha of its parent layer when ultimately committing its
* own effective visibility or alpha to its backing DisplayObject
* (if applicable).</p>
*
* <p>A visual element must listen for <code>layerPropertyChange</code>
* notifications from the associated layer parent. When the
* <code>effectiveAlpha</code> or <code>effectiveVisibility</code> of the
* layer changes, the element must then compute its own effective visibility
* (or alpha) and apply it accordingly.</p>
*
* <p>This property should not be set within MXML directly.</p>
*
* <p>The <code>designLayer</code> property is not used for z-order control,
* please see <code>depth</code>.</p>
*
* @see #depth
* @default null
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get designLayer():DesignLayer;
/**
* @private
*/
function set designLayer(value:DesignLayer):void;
/**
* Defines a set of adjustments that can be applied to the object's
* transform in a way that is invisible to its parent's layout.
*
* <p>For example, if you want a layout to adjust for an object
* that is rotated 90 degrees, set the object's
* <code>rotation</code> property. If you want the layout to <i>not</i>
* adjust for the object being rotated,
* set its <code>postLayoutTransformOffsets.rotationZ</code> property.</p>
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get postLayoutTransformOffsets():TransformOffsets;
/**
* @private
*/
function set postLayoutTransformOffsets(value:TransformOffsets):void;
/**
* Contains <code>true</code> when the element is in 3D.
* The element can be in 3D either because
* it has 3D transform properties or it has 3D post layout transform offsets or both.
*
* @see #postLayoutTransformOffsets
* @see mx.core.ILayoutElement#hasLayoutMatrix3D
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion Flex 4
*/
function get is3D():Boolean;
}
}