blob: 91e859e96ec4ba3e5cfe9e4adcf3f19f0caffd51 [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.styles
{
import mx.styles.CSSStyleDeclaration;
import mx.styles.ISimpleStyleClient;
/**
* This interface describes the properties and methods that an object
* must implement so that it can fully participate in the style subsystem.
* This interface is implemented by UIComponent.
*
* <p>If the object does not need to store style values locally, it can
* implement the <code>ISimpleStyleClient</code> interface instead.</p>
*
* @see mx.styles.ISimpleStyleClient
* @see mx.styles.CSSStyleDeclaration
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public interface IStyleClient extends ISimpleStyleClient
{
//--------------------------------------------------------------------------
//
// Properties
//
//--------------------------------------------------------------------------
//----------------------------------
// className
//----------------------------------
/**
* The name of the component class.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get className():String;
//----------------------------------
// inheritingStyles
//----------------------------------
/**
* An object containing the inheritable styles for this component.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get inheritingStyles():Object;
/**
* @private
*/
function set inheritingStyles(value:Object):void;
//----------------------------------
// nonInheritingStyles
//----------------------------------
/**
* An object containing the noninheritable styles for this component.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get nonInheritingStyles():Object;
/**
* @private
*/
function set nonInheritingStyles(value:Object):void;
//----------------------------------
// styleDeclaration
//----------------------------------
/**
* The style declaration that holds the inline styles declared by this
* object.
*
* @see mx.styles.CSSStyleDeclaration
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get styleDeclaration():CSSStyleDeclaration;
/**
* @private
*/
function set styleDeclaration(value:CSSStyleDeclaration):void;
//--------------------------------------------------------------------------
//
// Methods
//
//--------------------------------------------------------------------------
/**
* Gets a style property that has been set anywhere in this
* component's style lookup chain.
*
* <p>This same method is used to get any kind of style property,
* so the value returned may be a Boolean, String, Number, int,
* uint (for an RGB color), Class (for a skin), or any kind of object.
* Therefore the return type is specified as ~~.</p>
*
* <p>If you are getting a particular style property, you will
* know its type and will often want to store the result in a
* variable of that type. You can use either the <code>as</code>
* operator or coercion to do this. For example:</p>
*
* <pre>
* var backgroundColor:uint = getStyle("backgroundColor") as int;
*
* or
*
* var backgroundColor:uint = int(getStyle("backgroundColor"));
* </pre>
*
* <p>If the style property has not been set anywhere in the
* style lookup chain, the value returned by the <code>getStyle()</code> method
* is <code>undefined</code>.
* Note that <code>undefined</code> is a special value that is
* not the same as <code>false</code>, the empty String (<code>""</code>),
* <code>NaN</code>, 0, or <code>null</code>.
* No valid style value is ever <code>undefined</code>.
* You can use the static method
* <code>StyleManager.isValidStyleValue()</code>
* to test whether the value was set.</p>
*
* @param styleProp Name of the style property.
*
* @return Style value.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function getStyle(styleProp:String):*;
/**
* Sets a style property on this component instance.
*
* <p>This may override a style that was set globally.</p>
*
* <p>Calling the <code>setStyle()</code> method can result in decreased performance.
* Use it only when necessary.</p>
*
* @param styleProp Name of the style property.
*
* @param newValue New value for the style.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function setStyle(styleProp:String, newValue:*):void
/**
* Deletes a style property from this component instance.
*
* <p>This does not necessarily cause the <code>getStyle()</code> method to return
* <code>undefined</code>.</p>
*
* @param styleProp Name of the style property.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function clearStyle(styleProp:String):void;
/**
* Returns an Array of CSSStyleDeclaration objects for the type selector
* that applies to this component, or <code>null</code> if none exist.
*
* <p>For example, suppose that component MyButton extends Button.
* This method first looks for a MyButton selector; then, it looks for a Button type selector;
* finally, it looks for a UIComponent type selector.</p>
*
* @return Array of CSSStyleDeclaration objects.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function getClassStyleDeclarations():Array; // of CSSStyleDeclaration;
/**
* Propagates style changes to the children of this component.
*
* @param styleProp Name of the style property.
*
* @param recursive Whether to propagate the style changes to the children's children.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function notifyStyleChangeInChildren(styleProp:String,
recursive:Boolean):void;
/**
* Sets up the internal style cache values so that the <code>getStyle()</code>
* method functions.
* If this object already has children, then reinitialize the children's
* style caches.
*
* @param recursive Regenerate the proto chains of the children.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function regenerateStyleCache(recursive:Boolean):void;
/**
* Registers the EffectManager as one of the event listeners for each effect event.
*
* @param effects An Array of Strings of effect names.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function registerEffects(effects:Array /* of String */):void
}
}