| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // 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.core.mx_internal; |
| |
| use namespace mx_internal; |
| |
| /** |
| * Wraps an object that implements the IAdvancedStyleClient interface. This |
| * interface supports a <code>filterMap</code> property that contains |
| * style-source/style-destination pairs. |
| * |
| * @see mx.styles.IAdvancedStyleClient |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public class StyleProxy implements IAdvancedStyleClient |
| { |
| include "../core/Version.as"; |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Constructor |
| // |
| //-------------------------------------------------------------------------- |
| |
| /** |
| * Constructor. |
| * |
| * @param source The object that implements the IStyleClient interface. |
| * @param filterMap The set of styles to pass from the source to the subcomponent. |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function StyleProxy(source:IStyleClient, filterMap:Object) |
| { |
| super(); |
| |
| this.filterMap = filterMap; |
| this.source = source; |
| } |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Properties |
| // |
| //-------------------------------------------------------------------------- |
| |
| //---------------------------------- |
| // filterMap |
| //---------------------------------- |
| |
| /** |
| * @private |
| * Storage for the filterMap property. |
| */ |
| private var _filterMap:Object; |
| |
| /** |
| * A set of string pairs. The first item of the string pair is the name of the style |
| * in the source component. The second item of the String pair is the name of the style |
| * in the subcomponent. With this object, you can map a particular style in the parent component |
| * to a different style in the subcomponent. This is useful if both the parent |
| * component and the subcomponent share the same style, but you want to be able to |
| * control the values seperately. |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function get filterMap():Object |
| { |
| return _filterMap; |
| } |
| |
| /** |
| * @private |
| */ |
| public function set filterMap(value:Object):void |
| { |
| _filterMap = value; |
| } |
| |
| //---------------------------------- |
| // source |
| //---------------------------------- |
| |
| /** |
| * @private |
| * Storage for the source property. |
| */ |
| private var _source:IStyleClient; |
| |
| /** |
| * @private |
| */ |
| private var _advancedSource:IAdvancedStyleClient; |
| |
| /** |
| * The object that implements the IStyleClient interface. This is the object |
| * that is being proxied. |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function get source():IStyleClient |
| { |
| return _source; |
| } |
| |
| /** |
| * @private |
| */ |
| public function set source(value:IStyleClient):void |
| { |
| _source = value; |
| _advancedSource = value as IAdvancedStyleClient; |
| } |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Properties - IStyleClient |
| // |
| //-------------------------------------------------------------------------- |
| |
| //---------------------------------- |
| // className |
| //---------------------------------- |
| |
| /** |
| * @copy mx.styles.IStyleClient#className |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function get className():String |
| { |
| return _source.className; |
| } |
| |
| //---------------------------------- |
| // inheritingStyles |
| //---------------------------------- |
| |
| /** |
| * @copy mx.styles.IStyleClient#inheritingStyles |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function get inheritingStyles():Object |
| { |
| return _source.inheritingStyles; |
| } |
| |
| /** |
| * @private |
| */ |
| public function set inheritingStyles(value:Object):void |
| { |
| // This should never happen |
| } |
| |
| //---------------------------------- |
| // nonInheritingStyles |
| //---------------------------------- |
| |
| /** |
| * @copy mx.styles.IStyleClient#nonInheritingStyles |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function get nonInheritingStyles():Object |
| { |
| return null; // This will always need to get reconstructed |
| } |
| |
| /** |
| * @private |
| */ |
| public function set nonInheritingStyles(value:Object):void |
| { |
| // This should never happen |
| } |
| |
| //---------------------------------- |
| // styleDeclaration |
| //---------------------------------- |
| |
| /** |
| * @copy mx.styles.IStyleClient#styleDeclaration |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function get styleDeclaration():CSSStyleDeclaration |
| { |
| return _source.styleDeclaration; |
| } |
| |
| /** |
| * @private |
| */ |
| public function set styleDeclaration(value:CSSStyleDeclaration):void |
| { |
| _source.styleDeclaration = styleDeclaration; |
| } |
| |
| //---------------------------------- |
| // styleName |
| //---------------------------------- |
| |
| /** |
| * @copy mx.styles.ISimpleStyleClient#styleName |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function get styleName():Object |
| { |
| if (_source.styleName is IStyleClient) |
| return new StyleProxy(IStyleClient(_source.styleName), filterMap); |
| else |
| return _source.styleName; |
| } |
| |
| /** |
| * @private |
| */ |
| public function set styleName(value:Object):void |
| { |
| _source.styleName = value; |
| } |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Properties - IAdvancedStyleClient |
| // |
| //-------------------------------------------------------------------------- |
| |
| //---------------------------------- |
| // id |
| //---------------------------------- |
| |
| /** |
| * @copy mx.styles.IAdvancedStyleClient#id |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 10 |
| * @playerversion AIR 1.5 |
| * @productversion Flex 4 |
| */ |
| public function get id():String |
| { |
| return _advancedSource ? _advancedSource.id : null; |
| } |
| |
| //---------------------------------- |
| // styleParent |
| //---------------------------------- |
| |
| /** |
| * @copy mx.styles.IAdvancedStyleClient#styleParent |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 10 |
| * @playerversion AIR 1.5 |
| * @productversion Flex 4 |
| */ |
| public function get styleParent():IAdvancedStyleClient |
| { |
| return _advancedSource ? _advancedSource.styleParent : null; |
| } |
| |
| public function set styleParent(parent:IAdvancedStyleClient):void |
| { |
| |
| } |
| //-------------------------------------------------------------------------- |
| // |
| // Methods - ISimpleStyleClient and IStyleClient |
| // |
| //-------------------------------------------------------------------------- |
| |
| /** |
| * @copy mx.styles.ISimpleStyleClient#styleChanged() |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function styleChanged(styleProp:String):void |
| { |
| return _source.styleChanged(styleProp); |
| } |
| |
| /** |
| * @copy mx.styles.IStyleClient#getStyle() |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function getStyle(styleProp:String):* |
| { |
| return _source.getStyle(styleProp); |
| } |
| |
| /** |
| * @copy mx.styles.IStyleClient#setStyle() |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function setStyle(styleProp:String, newValue:*):void |
| { |
| _source.setStyle(styleProp, newValue); |
| } |
| |
| /** |
| * @copy mx.styles.IStyleClient#clearStyle() |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function clearStyle(styleProp:String):void |
| { |
| _source.clearStyle(styleProp); |
| } |
| |
| /** |
| * @copy mx.styles.IStyleClient#getClassStyleDeclarations() |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function getClassStyleDeclarations():Array |
| { |
| return _source.getClassStyleDeclarations(); |
| } |
| |
| /** |
| * @copy mx.styles.IStyleClient#notifyStyleChangeInChildren() |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function notifyStyleChangeInChildren(styleProp:String, |
| recursive:Boolean):void |
| { |
| return _source.notifyStyleChangeInChildren(styleProp, recursive); |
| } |
| |
| /** |
| * @copy mx.styles.IStyleClient#regenerateStyleCache() |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function regenerateStyleCache(recursive:Boolean):void |
| { |
| _source.regenerateStyleCache(recursive); |
| return; |
| } |
| |
| /** |
| * @copy mx.styles.IStyleClient#registerEffects() |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 9 |
| * @playerversion AIR 1.1 |
| * @productversion Flex 3 |
| */ |
| public function registerEffects(effects:Array):void |
| { |
| return _source.registerEffects(effects); |
| } |
| |
| //-------------------------------------------------------------------------- |
| // |
| // Methods - IAdvancedStyleClient |
| // |
| //-------------------------------------------------------------------------- |
| |
| /** |
| * @copy mx.styles.IAdvancedStyleClient#stylesInitialized() |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 10 |
| * @playerversion AIR 1.5 |
| * @productversion Flex 4 |
| */ |
| public function stylesInitialized():void |
| { |
| if (_advancedSource) |
| _advancedSource.stylesInitialized(); |
| } |
| |
| /** |
| * @copy mx.styles.IAdvancedStyleClient#matchesCSSState() |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 10 |
| * @playerversion AIR 1.5 |
| * @productversion Flex 4 |
| */ |
| public function matchesCSSState(cssState:String):Boolean |
| { |
| return _advancedSource ? _advancedSource.matchesCSSState(cssState) : false; |
| } |
| |
| /** |
| * @copy mx.styles.IAdvancedStyleClient#matchesCSSType() |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 10 |
| * @playerversion AIR 1.5 |
| * @productversion Flex 4 |
| */ |
| public function matchesCSSType(cssType:String):Boolean |
| { |
| return _advancedSource ? _advancedSource.matchesCSSType(cssType) : false; |
| } |
| |
| /** |
| * @inheritDoc |
| * |
| * @langversion 3.0 |
| * @playerversion Flash 10 |
| * @playerversion AIR 2.5 |
| * @productversion Flex 4.6 |
| */ |
| |
| public function hasCSSState():Boolean |
| { |
| return _advancedSource ? _advancedSource.hasCSSState() : false; |
| } |
| |
| } |
| |
| } |