////////////////////////////////////////////////////////////////////////////////
//
// 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.states
{
import flash.events.EventDispatcher;
import mx.core.mx_internal;
import mx.events.FlexEvent;
use namespace mx_internal;
//--------------------------------------
// Events
//--------------------------------------
/**
* Dispatched after a view state has been entered.
*
* @eventType mx.events.FlexEvent.ENTER_STATE
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
[Event(name="enterState", type="mx.events.FlexEvent")]
/**
* Dispatched just before a view state is exited.
* This event is dispatched before the changes
* to the default view state have been removed.
*
* @eventType mx.events.FlexEvent.EXIT_STATE
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
[Event(name="exitState", type="mx.events.FlexEvent")]
//--------------------------------------
// Other metadata
//--------------------------------------
[DefaultProperty("overrides")]
/**
* The State class defines a view state, a particular view of a component.
* For example, a product thumbnail could have two view states;
* a base view state with minimal information, and a rich view state with
* additional information.
* The overrides
property specifies a set of child classes
* to add or remove from the base view state, and properties, styles, and event
* handlers to set when the view state is in effect.
*
*
You use the State class in the states
property
* of Flex components.
* You can only specify a states
property at the root of an
* application or a custom control, not on child controls.
You enable a view state by setting a component's
* currentState
property.
The <mx:State>
tag has the following attributes:
* <mx:State * Properties * basedOn="null" * name="null" * overrides="null" * /> ** * @see mx.states.AddChild * @see mx.states.RemoveChild * @see mx.states.SetEventHandler * @see mx.states.SetProperty * @see mx.states.SetStyle * @see mx.states.Transition * * @includeExample examples/StatesExample.mxml * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public class State extends EventDispatcher { include "../core/Version.as"; //-------------------------------------------------------------------------- // // Constructor // //-------------------------------------------------------------------------- /** * Constructor. * * @param properties Object containing property settings for this State. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public function State(properties:Object=null) { super(); // Initialize from object if provided. for (var p:String in properties) { this[p] = properties[p]; } } //-------------------------------------------------------------------------- // // Variables // //-------------------------------------------------------------------------- /** * @private * Initialized flag */ private var initialized:Boolean = false; //-------------------------------------------------------------------------- // // Properties // //-------------------------------------------------------------------------- //---------------------------------- // basedOn //---------------------------------- [Inspectable(category="General")] /** * The name of the view state upon which this view state is based, or *
null
if this view state is not based on a named view state.
* If this value is null
, the view state is based on a root
* state that consists of the properties, styles, event handlers, and
* children that you define for a component without using a State class.
*
* @default null
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var basedOn:String;
//----------------------------------
// name
//----------------------------------
[Inspectable(category="General")]
/**
* The name of the view state.
* State names must be unique for a given component.
* This property must be set.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public var name:String;
//----------------------------------
// overrides
//----------------------------------
[ArrayElementType("mx.states.IOverride")]
[Inspectable(category="General")]
/**
* The overrides for this view state, as an Array of objects that implement
* the IOverride interface. These overrides are applied in order when the
* state is entered, and removed in reverse order when the state is exited.
*
* The following Flex classes implement the IOverride interface and let you * define the view state characteristics:
*The overrides
property is the default property of the
* State class. You can omit the <mx:overrides>
tag
* and its child <mx:Array>
tag if you use MXML tag
* syntax to define the overrides.