blob: bf291b5c578565ad3c6ca410dfee05a7ab982a33 [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
{
import flash.events.IEventDispatcher;
import mx.core.mx_internal;
use namespace mx_internal;
/**
* The ILayoutManagerClient interface defines the interface
* that a component must implement to participate in the
* LayoutManager's commit/measurement/layout sequence.
*
* <p>Objects that implement this interface can be passed to the
* LayoutManager's <code>invalidateProperties()</code> method.
* When the LayoutManager reaches the commit properties phase,
* the LayoutManager invokes this object's <code>validateProperties()</code>
* method.</p>
*
* <p>Similarly, if an object is passed to the LayoutManager's
* <code>invalidateSize()</code> method, then the LayoutManager
* calls that object's <code>validateSize()</code> method
* during its measurement phase, and if an object is passed
* to LayoutManager's <code>invalidateDisplayList()</code> method,
* then the LayoutManager calls its <code>validateDisplayList()</code> method
* during the layout phase.</p>
*
* <p>The ILayoutManagerClient interface is implemented by the UIComponent
* and ProgrammaticSkin classes.</p>
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public interface ILayoutManagerClient extends IEventDispatcher
{
//--------------------------------------------------------------------------
//
// Properties
//
//--------------------------------------------------------------------------
//----------------------------------
// initialized
//----------------------------------
/**
* A flag that determines if an object has been through all three phases
* of layout validation (provided that any were required)
* This flag should only be modified by the LayoutManager.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get initialized():Boolean;
/**
* @private
*/
function set initialized(value:Boolean):void;
//----------------------------------
// nestLevel
//----------------------------------
/**
* The top-level SystemManager has a nestLevel of 1.
* Its immediate children (the top-level Application and any pop-up
* windows) have a <code>nestLevel</code> of 2.
* Their children have a <code>nestLevel</code> of 3, and so on.
*
* The <code>nestLevel</code> is used to sort ILayoutManagerClients
* during the measurement and layout phases.
* During the commit phase, the LayoutManager commits properties on clients
* in order of increasing <code>nestLevel</code>, so that an object's
* children have already had their properties committed before Flex
* commits properties on the object itself.
* During the measurement phase, the LayoutManager measures clients
* in order of decreasing <code>nestLevel</code>, so that an object's
* children have already been measured before Flex measures
* the object itself.
* During the layout phase, the LayoutManager lays out clients
* in order of increasing <code>nestLevel</code>, so that an object
* has a chance to set the sizes of its children before the child
* objects are asked to position and size their children.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get nestLevel():int;
/**
* @private
*/
function set nestLevel(value:int):void;
//----------------------------------
// processedDescriptors
//----------------------------------
/**
* @copy mx.core.UIComponent#processedDescriptors
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get processedDescriptors():Boolean;
/**
* @private
*/
function set processedDescriptors(value:Boolean):void;
//----------------------------------
// updateCompletePendingFlag
//----------------------------------
/**
* A flag that determines if an object is waiting to have its
* <code>updateComplete</code> event dispatched.
* This flag should only be modified by the LayoutManager.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get updateCompletePendingFlag():Boolean;
/**
* @private
*/
function set updateCompletePendingFlag(value:Boolean):void;
//--------------------------------------------------------------------------
//
// Methods
//
//--------------------------------------------------------------------------
/**
* Validates the properties of a component.
* If the <code>LayoutManager.invalidateProperties()</code> method is called with
* this ILayoutManagerClient, then the <code>validateProperties()</code> method
* is called when it's time to commit property values.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function validateProperties():void;
/**
* Validates the measured size of the component
* If the <code>LayoutManager.invalidateSize()</code> method is called with
* this ILayoutManagerClient, then the <code>validateSize()</code> method
* is called when it's time to do measurements.
*
* @param recursive If <code>true</code>, call this method
* on the objects children.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function validateSize(recursive:Boolean = false):void;
/**
* Validates the position and size of children and draws other
* visuals.
* If the <code>LayoutManager.invalidateDisplayList()</code> method is called with
* this ILayoutManagerClient, then the <code>validateDisplayList()</code> method
* is called when it's time to update the display list.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function validateDisplayList():void;
}
}