need this too
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/0f744d35 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/0f744d35 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/0f744d35 Branch: refs/heads/spark Commit: 0f744d3568044b1600811f62d0017d6af5f53942 Parents: de73400 Author: Alex Harui <[email protected]> Authored: Fri Feb 12 23:11:01 2016 -0800 Committer: Alex Harui <[email protected]> Committed: Tue Feb 23 21:44:21 2016 -0800 ---------------------------------------------------------------------- .../MX/src/main/flex/mx/styles/StyleProxy.as | 492 +++++++++++++++++++ 1 file changed, 492 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0f744d35/frameworks/projects/MX/src/main/flex/mx/styles/StyleProxy.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/MX/src/main/flex/mx/styles/StyleProxy.as b/frameworks/projects/MX/src/main/flex/mx/styles/StyleProxy.as new file mode 100644 index 0000000..77b4469 --- /dev/null +++ b/frameworks/projects/MX/src/main/flex/mx/styles/StyleProxy.as @@ -0,0 +1,492 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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; + } + +} + +}
