Repository: flex-asjs Updated Branches: refs/heads/refactor-sprite 68ceca582 -> e246c2503
Use host as style source, now that display object is no longer the host. Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/e246c250 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/e246c250 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/e246c250 Branch: refs/heads/refactor-sprite Commit: e246c2503d7d32f934410270df35da9a3b401044 Parents: 68ceca5 Author: yishayw <[email protected]> Authored: Mon Aug 1 13:25:20 2016 +0300 Committer: yishayw <[email protected]> Committed: Mon Aug 1 13:25:20 2016 +0300 ---------------------------------------------------------------------- .../main/flex/org/apache/flex/core/CSSShape.as | 2 +- .../main/flex/org/apache/flex/core/CSSSprite.as | 142 ++++++++++++++++++- .../main/flex/org/apache/flex/core/UIBase.as | 2 +- .../org/apache/flex/utils/CSSBorderUtils.as | 2 +- .../org/apache/flex/html/beads/CSSButtonView.as | 2 +- .../apache/flex/html/beads/CSSTextButtonView.as | 33 +++-- .../flex/html/beads/SingleLineBorderBead.as | 4 +- .../flex/html/beads/SolidBackgroundBead.as | 18 +-- .../apache/flex/html/beads/TextFieldViewBase.as | 2 +- 9 files changed, 173 insertions(+), 34 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e246c250/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as index 41e690b..c96ba84 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSShape.as @@ -254,7 +254,7 @@ package org.apache.flex.core */ public function draw(w:Number, h:Number):void { - CSSBorderUtils.draw(_shape.graphics, w, h, _shape, state, true); + CSSBorderUtils.draw(_shape.graphics, w, h, this, state, true); } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e246c250/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as index 9ca030e..c9e0742 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/CSSSprite.as @@ -18,10 +18,12 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.flex.core { + import flash.display.DisplayObject; import flash.display.Graphics; import org.apache.flex.core.IChild; import org.apache.flex.events.Event; + import org.apache.flex.events.IEventDispatcher; import org.apache.flex.utils.CSSBorderUtils; /** @@ -35,7 +37,7 @@ package org.apache.flex.core * @productversion FlexJS 0.0 */ COMPILE::SWF - public class CSSSprite extends HTMLElementWrapper implements IStyleableObject, IChild + public class CSSSprite extends HTMLElementWrapper implements IStyleableObject, IChild, IParentIUIBase { /** * Constructor. @@ -156,7 +158,141 @@ package org.apache.flex.core */ public function draw(w:Number, h:Number):void { - CSSBorderUtils.draw($sprite.graphics, w, h, $sprite, state, true); + CSSBorderUtils.draw($sprite.graphics, w, h,this, state, true); } - } + + /** + * @copy org.apache.flex.core.IParent#addElement() + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function addElement(c:Object, dispatchEvent:Boolean = true):void + { + if(_elements == null) + _elements = []; + _elements[_elements.length] = c; + $sprite.addChild(c.$displayObject); + c.parent = this; + if (c is IUIBase) + { + IUIBase(c).addedToParent(); + } + + } + + /** + * @copy org.apache.flex.core.IParent#addElementAt() + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function addElementAt(c:Object, index:int, dispatchEvent:Boolean = true):void + { + if(_elements == null) + _elements = []; + _elements.splice(index,0,c); + + $sprite.addChildAt(c.$displayObject,index); + c.parent = this; + if (c is IUIBase) + { + IUIBase(c).addedToParent(); + } + } + + /** + * @copy org.apache.flex.core.IParent#getElementAt() + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function getElementAt(index:int):Object + { + if(_elements == null) + return null; + return _elements[index]; + } + + private var _elements:Array; + /** + * @copy org.apache.flex.core.IParent#getElementIndex() + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function getElementIndex(c:Object):int + { + if(_elements == null) + return -1; + return _elements.indexOf(c); + } + + /** + * @copy org.apache.flex.core.IParent#removeElement() + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function removeElement(c:Object, dispatchEvent:Boolean = true):void + { + if(_elements) + { + var idx:int = _elements.indexOf(c); + if(idx>=0) + _elements.splice(idx,1); + c.parent = null; + } + $sprite.removeChild(c.$displayObject); + } + + /** + * @copy org.apache.flex.core.IParent#numElements + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.0 + */ + public function get numElements():int + { + return _elements ? _elements.length : 0; + } + + public function getBeadByType(classOrInterface:Class):IBead + { + // TODO Auto Generated method stub + return null; + } + + public function removeBead(bead:IBead):IBead + { + // TODO Auto Generated method stub + return null; + } + + public function addedToParent():void + { + // TODO Auto Generated method stub + + } + + public function get topMostEventDispatcher():IEventDispatcher + { + // TODO Auto Generated method stub + return null; + } + + + } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e246c250/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as index 3516b2b..7a583a1 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/UIBase.as @@ -1076,7 +1076,7 @@ package org.apache.flex.core if(_elements == null) _elements = []; _elements[_elements.length] = c; - $sprite.addChild(c.$sprite); + $sprite.addChild(c.$displayObject); c.parent = this; if (c is IUIBase) { http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e246c250/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/CSSBorderUtils.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/CSSBorderUtils.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/CSSBorderUtils.as index ef32e1a..25c9d08 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/CSSBorderUtils.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/CSSBorderUtils.as @@ -64,7 +64,7 @@ package org.apache.flex.utils * @productversion FlexJS 0.0 */ public static function draw(g:Graphics, width:Number, height:Number, - host:DisplayObject, state:String = null, + host:Object, state:String = null, drawBackground:Boolean = false, clear:Boolean = true):void { if (clear) http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e246c250/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSButtonView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSButtonView.as index fcd14cc..7775f03 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSButtonView.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSButtonView.as @@ -127,7 +127,7 @@ package org.apache.flex.html.beads CSSBorderUtils.draw(sprite.graphics, DisplayObject(_strand).width + pl + pr, DisplayObject(_strand).height + pt + pb, - _strand as DisplayObject, + _strand, state, true); } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e246c250/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as index 996296c..75d3023 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/CSSTextButtonView.as @@ -18,7 +18,6 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.flex.html.beads { - import flash.display.DisplayObject; import flash.display.Loader; import flash.display.Shape; import flash.display.SimpleButton; @@ -28,19 +27,19 @@ package org.apache.flex.html.beads import flash.text.TextField; import flash.text.TextFieldType; - import org.apache.flex.core.BeadViewBase; + import org.apache.flex.core.BeadViewBase; import org.apache.flex.core.CSSTextField; import org.apache.flex.core.IBeadView; import org.apache.flex.core.IStrand; import org.apache.flex.core.ITextModel; import org.apache.flex.core.IUIBase; + import org.apache.flex.core.UIButtonBase; import org.apache.flex.core.ValuesManager; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; - import org.apache.flex.html.TextButton; import org.apache.flex.utils.CSSUtils; - import org.apache.flex.utils.SolidBorderUtil; - import org.apache.flex.utils.StringTrimmer; + import org.apache.flex.utils.SolidBorderUtil; + import org.apache.flex.utils.StringTrimmer; /** * The CSSTextButtonView class is the default view for @@ -87,6 +86,10 @@ package org.apache.flex.html.beads overSprite.addChild(overTextField.$textField); } + private function get host():IUIBase + { + return _strand as IUIBase; + } private var textModel:ITextModel; private var shape:Shape; @@ -118,10 +121,10 @@ package org.apache.flex.html.beads upTextField.parentHandlesPadding = true; downTextField.parentHandlesPadding = true; overTextField.parentHandlesPadding = true; - SimpleButton(value).upState = upSprite; - SimpleButton(value).downState = downSprite; - SimpleButton(value).overState = overSprite; - SimpleButton(value).hitTestState = shape; + (value as UIButtonBase).$button.upState = upSprite; + (value as UIButtonBase).$button.downState = downSprite; + (value as UIButtonBase).$button.overState = overSprite; + (value as UIButtonBase).$button.hitTestState = shape; if (textModel.text !== null) text = textModel.text; if (textModel.html !== null) @@ -202,10 +205,10 @@ package org.apache.flex.html.beads var paddingRight:Object = ValuesManager.valuesImpl.getValue(_strand, "padding-right", state); var paddingTop:Object = ValuesManager.valuesImpl.getValue(_strand, "padding-top", state); var paddingBottom:Object = ValuesManager.valuesImpl.getValue(_strand, "padding-bottom", state); - var pl:Number = CSSUtils.getLeftValue(paddingLeft, padding, DisplayObject(_strand).width); - var pr:Number = CSSUtils.getRightValue(paddingRight, padding, DisplayObject(_strand).width); - var pt:Number = CSSUtils.getTopValue(paddingTop, padding, DisplayObject(_strand).height); - var pb:Number = CSSUtils.getBottomValue(paddingBottom, padding, DisplayObject(_strand).height); + var pl:Number = CSSUtils.getLeftValue(paddingLeft, padding, host.$displayObject.width); + var pr:Number = CSSUtils.getRightValue(paddingRight, padding, host.$displayObject.width); + var pt:Number = CSSUtils.getTopValue(paddingTop, padding, host.$displayObject.height); + var pb:Number = CSSUtils.getBottomValue(paddingBottom, padding, host.$displayObject.height); var backgroundColor:Object = ValuesManager.valuesImpl.getValue(_strand, "background-color", state); var bgColor:uint; @@ -315,8 +318,8 @@ package org.apache.flex.html.beads private function updateHitArea():void { - var useWidth:uint = Math.max(DisplayObject(_strand).width, upTextField.textWidth); - var useHeight:uint = Math.max(DisplayObject(_strand).height, upTextField.textHeight); + var useWidth:uint = Math.max(host.$displayObject.width, upTextField.textWidth); + var useHeight:uint = Math.max(host.$displayObject.height, upTextField.textHeight); shape.graphics.clear(); shape.graphics.beginFill(0xCCCCCC); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e246c250/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SingleLineBorderBead.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SingleLineBorderBead.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SingleLineBorderBead.as index 03bb682..3663b56 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SingleLineBorderBead.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SingleLineBorderBead.as @@ -75,7 +75,7 @@ package org.apache.flex.html.beads private function changeHandler(event:Event):void { var host:UIBase = UIBase(_strand); - var g:Graphics = host.$sprite.graphics; + var g:Graphics = (host.$displayObject as Object).graphics as Graphics; var w:Number = host.width; var h:Number = host.height; var state:String; @@ -85,7 +85,7 @@ package org.apache.flex.html.beads var gd:IGraphicsDrawing = _strand.getBeadByType(IGraphicsDrawing) as IGraphicsDrawing; if( this == gd ) g.clear(); - CSSBorderUtils.draw(g, w, h, host.$sprite, state, false, false); + CSSBorderUtils.draw(g, w, h, host, state, false, false); } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e246c250/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SolidBackgroundBead.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SolidBackgroundBead.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SolidBackgroundBead.as index a162669..6dade4d 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SolidBackgroundBead.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/SolidBackgroundBead.as @@ -18,17 +18,17 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.flex.html.beads { + import flash.display.Graphics; import flash.display.Sprite; - import flash.display.Graphics; - - import org.apache.flex.core.IBead; + + import org.apache.flex.core.IBead; import org.apache.flex.core.IBeadView; import org.apache.flex.core.ILayoutChild; - import org.apache.flex.core.IStrand; - import org.apache.flex.core.IUIBase; - import org.apache.flex.core.ValuesManager; - import org.apache.flex.events.Event; - import org.apache.flex.events.IEventDispatcher; + import org.apache.flex.core.IStrand; + import org.apache.flex.core.IUIBase; + import org.apache.flex.core.ValuesManager; + import org.apache.flex.events.Event; + import org.apache.flex.events.IEventDispatcher; /** * The SolidBackgroundBead class draws a solid filled background. @@ -177,7 +177,7 @@ package org.apache.flex.html.beads private function changeHandler(event:Event):void { - var g:Graphics = Sprite(host).graphics; + var g:Graphics = (host.$displayObject as Object).graphics as Graphics; var w:Number = host.width; var h:Number = host.height; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e246c250/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as index 6ccbd43..ead9d7b 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/TextFieldViewBase.as @@ -95,7 +95,7 @@ package org.apache.flex.html.beads IEventDispatcher(_strand).addEventListener("widthChanged", widthChangeHandler); IEventDispatcher(_strand).addEventListener("heightChanged", heightChangeHandler); IEventDispatcher(_strand).addEventListener("sizeChanged", sizeChangeHandler); - UIBase(value).$sprite.addChild(_textField.$textField); + UIBase(value).addElement(_textField); if (_textModel.text !== null) text = _textModel.text; if (_textModel.html !== null)
