Added missing pieces for TextBlock management
Fixed bug in GroupElement.replaceElements()


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/f4276e0d
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/f4276e0d
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/f4276e0d

Branch: refs/heads/feature/dragAndDrop
Commit: f4276e0dd628a0a3a22a33d1890ea3c1e1943b5a
Parents: daca90f
Author: Harbs <ha...@in-tools.com>
Authored: Sun Aug 27 07:46:55 2017 +0300
Committer: Harbs <ha...@in-tools.com>
Committed: Sun Aug 27 07:46:55 2017 +0300

----------------------------------------------------------------------
 .../apache/flex/text/engine/ContentElement.as   | 25 ++++++++++++++++----
 .../org/apache/flex/text/engine/GroupElement.as | 21 ++++++++++++++--
 .../org/apache/flex/text/engine/ITextBlock.as   |  3 +++
 .../flex/org/apache/flex/text/html/TextBlock.as |  4 ++++
 4 files changed, 47 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f4276e0d/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ContentElement.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ContentElement.as
 
b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ContentElement.as
index 1b35305..e1358a4 100644
--- 
a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ContentElement.as
+++ 
b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ContentElement.as
@@ -44,10 +44,18 @@ package org.apache.flex.text.engine
                /**
                 * The parent
                 */
-               public function get groupElement() : GroupElement
+               private var _groupElement:GroupElement;
+               public function get groupElement():GroupElement
                {
+                       if(_groupElement)
+                               return _groupElement.getElementIndex(this) < 0 
? null : _groupElement;
                        return null;
                }
+               public function set groupElement(value:GroupElement):void
+               {
+                       _groupElement = value;
+               }
+               
                public function get rawText() : String
                {
                        return null;
@@ -56,13 +64,22 @@ package org.apache.flex.text.engine
                {
                        return null;
                }
-               public function get textBlock() : ITextBlock
+
+               private var _textBlock:ITextBlock;
+               public function get textBlock():ITextBlock
                {
-                       return null;
+                       if(groupElement)
+                               return groupElement.textBlock;
+                       return _textBlock;
                }
+               public function set textBlock(value:ITextBlock):void
+               {
+                       _textBlock = value;
+               }
+               
                public function get textBlockBeginIndex() : int
                {
-                       return null;
+                       return textBlock ? textBlock.getRelativeStart(this) : 0;
                }
 
                public var textRotation : String

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f4276e0d/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/GroupElement.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/GroupElement.as
 
b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/GroupElement.as
index a61c97f..7d5d928 100644
--- 
a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/GroupElement.as
+++ 
b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/GroupElement.as
@@ -20,6 +20,7 @@ package org.apache.flex.text.engine
 {
        import org.apache.flex.events.EventDispatcher;
        import org.apache.flex.text.engine.TextElement;
+       import org.apache.flex.text.engine.GroupElement;
        
        public class GroupElement extends ContentElement
        {
@@ -27,7 +28,10 @@ package org.apache.flex.text.engine
                {
                        super(elementFormat, eventMirror, textRotation);
                        if(elements)
+                       {
                                _elements = elements;
+                               setElementsGroup(this);
+                       }       
                        else
                                _elements = new Vector.<ContentElement>();
                }
@@ -67,6 +71,7 @@ package org.apache.flex.text.engine
                }
                public function replaceElements(beginIndex:int, endIndex:int, 
newElements:Vector.<ContentElement>):Vector.<ContentElement>
                {
+                       setElementsGroup(null);
             COMPILE::SWF
             {
                 var args:Array = [beginIndex, endIndex-beginIndex];
@@ -79,15 +84,25 @@ package org.apache.flex.text.engine
             }
             COMPILE::JS
             {
-                       var args:Array = [beginIndex, 
endIndex-beginIndex].concat(newElements);
+                       var args:Array = [beginIndex, endIndex-beginIndex];
+                               // don't concat null
+                               if(newElements)
+                                       args = args.concat(newElements);
                        // _elements.splice(beginIndex,endIndex-beginIndex);
             }
-            _elements.splice.apply(_elements, args);                    
+            _elements.splice.apply(_elements, args);
+                       setElementsGroup(this);
                        return _elements;
                }
                public function setElements(value:Vector.<ContentElement>):void
                {
                        _elements = value;
+                       setElementsGroup(this);
+               }
+               private function setElementsGroup(group:GroupElement):void
+               {
+                       for(var i:int=0; i<_elements.length; i++)
+                               _elements[i].groupElement = group;
                }
                public function splitTextElement(elementIndex:int, 
splitIndex:int):TextElement
                {
@@ -101,7 +116,9 @@ package org.apache.flex.text.engine
                        var nextText:String = 
textElem.rawText.substr(splitIndex);
                        var newElem:TextElement = new 
TextElement(nextText,textElem.elementFormat,textElem.eventMirror,textElem.textRotation);
                        textElem.text = firstText;
+                       newElem.groupElement = this;
                        _elements.splice(elementIndex+1,0,newElem);
+                       
                        return newElem;
                }
                public function ungroupElements(groupIndex:int):void

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f4276e0d/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ITextBlock.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ITextBlock.as
 
b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ITextBlock.as
index 7f9be7c..8d51b90 100644
--- 
a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ITextBlock.as
+++ 
b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/engine/ITextBlock.as
@@ -19,6 +19,7 @@
 package org.apache.flex.text.engine
 {
        import org.apache.flex.text.engine.ITextFactory;
+       import org.apache.flex.text.engine.ContentElement;
 
        public interface ITextBlock
        {
@@ -64,5 +65,7 @@ package org.apache.flex.text.engine
                function releaseLineCreationData():void;
                function releaseLines(firstLine:ITextLine, 
lastLine:ITextLine):void;
 
+               function getRelativeStart(element:ContentElement):int;
+
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/f4276e0d/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextBlock.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextBlock.as 
b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextBlock.as
index cb9cd5d..45f461a 100644
--- 
a/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextBlock.as
+++ 
b/frameworks/projects/Text/src/main/flex/org/apache/flex/text/html/TextBlock.as
@@ -279,6 +279,10 @@ package org.apache.flex.text.html
                {
                        lines.length = 0;
                }
+               public function getRelativeStart(element:ContentElement):int
+               {
+                       return 0;
+               }
 
        }
 }
\ No newline at end of file

Reply via email to