Repository: flex-asjs
Updated Branches:
  refs/heads/tlf 3ea20315c -> 495cc0cd7


Implemented GroupElement methods


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

Branch: refs/heads/tlf
Commit: 3ec05bc17121245822f857a6c75d38d367993053
Parents: 3ea2031
Author: Harbs <[email protected]>
Authored: Wed May 3 10:30:55 2017 +0300
Committer: Harbs <[email protected]>
Committed: Wed May 3 10:30:55 2017 +0300

----------------------------------------------------------------------
 .../org/apache/flex/text/engine/GroupElement.as | 54 +++++++++++++++++---
 1 file changed, 46 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/3ec05bc1/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 10ae494..7d6681b 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
@@ -19,30 +19,43 @@
 package org.apache.flex.text.engine
 {
        import org.apache.flex.events.EventDispatcher;
+       import org.apache.flex.text.engine.TextElement;
        
        public class GroupElement extends ContentElement
        {
                public function GroupElement(elements:Vector.<ContentElement> = 
null, elementFormat:ElementFormat = null, eventMirror:EventDispatcher = null, 
textRotation:String = "rotate0")
                {
                        super(elementFormat, eventMirror, textRotation);
+                       if(elements)
+                               _elements = elements;
+                       else
+                               _elements = new Vector.<ContentElement>();
                }
-               private var _elementCount:int=0;
                public function get elementCount():int
                {
-                       return _elementCount;
+                       return _elements.length;
                }
-
+               private var _elements:Vector.<ContentElement>;
                public function getElementAt(index:int):ContentElement
                {
-                       return null;
+                       return _elements[index];
                }
                public function 
getElementAtCharIndex(charIndex:int):ContentElement
                {
+                       var curIdx:int = 0;
+                       var len:int = elementCount;
+                       for(var i:int=0;i<len;i++)
+                       {
+                               curIdx += _elements[i].rawText.length;
+                               if(curIdx > charIndex)
+                                       return _elements[i];
+                       }
+
                        return null;
                }
                public function getElementIndex(element:ContentElement):int
                {
-                       return -1;
+                       return _elements.indexOf(element);
                }
                public function groupElements(beginIndex:int, 
endIndex:int):GroupElement
                {
@@ -54,20 +67,45 @@ package org.apache.flex.text.engine
                }
                public function replaceElements(beginIndex:int, endIndex:int, 
newElements:Vector.<ContentElement>):Vector.<ContentElement>
                {
-                       return null;
+                       //TODO will this work correctly in Flash? -- using 
Array.concat with a Vector and Vector splice with an array.
+                       var args:Array = [beginIndex, 
endIndex-beginIndex].concat(newElements);
+                       _elements.splice.apply(_elements, args);
+                       // _elements.splice(beginIndex,endIndex-beginIndex);
+                       return _elements;
                }
                public function setElements(value:Vector.<ContentElement>):void
                {
-                       //TODO
+                       _elements = value;
                }
                public function splitTextElement(elementIndex:int, 
splitIndex:int):TextElement
                {
-                       return null;
+                       var elem:ContentElement = _elements[elementIndex];
+                       if(!elem is TextElement)
+                               throw new Error("Specified element is not a 
TextElement");
+                       var textElem:TextElement  = elem as TextElement;
+                       if(splitIndex >= textElem.rawText.length)
+                               throw new Error("Split index is out of range");
+                       var firstText:String = 
textElem.rawText.substr(0,splitIndex);
+                       var nextText:String = 
textElem.rawText.substr(splitIndex);
+                       var newElem:TextElement = new 
TextElement(nextText,textElem.elementFormat,textElem.eventMirror,textElem.textRotation);
+                       textElem.text = firstText;
+                       _elements.splice(elementIndex+1,0,newElem);
+                       return newElem;
                }
                public function ungroupElements(groupIndex:int):void
                {
                        //TODO
                }
+               override public function get rawText():String
+               {
+                       var val:String = "";
+                       var len:int = elementCount;
+                       for(var i:int = 0;i<len;i++)
+                       {
+                               val += _elements[i].rawText;
+                       }
+                       return val;
+               }
 
        }
 }
\ No newline at end of file

Reply via email to