http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarThumbOverSkin.as
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarThumbOverSkin.as
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarThumbOverSkin.as
new file mode 100644
index 0000000..48aa83a
--- /dev/null
+++ 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarThumbOverSkin.as
@@ -0,0 +1,89 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flashx.textLayout.ui.styles
+{
+       import mx.skins.RectangularBorder;
+       import mx.utils.GraphicsUtil;
+       import flash.display.LineScaleMode;
+       import flash.display.CapsStyle;
+       
+       public class ScrollbarThumbOverSkin extends RectangularBorder
+       {
+               public function ScrollbarThumbOverSkin()
+               {
+                       super();
+               }
+               
+               override public function get measuredWidth():Number
+               {
+                       return 11;
+               }
+               
+               override public function get measuredHeight():Number
+               {
+                       return 10;
+               }
+               
+               override protected function updateDisplayList(w:Number, 
h:Number):void
+               {
+                       super.updateDisplayList(w, h);
+                       
+                       var thumbFill:uint = 0x222222;
+                       var thumbFillAlpha:Number = 1.0;
+                       var thumbStroke:uint = 0x2A2A2A;
+                       var thumbStrokeAlpha:Number = 1.0;
+
+                       var trackStroke:uint = 0x2A2A2A;
+                       var trackStrokeAlpha:Number = 1.0;
+                                               
+                       if (getStyle("thumbOverFill") != undefined)
+                               thumbFill = getStyle("thumbOverFill");
+                       if (getStyle("thumbOverFillAlpha") != undefined)
+                               thumbFillAlpha = getStyle("thumbOverFillAlpha");
+                       if (getStyle("thumbOverStroke") != undefined)
+                               thumbStroke = getStyle("thumbOverStroke");
+                       if (getStyle("thumbOverStrokeAlpha") != undefined)
+                               thumbStrokeAlpha = 
getStyle("thumbOverStrokeAlpha");
+                       if (getStyle("trackStroke") != undefined)
+                               trackStroke = getStyle("trackStroke");
+                       if (getStyle("trackStrokeAlpha") != undefined)
+                               trackStrokeAlpha = getStyle("trackStrokeAlpha");
+
+                       graphics.clear();
+                       // draw the top line of the thumb to match the track
+                       graphics.lineStyle(1, trackStroke, trackStrokeAlpha);
+                       graphics.moveTo(0, 0);
+                       graphics.lineTo(w-1, 0);
+
+                       // fill in the thumb
+                       graphics.beginFill(thumbFill, thumbFillAlpha);
+                       graphics.drawRect(0, 0, w-1, h-2);
+                       graphics.endFill();
+                       
+                       // draw the border of the thumb
+                       graphics.lineStyle(1, thumbStroke, thumbStrokeAlpha);
+                       graphics.drawRect(0, 1, w-1, h-3);
+                       
+                       // draw the bottom line of the thumb to match the track
+                       graphics.lineStyle(1, trackStroke, trackStrokeAlpha);
+                       graphics.moveTo(0, h-1);
+                       graphics.lineTo(w, h-1);
+                       
+               }
+       }}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarThumbUpSkin.as
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarThumbUpSkin.as
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarThumbUpSkin.as
new file mode 100644
index 0000000..450fd3a
--- /dev/null
+++ 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarThumbUpSkin.as
@@ -0,0 +1,89 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flashx.textLayout.ui.styles
+{
+       import mx.skins.RectangularBorder;
+       import mx.utils.GraphicsUtil;
+       import flash.display.LineScaleMode;
+       import flash.display.CapsStyle;
+       
+       public class ScrollbarThumbUpSkin extends RectangularBorder
+       {
+               public function ScrollbarThumbUpSkin()
+               {
+                       super();
+               }
+               
+               override public function get measuredWidth():Number
+               {
+                       return 11;
+               }
+               
+               override public function get measuredHeight():Number
+               {
+                       return 10;
+               }
+               
+               override protected function updateDisplayList(w:Number, 
h:Number):void
+               {
+                       super.updateDisplayList(w, h);
+                       
+                       var thumbFill:uint = 0x222222;
+                       var thumbFillAlpha:Number = 1.0;
+                       var thumbStroke:uint = 0x2A2A2A;
+                       var thumbStrokeAlpha:Number = 1.0;
+
+                       var trackStroke:uint = 0x2A2A2A;
+                       var trackStrokeAlpha:Number = 1.0;
+                                               
+                       if (getStyle("thumbFill") != undefined)
+                               thumbFill = getStyle("thumbFill");
+                       if (getStyle("thumbFillAlpha") != undefined)
+                               thumbFillAlpha = getStyle("thumbFillAlpha");
+                       if (getStyle("thumbStroke") != undefined)
+                               thumbStroke = getStyle("thumbStroke");
+                       if (getStyle("thumbStrokeAlpha") != undefined)
+                               thumbStrokeAlpha = getStyle("thumbStrokeAlpha");
+                       if (getStyle("trackStroke") != undefined)
+                               trackStroke = getStyle("trackStroke");
+                       if (getStyle("trackStrokeAlpha") != undefined)
+                               trackStrokeAlpha = getStyle("trackStrokeAlpha");
+
+                       graphics.clear();
+                       // draw the top line of the thumb to match the track
+                       graphics.lineStyle(1, trackStroke, trackStrokeAlpha);
+                       graphics.moveTo(0, 0);
+                       graphics.lineTo(w-1, 0);
+
+                       // fill in the thumb
+                       graphics.beginFill(thumbFill, thumbFillAlpha);
+                       graphics.drawRect(0, 0, w-1, h-2);
+                       graphics.endFill();
+                       
+                       // draw the border of the thumb
+                       graphics.lineStyle(1, thumbStroke, thumbStrokeAlpha);
+                       graphics.drawRect(0, 1, w-1, h-3);
+                       
+                       // draw the bottom line of the thumb to match the track
+                       graphics.lineStyle(1, trackStroke, trackStrokeAlpha);
+                       graphics.moveTo(0, h-1);
+                       graphics.lineTo(w, h-1);
+                       
+               }
+       }}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarTrackSkin.as
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarTrackSkin.as
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarTrackSkin.as
new file mode 100644
index 0000000..d822b91
--- /dev/null
+++ 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarTrackSkin.as
@@ -0,0 +1,68 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flashx.textLayout.ui.styles
+{
+       import flash.display.CapsStyle;
+       import flash.display.LineScaleMode;
+       
+       import mx.skins.RectangularBorder;
+
+       public class ScrollbarTrackSkin extends RectangularBorder
+       {
+               public function ScrollbarTrackSkin()
+               {
+                       super();
+               }
+               
+               override public function get measuredWidth():Number
+               {
+                       return 13;
+               }
+               
+               override public function get measuredHeight():Number
+               {
+                       return 10;
+               }
+               
+               override protected function updateDisplayList(w:Number, 
h:Number):void
+               {
+                       super.updateDisplayList(w, h);
+                       
+                       var trackFill:uint = 0x000000;
+                       var trackFillAlpha:Number = 1.0;
+                       var trackStroke:uint = 0x2A2A2A;
+                       var trackStrokeAlpha:Number = 1.0;
+                       
+                       if (getStyle("trackFill") != undefined)
+                               trackFill = getStyle("trackFill");
+                       if (getStyle("trackFillAlpha") != undefined)
+                               trackFillAlpha = getStyle("trackFillAlpha");
+                       if (getStyle("trackStroke") != undefined)
+                               trackStroke = getStyle("trackStroke");
+                       if (getStyle("trackStrokeInnerAlpha") != undefined)
+                               trackStrokeAlpha = getStyle("trackStrokeAlpha");
+
+                       graphics.clear();
+                       graphics.beginFill(trackFill, trackFillAlpha);
+                       graphics.drawRect(0, 0, w-1, h);
+                       graphics.endFill();
+                       graphics.lineStyle(1, trackStroke, trackStrokeAlpha, 
true, LineScaleMode.NONE, CapsStyle.SQUARE);
+                       graphics.drawRect(0, 0, w-1, h);
+               }
+       }}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarUpArrowUpSkin.as
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarUpArrowUpSkin.as
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarUpArrowUpSkin.as
new file mode 100644
index 0000000..f9b66bc
--- /dev/null
+++ 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/flashx/textLayout/ui/styles/ScrollbarUpArrowUpSkin.as
@@ -0,0 +1,45 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flashx.textLayout.ui.styles
+{
+       import mx.skins.RectangularBorder;
+
+       public class ScrollbarUpArrowUpSkin extends RectangularBorder
+       {
+               public function ScrollbarUpArrowUpSkin()
+               {
+                       super();
+               }
+               
+               override public function get measuredWidth():Number
+               {
+                       return 13;
+               }
+               
+               override public function get measuredHeight():Number
+               {
+                       return 14;
+               }
+               
+               override protected function updateDisplayList(w:Number, 
h:Number):void
+               {
+                       super.updateDisplayList(w, h);
+               }
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FeatureSetChangeEvent.as
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FeatureSetChangeEvent.as 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FeatureSetChangeEvent.as
new file mode 100644
index 0000000..811dd37
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FeatureSetChangeEvent.as
@@ -0,0 +1,42 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 textEditBar
+{
+import flash.events.Event;
+import flashx.textLayout.elements.TextFlow;
+
+public class FeatureSetChangeEvent extends Event
+{
+       public const FEATURE_SET:String = "featureSet";
+       
+       public var featureSet:String;
+
+       public function FeatureSetChangeEvent(newFeatureSet:String, type:String 
= FEATURE_SET,
+                                                         bubbles:Boolean = 
false,
+                                                         cancelable:Boolean = 
false)
+       {
+               super(type, bubbles, cancelable);
+               featureSet = newFeatureSet;
+       }
+       override public function clone():Event
+       {
+               return new FeatureSetChangeEvent(featureSet, type, bubbles, 
cancelable);
+       }
+}              // end class
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileEvent.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileEvent.as 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileEvent.as
new file mode 100644
index 0000000..4832d1f
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileEvent.as
@@ -0,0 +1,43 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 textEditBar
+{
+import flash.events.Event;
+import flash.net.FileReference;
+
+public class FileEvent extends Event
+{
+       public var fileName:FileReference;
+       
+       public const FILE_CHOOSE:String = "fileChoose";
+
+       public function FileEvent(newFileName:FileReference, type:String = 
FILE_CHOOSE,
+                                                         bubbles:Boolean = 
false,
+                                                         cancelable:Boolean = 
false)
+       {
+               super(type, bubbles, cancelable);
+               fileName = newFileName;
+       }
+       
+       override public function clone():Event
+       {
+               return new FileEvent(fileName, type, bubbles, cancelable);
+       }
+}              // end class
+}              // end package
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileIOHelper.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileIOHelper.as 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileIOHelper.as
new file mode 100644
index 0000000..1d239bc
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileIOHelper.as
@@ -0,0 +1,268 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 textEditBar
+{
+       import flash.display.DisplayObject;
+       import flash.events.Event;
+       import flash.events.IOErrorEvent;
+       import flash.net.FileReference;
+       
+       import flashx.textLayout.conversion.ConversionType;
+       import flashx.textLayout.conversion.ITextExporter;
+       import flashx.textLayout.conversion.ITextImporter;
+       import flashx.textLayout.conversion.TextConverter;
+       import flashx.textLayout.debug.assert;
+       import flashx.textLayout.elements.TextFlow;
+       
+       import mx.managers.CursorManager;
+       import mx.managers.PopUpManager;
+       import mx.rpc.events.ResultEvent;
+       import mx.rpc.http.mxml.HTTPService;
+       
+       import textEditBar.StatusPopup;
+       
+       public class FileIOHelper
+       {
+               static public var parentWindow:DisplayObject;
+               static public var changeContent:Function;
+
+               static private var _openedFile:String;
+               
+               // called when the app has a specific file it wants to read (at 
startup)
+               static public function fileOpen(fileName:String):void
+               {
+                       var localHTTP:HTTPService = new HTTPService();
+                       localHTTP.url = fileName;
+                       _openedFile = fileName;
+                       localHTTP.method = "GET";
+                       localHTTP.resultFormat="text"
+                       localHTTP.showBusyCursor=true;
+                       
localHTTP.addEventListener(ResultEvent.RESULT,parseIntoFlowFromHTTP,false,0,true);
+                       
localHTTP.addEventListener(IOErrorEvent.IO_ERROR,errorOnReadFromHTTP,false,0,true);
+                       localHTTP.send();
+               }
+
+               // called when user picks a file
+               static public function fileChoose(fileName:FileReference) : void
+               {
+                       
fileName.addEventListener(Event.COMPLETE,onFileReferenceLoadComplete,false,0,true);
+                       
fileName.addEventListener(IOErrorEvent.IO_ERROR,errorOnReadFromFileReference,false,0,true);
+                       fileName.load();
+               }
+               
+               static private function 
onFileReferenceLoadComplete(event:Event):void
+               {
+                       var fileReference:FileReference = 
FileReference(event.target);
+                       _extension= 
getExtension(fileReference.name).toLowerCase();
+                       _fileData = String(fileReference.data);
+                       parseCurrentDataWithExtension();
+               }
+
+               static private function 
errorOnReadFromFileReference(event:IOErrorEvent):void
+        {
+               var curFileReference:FileReference = 
FileReference(event.target);
+               // Text content will be an error string
+                       var errorString:String = "Error reading file " + 
curFileReference.name;
+                       errorString += "\n";
+                       errorString += event.toString();
+                       _extension = "txt";
+                       _fileData = errorString;
+                       parseCurrentDataWithExtension();
+                       //CursorManager.removeBusyCursor(); //get rid of 
hourglass cursor.                      
+               }
+               
+               static private function 
parseIntoFlowFromHTTP(event:ResultEvent):void 
+               {
+                       _fileData = String(event.result);
+                       _extension = getExtension(_openedFile).toLowerCase();
+                       parseCurrentDataWithExtension();
+                       _openedFile = null;
+               }
+               
+               static private function errorOnReadFromHTTP(event:Object):void
+               {
+                       // Text content will be an error string
+                       var errorString:String = "Error reading file " + 
_openedFile;
+                       errorString += "\n";
+                       errorString += event.fault;
+                       _extension = "txt";
+                       _fileData = errorString;
+                       parseCurrentDataWithExtension();
+                       CursorManager.removeBusyCursor(); //get rid of 
hourglass cursor. 
+                       _openedFile = null;
+               }
+               
+               static private function getExtension(fileName:String):String
+               {
+                       var dotPos:int = fileName.lastIndexOf(".");
+                       if (dotPos >= 0)
+                               return fileName.substring(dotPos + 1);
+                       return fileName;
+               }
+               
+               // hold onto these two in case we need to recreate textFlow
+               static private var _extension:String;
+               static private var _fileData:String;
+               
+               static public function parseCurrentDataWithExtension():void
+               {
+                       switch (_extension)
+                       {
+                               case "xml":             // use Vellum markup
+                                       parseStringIntoFlow(_fileData, 
TextConverter.TEXT_LAYOUT_FORMAT);
+                                       break;
+                               case "txt":
+                                       parseStringIntoFlow(_fileData, 
TextConverter.PLAIN_TEXT_FORMAT);
+                                       break;
+                               case "html":
+                                       parseStringIntoFlow(_fileData, 
TextConverter.TEXT_FIELD_HTML_FORMAT);
+                                       break;
+
+                       }
+               }
+                               
+               static private function parseStringIntoFlow(source:String, 
format:String):void
+               {
+                       var textImporter:ITextImporter = 
TextConverter.getImporter(format);
+                       var newFlow:TextFlow = 
textImporter.importToFlow(source);
+                       reportImportErrors(textImporter.errors);
+                       // no TextFlow found - Flow will display an empty 
TextFlow by design 
+                       // - alternative is to do some kind of error string
+                       changeContent(newFlow ? newFlow : new TextFlow());
+               } 
+               
+               static private function 
reportImportErrors(errors:Vector.<String>):void
+               {
+                       if (errors)
+                       {
+                               var errorText:String = "ERRORS REPORTED ON 
IMPORT";
+                               for each(var e:String in errors)
+                                       errorText += "\n" + e;
+                                       
+                               var dlg:StatusPopup = new StatusPopup();
+                               dlg.closeFunction = closeStatusPopup;
+
+                               PopUpManager.addPopUp(dlg, parentWindow, true);
+                               PopUpManager.centerPopUp(dlg);
+                               // stick it in the upper left
+                               dlg.x = 0;
+                               dlg.y = 0;
+                       
+                               dlg.textArea.text = errorText;
+                       }
+               }
+               static private function closeStatusPopup(dlg:StatusPopup):void
+               {
+                       PopUpManager.removePopUp(dlg);
+               }
+                       
+               static private function 
importStatusPopupContent(dlg:StatusPopup):void
+               {
+                       switch(dlg.textFormat)
+                       {
+                               case TextConverter.TEXT_LAYOUT_FORMAT:
+                                       _extension = "xml";
+                                       break;
+                               case TextConverter.TEXT_FIELD_HTML_FORMAT:
+                                       _extension = "html";
+                                       break;
+                       }
+                       _fileData = dlg.textArea.text;
+                       parseCurrentDataWithExtension();
+                       PopUpManager.removePopUp(dlg);
+               }
+               
+               static private function 
saveStatusPopupContent(dlg:StatusPopup):void
+               {
+                       var extension:String;
+                       switch(dlg.textFormat)
+                       {
+                               case TextConverter.TEXT_LAYOUT_FORMAT:
+                                       extension = "xml";
+                                       break;
+                               case TextConverter.TEXT_FIELD_HTML_FORMAT:
+                                       extension = "html";
+                                       break;
+                       }
+                       
+                       var fileReference:FileReference = new FileReference();
+                       fileReference.save(dlg.textArea.text,extension == null 
? null : "NewFile."+extension);
+               }
+               
+
+
+               // Export related code
+               static public function textLayoutExport(activeFlow:TextFlow) : 
void
+               {               
+                       export(activeFlow, TextConverter.TEXT_LAYOUT_FORMAT);
+               }
+
+
+               static public function htmlExport(activeFlow:TextFlow) : void
+               {
+                       export(activeFlow, 
TextConverter.TEXT_FIELD_HTML_FORMAT);
+               }
+
+               static private const xmlBoilerPlate:String = '<?xml 
version="1.0" encoding="utf-8"?>\n';
+                                                                               
+               static public function export(activeFlow:TextFlow, 
format:String) : void
+               {
+                       //CONFIG::debug
+                       {       
+                               var originalSettings:Object = XML.settings();
+                               try
+                               {
+                                       XML.ignoreProcessingInstructions = 
false;               
+                                       XML.ignoreWhitespace = false;
+                                       XML.prettyPrinting = false;
+                                       
+                                       
+                                       var exporter:ITextExporter = 
TextConverter.getExporter(format);
+                                       var xmlExport:XML = 
exporter.export(activeFlow, ConversionType.XML_TYPE) as XML;
+                                       var result:String = xmlBoilerPlate + 
xmlExport;                                 
+                                       XML.setSettings(originalSettings);
+                               }
+                               
+                               catch(e:Error)
+                               {
+                                       XML.setSettings(originalSettings);
+                                       throw(e);
+                               }
+                       }
+                       
+                       // show it in the pop-up dialog
+                       var dlg:StatusPopup = new StatusPopup();
+                       dlg.closeFunction = closeStatusPopup;
+                       dlg.importFunction = importStatusPopupContent;
+                       dlg.saveFunction   = saveStatusPopupContent;
+                       dlg.textFormat = format;
+                       
+                       PopUpManager.addPopUp(dlg, parentWindow, true);
+                       PopUpManager.centerPopUp(dlg);
+                       // stick it in the upper left
+                       dlg.x = 0;
+                       dlg.y = 0;
+       
+                       dlg.textArea.text = result.replace(/\u000D\u000A/g, 
"\r"); // workaround for TextArea bug SDK-14797
+               }
+               
+
+
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileServices.mxml
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileServices.mxml 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileServices.mxml
new file mode 100644
index 0000000..343cc94
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/FileServices.mxml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+
+<!--This widget allows the user to enter a file name and when the "ReadFile" 
button is pressed, it 
+reads the file, and passes through the file contents as a ContentEvent. It 
expects an XML file in
+TextLayout format.-->
+
+<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"; xmlns="*" 
creationComplete="handleCreationComplete()" >
+       <mx:Metadata>
+       [Event(name="fileChoose", type="textEditBar.FileEvent")]
+       [Event(name="textLayoutExport", type="flash.events.Event")]
+       [Event(name="htmlExport", type="flash.events.Event")]
+       </mx:Metadata>
+
+  <mx:Script>
+               <![CDATA[
+                       import flash.events.Event;
+                       import flash.system.Capabilities;
+                       import flashx.textLayout.elements.TextFlow;
+                       import mx.events.MenuEvent;
+                       import mx.controls.Alert;
+                       import flashx.textLayout.edit.EditingMode;
+                       import flashx.textLayout.edit.ElementRange;
+                       import flashx.textLayout.edit.ISelectionManager;
+                       import flashx.textLayout.edit.IEditManager;
+                       import flashx.textLayout.BuildInfo;
+                       
+                       public var activeFlow:TextFlow;
+                       
+                       [Bindable]
+                       public var buildString:String = "Build: " + 
BuildInfo.kBuildNumber + "(" + Capabilities.version + ")";
+
+                       internal function handleCreationComplete():void
+                       {
+                               buildLabel.left = (this.x + this.width - 20) - 
buildLabel.width;
+                       }
+                       // Update UI panel in response to change in selection
+                       public function update(range:ElementRange):void
+                       {
+                               if (!activeFlow)
+                                       return;
+                                       
+                       }
+                       
+                       private var fileReference:FileReference;
+                       
+                       public function currentFileName():String
+                       {
+                               return fileReference != null ? 
fileReference.name : null;
+                       }
+                       
+                       public function openDialog():void
+                       {
+                               var markupFilter:FileFilter = new 
FileFilter("Documents","*.xml;*.fxg;*.html");
+                               fileReference = new FileReference();
+                               fileReference.browse([markupFilter]);
+                               
fileReference.addEventListener(Event.SELECT,onFileSelect);
+                       }
+                       
+                       private function onFileSelect(event:Event):void 
+                       {
+                               try {
+                                       dispatchEvent(new 
FileEvent(fileReference));
+                                       //fileReference.load();
+                               } catch (err:Event) {
+                                       Alert.show(err.toString());
+                               }
+                       }
+                  
+           ]]>
+    </mx:Script>
+
+       <mx:Button label="Open..." click="openDialog()"/>
+               
+       <mx:Button id="textLayoutExportButton" label="Markup..." 
click="dispatchEvent(new Event('textLayoutExport'));"/>
+       <mx:Button id="htmlExportButton" label="HTML Markup..." 
click="dispatchEvent(new Event('htmlExport'));"/>
+
+       <mx:Label id="buildLabel" text="{buildString}" fontWeight="bold" 
paddingTop="3" paddingBottom="1"/>
+</mx:HBox>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/GraphicBar.mxml
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/GraphicBar.mxml 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/GraphicBar.mxml
new file mode 100644
index 0000000..1aa5d14
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/GraphicBar.mxml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+
+<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"; 
xmlns:textEditBar="textEditBar.*" 
+       addedToStage="onAddedToStage()" removedFromStage="onRemovedFromStage()" 
horizontalScrollPolicy="off" verticalScrollPolicy="off">
+       
+       <mx:Script>
+               <![CDATA[
+                       import flashx.textLayout.edit.ElementRange;
+                       import flashx.textLayout.edit.IEditManager;
+                       import flashx.textLayout.elements.InlineGraphicElement;
+                       import flashx.textLayout.elements.TextFlow;
+                       import flashx.textLayout.formats.FormatValue;
+                       import flashx.textLayout.tlf_internal;
+                       
+                       use namespace tlf_internal;
+                       
+                       public var activeFlow:TextFlow;
+                       
+                       protected function applyChange():void
+                       {
+                               changeForeignElement(imageURL.text, 
imageWidth.text, imageHeight.text, "none", doChangeImage);                      
    
+                       }
+                       
+                       protected function 
changeForeignElement(foreignElementUrl:String, width:String, height:String, 
float:String, changeCurrent:Boolean):void
+                       {
+                               if (activeFlow && activeFlow.interactionManager 
is IEditManager)
+                               {
+                                       if (changeCurrent)
+                                               
IEditManager(activeFlow.interactionManager).modifyInlineGraphic(foreignElementUrl,
 width, height, float);
+                                       else
+                                               
IEditManager(activeFlow.interactionManager).insertInlineGraphic(foreignElementUrl,
 width, height, float);
+                                       
activeFlow.interactionManager.setFocus();
+                               }
+                       }
+               
+                       protected var doChangeImage:Boolean = false;
+                       
+                       public function update(range:ElementRange):void
+                       {
+                               if (onStage)
+                               {
+                                       if (range ==  null)
+                                               visible = false;
+                                       else
+                                       {
+                                               if (!visible)
+                                                       visible = true;
+
+                                               var 
makeItTheChangeButton:Boolean = false;
+                                               
+                                               // this logic is a complicated 
by the fact that we extend the end of the selection because the FE is at the 
end of the paragraph
+                                               if (range && range.firstLeaf is 
InlineGraphicElement && range.absoluteStart == 
range.firstLeaf.getAbsoluteStart())
+                                               {
+                                                       // two cases just the 
FE and just the FE plus the paragraph terminator
+                                                       if (range.absoluteEnd 
== range.absoluteStart+1 || (range.firstParagraph == range.lastParagraph && 
range.absoluteEnd == range.absoluteStart+2 && range.absoluteEnd == 
range.lastParagraph.getAbsoluteStart() + range.lastParagraph.textLength))
+                                                               
makeItTheChangeButton = true; 
+                                               }
+                                               
+                                               // block selection of just the 
FE
+                                               if (makeItTheChangeButton)
+                                                       
updateForChange(InlineGraphicElement(range.firstLeaf));
+                                               else
+                                                       updateForInsert(range)
+                                       }
+                               }
+                               lastRange = range;      
+                       }
+                       
+                       protected function 
updateForChange(inlineElement:InlineGraphicElement):void
+                       {
+                               var sourceString:String = 
inlineElement.source.toString()
+                               var widthString:String = inlineElement.width 
=== undefined ? FormatValue.AUTO : inlineElement.width.toString();
+                               var heightString:String = inlineElement.height 
=== undefined ? FormatValue.AUTO : inlineElement.height.toString();
+                               doUpdate(sourceString, widthString, 
heightString, true, true);
+                       }
+                       
+                       protected function 
updateForInsert(range:ElementRange):void
+                       {
+                               doUpdate("", 
+                                       
InlineGraphicElement.tlf_internal::widthPropertyDefinition.defaultValue.toString(),
+                                       
InlineGraphicElement.tlf_internal::heightPropertyDefinition.defaultValue.toString(),
+                                       false, range && range.firstLeaf);
+                       }
+                       
+                       private function doUpdate(url:String, width:String, 
height:String, modify:Boolean, enableImage:Boolean):void
+                       {
+                               imageURL.text = url;
+                               imageWidth.text = width;
+                               imageHeight.text = height;
+                               imageButton.label = modify ? "Change" : 
"Insert";
+                               doChangeImage = modify;
+                               imageButton.enabled = enableImage;              
        
+                       }
+
+                       private var onStage:Boolean = false;
+                       private var addedFrameEventListener:Boolean = false;
+                       protected var lastRange:ElementRange = null;
+                       private function onAddedToStage():void
+                       {
+                               // the dataProviders aren't set up yet - delay 
to the frame
+                               onStage = true;
+                               if (!addedFrameEventListener)
+                               {
+                                       addedFrameEventListener = true;
+                                       
addEventListener("enterFrame",onEnterFrame);
+                               }
+                       }
+                               
+                       private function onEnterFrame(p:Event):void
+                       {
+                               
this.removeEventListener("enterFrame",onEnterFrame);
+                               addedFrameEventListener = false;        
+                               
+                               var temp:ElementRange = lastRange;
+                               lastRange = null;
+                               update(temp);
+                                       
+                       }
+                       
+                       private function onRemovedFromStage():void
+                       {
+                               onStage = false;
+                       }
+               ]]>
+       </mx:Script>
+
+       <mx:Label text="Image URL:" fontWeight="bold"/>
+       <mx:TextInput id="imageURL" width="140"/>
+       <mx:Label text="Width:" fontWeight="bold"/>
+       <mx:TextInput id="imageWidth" width="60"/>
+       <mx:Label text="Height:" fontWeight="bold"/>
+       <mx:TextInput id="imageHeight" width="60"/>                     
+       <mx:Button id="imageButton" label="Insert Image" 
+               click="applyChange();" />
+</mx:HBox>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/GraphicChangeEvent.as
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/GraphicChangeEvent.as 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/GraphicChangeEvent.as
new file mode 100644
index 0000000..0128881
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/GraphicChangeEvent.as
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 textEditBar
+{
+       import flash.events.Event;
+       
+       public class GraphicChangeEvent extends Event
+       {
+               private var _imageLink:String;
+               private var _imageWidth:Object;
+               private var _imageHeight:Object;
+               private var _float:String;
+               private var _replaceCurrent:Boolean;    
+               
+               public function GraphicChangeEvent(type:String, 
imageLink:String, imageWidth:Object, imageHeight:Object, float:String, 
replaceCurrent:Boolean = false, bubbles:Boolean=false, cancelable:Boolean=false)
+               {
+                       _imageLink = imageLink;
+                       _imageWidth = imageWidth;
+                       _imageHeight = imageHeight;
+                       _replaceCurrent = replaceCurrent;
+                       _float = float;
+                       super(type, bubbles, cancelable);
+               }
+               
+               override public function clone():Event
+               {
+                       return new GraphicChangeEvent(type, _imageLink, 
_imageWidth, _imageHeight, _float, _replaceCurrent, bubbles, cancelable);
+               }
+               
+               public function get imageLink():String
+               { return _imageLink; }          
+               
+               public function get imageWidth():Object
+               { return _imageWidth; }
+               
+               public function get imageHeight():Object
+               { return _imageHeight; }
+               
+               public function get float():String
+               { return _float; }
+               
+               public function get replaceCurrent():Boolean
+               { return _replaceCurrent; }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/LinkBar.mxml
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/LinkBar.mxml 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/LinkBar.mxml
new file mode 100644
index 0000000..61b8b6f
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/LinkBar.mxml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+
+<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"; 
xmlns:textEditBar="textEditBar.*"
+               addedToStage="onAddedToStage()" 
removedFromStage="onRemovedFromStage()">
+       
+       <mx:Array id="targetArray"> 
+               <mx:String>_blank</mx:String>
+               <mx:String>_self</mx:String>
+               <mx:String>_parent</mx:String>
+               <mx:String>_top</mx:String>
+       </mx:Array>     
+       
+       <mx:Script>
+               <![CDATA[
+                   import mx.controls.Alert;
+                       import flashx.textLayout.edit.ElementRange;
+                       import flashx.textLayout.edit.IEditManager;
+                       import flashx.textLayout.elements.LinkElement;
+                       import flashx.textLayout.elements.FlowElement;
+                       import flashx.textLayout.elements.ParagraphElement;
+                       import flashx.textLayout.events.FlowElementMouseEvent;
+                       import flashx.textLayout.elements.TextFlow;
+                       
+                       public var activeFlow:TextFlow;
+                       
+                       private function changeLink(urlText:String, 
targetText:String, extendToOverlappingLinks:Boolean):void
+                       {
+                               if (activeFlow && activeFlow.interactionManager 
is IEditManager)
+                               {
+                                       
IEditManager(activeFlow.interactionManager).applyLink(urlText, targetText, 
extendToOverlappingLinks);                   
+                                       
activeFlow.interactionManager.setFocus();
+                               }
+                       }
+               
+                   private var onStage:Boolean = false;
+               private var addedFrameEventListener:Boolean = false;
+               private var lastRange:ElementRange;
+               
+                       private function onAddedToStage():void
+                       {
+                               // the dataProviders aren't set up yet - delay 
to the frame
+                               onStage = true;
+                               if (!addedFrameEventListener)
+                               {
+                                       addedFrameEventListener = true;
+                                       
addEventListener("enterFrame",onEnterFrame);
+                               }
+                       }
+               
+                       private function onEnterFrame(p:Event):void
+                       {
+                               
this.removeEventListener("enterFrame",onEnterFrame);
+                               addedFrameEventListener = false;
+                       
+                               update(lastRange);
+                       }
+       
+                       private function onRemovedFromStage():void
+                       {
+                               onStage = false;
+                       }               
+
+                       protected function setTargetCombo(val:String):void
+                       {
+                               var length:uint = 
linkTargetCombo.dataProvider.length;
+               
+                               for (var i:uint = 0; i < length; i++)
+                               {
+                                       if 
(linkTargetCombo.dataProvider.getItemAt(i).toLowerCase() == val.toLowerCase())
+                                       {
+                                               linkTargetCombo.selectedIndex = 
i;
+                                               return;
+                                       }
+                               }
+                               linkTargetCombo.selectedIndex = -1;
+                               linkTargetCombo.validateNow();
+                               linkTargetCombo.text = val;
+                       }
+                                       
+                       public function update(range:ElementRange):void
+                       {
+                               if (!range)
+                               {
+                                       if (onStage)
+                                               visible = false;
+                                       lastRange = null;
+                                       return;
+                               }
+                               
+                               var linkString:String = "";
+                               var linkTarget:String = "";
+                               var linkEl:LinkElement = 
range.firstLeaf.getParentByType(LinkElement) as LinkElement;
+                               if (linkEl != null)
+                               {
+                                       var linkElStart:int = 
linkEl.getAbsoluteStart();
+                                       var linkElEnd:int = linkElStart + 
linkEl.textLength;
+                                       if (linkElEnd < linkElStart)
+                                       {
+                                               var temp:int = linkElStart;
+                                               linkElStart = linkElEnd;
+                                               linkElEnd = temp;
+                                       }
+                                       
+                                       var beginRange:int = 
range.absoluteStart;
+                                       var endRange:int = range.absoluteEnd;
+                                       
+                                       var beginPara:ParagraphElement = 
range.firstParagraph;
+                                       if (endRange == 
(beginPara.getAbsoluteStart() + beginPara.textLength))
+                                       {
+                                               endRange--;
+                                       }
+                                       
+                                       if ((beginRange == endRange) || 
(endRange <= linkElEnd))
+                                       {
+                                               linkString = 
LinkElement(linkEl).href;
+                                               linkTarget = 
LinkElement(linkEl).target;
+                                       }
+                               }
+                               
+                               if (onStage)
+                               {
+                                       if (!visible)
+                                               visible = true;
+                                       linkTextInput.text = linkString ? 
linkString : "";
+                                       setTargetCombo(linkTarget ? linkTarget 
: "");
+                               }
+                               lastRange = range;
+                       }                       
+               ]]>
+       </mx:Script>
+
+       <mx:Label text="Link Url:" fontWeight="bold"/>
+       <mx:TextInput id="linkTextInput" width="140"/>
+       <mx:Label text="Link Target:" fontWeight="bold"/>
+       <mx:ComboBox id="linkTargetCombo" editable="true"
+               selectedIndex="0" dataProvider = "{targetArray}"/>
+       <mx:CheckBox id = "linkExtendCheckBox" label="Extend"/>
+       <mx:Button label="Apply Link" 
+               click="changeLink(linkTextInput.text, linkTargetCombo.text, 
linkExtendCheckBox.selected);" />
+</mx:HBox>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/LinkChangeEvent.as
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/LinkChangeEvent.as 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/LinkChangeEvent.as
new file mode 100644
index 0000000..2c500dc
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/LinkChangeEvent.as
@@ -0,0 +1,51 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 textEditBar
+{
+       import flash.events.Event;
+       
+       public class LinkChangeEvent extends Event
+       {
+               private var _linkText:String;
+               private var _targetText:String;
+               private var _extendToOverlappingLinks:Boolean;
+               
+               public function LinkChangeEvent(type:String, linkText:String, 
targetText:String, extendToOverlappingLinks:Boolean=false, 
bubbles:Boolean=false, cancelable:Boolean=false)
+               {
+                       _linkText = linkText;
+                       _targetText = targetText;
+                       _extendToOverlappingLinks = extendToOverlappingLinks;
+                       super(type, bubbles, cancelable);
+               }
+               
+               override public function clone():Event
+               {
+                       return new LinkChangeEvent(type, _linkText, 
_targetText, _extendToOverlappingLinks, bubbles, cancelable);
+               }
+               
+               public function get linkText():String
+               { return _linkText; }           
+               
+               public function get linkTarget():String
+               { return _targetText; }
+               
+               public function get extendToOverlappingLinks():Boolean
+               { return _extendToOverlappingLinks; }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/SingleContainerView.mxml
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/SingleContainerView.mxml 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/SingleContainerView.mxml
new file mode 100644
index 0000000..85797c2
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/SingleContainerView.mxml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+
+<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"; 
backgroundColor="0xffffff" resize="handleResize()">
+       
+       <mx:Script>
+               <![CDATA[
+               import flashx.textLayout.elements.TextFlow;
+               import flashx.textLayout.compose.StandardFlowComposer;
+               import flashx.textLayout.container.ContainerController;
+               import textEditBar.SpriteWithIME;
+               
+               
+               private var _activeFlow:TextFlow;
+               
+               public function 
changeContainerSetup(newActiveFlow:TextFlow):void
+               {
+                       _activeFlow = newActiveFlow;
+                       if (_activeFlow)
+                       {
+                               if (!_activeFlow.flowComposer)
+                                       _activeFlow.flowComposer = new 
StandardFlowComposer();
+                               if (_activeFlow.flowComposer.numControllers < 1)
+                                       
_activeFlow.flowComposer.addController(new ContainerController(new 
SpriteWithIME()));
+                               
rawChildren.addChild(_activeFlow.flowComposer.getControllerAt(0).container);    
+                               handleResize();
+                       }
+               }
+               
+               public function handleResize():void
+               {
+                       if (!_activeFlow)
+                               return;
+                               
+                       var newFrameWidth:Number = width;
+                       var newFrameHeight:Number = height;
+
+                       var cont:ContainerController = 
_activeFlow.flowComposer.getControllerAt(0);
+                       if (cont.container)
+                               
updateFrameDimensions(cont,0,0,newFrameWidth,newFrameHeight);
+
+                       _activeFlow.flowComposer.updateAllControllers();
+                               
+                       if (_activeFlow.interactionManager && 
_activeFlow.interactionManager.hasSelection())
+                               
_activeFlow.flowComposer.getControllerAt(0).scrollToRange(_activeFlow.interactionManager.activePosition,_activeFlow.interactionManager.anchorPosition);
 
+
+               }
+                               
+               /** helper function to update a frame's dimensions */
+               private function 
updateFrameDimensions(controller:ContainerController,x:Number,y:Number,w:Number,h:Number):void
+               {
+                       var tc:DisplayObject = controller.container;
+                       
+                       if (tc.x != x)
+                               tc.x = x;
+                       if (tc.y != y)
+                               tc.y = y;
+                       controller.setCompositionSize(w,h);
+               }
+               
+               ]]>
+       </mx:Script>
+</mx:Canvas>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/SpriteWithIME.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/SpriteWithIME.as 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/SpriteWithIME.as
new file mode 100644
index 0000000..8abf701
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/SpriteWithIME.as
@@ -0,0 +1,102 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 textEditBar
+{
+       import flash.display.Sprite;
+       
+       import mx.core.IIMESupport;
+       import mx.managers.IFocusManagerComponent;
+
+       public class SpriteWithIME extends Sprite implements IIMESupport, 
IFocusManagerComponent
+       {
+               private var _imeMode:String;
+               
+               public function SpriteWithIME()
+               {
+                       super();
+               }
+               
+               public function get enableIME():Boolean
+               {
+                       return true;
+               }
+               
+               public function get imeMode():String
+               {
+                       return _imeMode;
+               }
+               
+               public function set imeMode(value:String):void
+               {
+                       _imeMode = value;
+               }
+               
+               public function get focusEnabled():Boolean
+               {
+                       return true;
+               }
+               
+               public function set focusEnabled(value:Boolean):void
+               {
+               }
+               
+               // For now! Should be dependent on Configuration.manageTabKey
+               public function get tabFocusEnabled():Boolean
+               {
+                       return true;
+               }
+               
+               public function set tabFocusEnabled(value:Boolean):void
+               {
+               }
+               
+               public function get hasFocusableChildren():Boolean
+               {
+                       return false;
+               }
+               
+               public function set hasFocusableChildren(value:Boolean):void
+               {
+               }
+               
+               public function get mouseFocusEnabled():Boolean
+               {
+                       return false;
+               }
+               
+               /*public function get tabEnabled():Boolean
+               {
+                       return false;
+               }
+               
+               public function get tabIndex():int
+               {
+                       return 0;
+               }*/
+               
+               public function setFocus():void
+               {
+               }
+               
+               public function drawFocus(isFocused:Boolean):void
+               {
+               }
+               
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/StatusPopup.mxml
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/StatusPopup.mxml 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/StatusPopup.mxml
new file mode 100644
index 0000000..850df4c
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/StatusPopup.mxml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"; layout="absolute" 
width="500" height="390" verticalScrollPolicy="off"
+       horizontalScrollPolicy="off">
+       <mx:Script>
+               <![CDATA[
+                       public var closeFunction:Function;
+                       public var textFormat:String;
+                       [Bindable]
+                       public var importFunction:Function;
+                       [Bindable]
+                       public var saveFunction:Function;
+               ]]>
+       </mx:Script>    
+       <mx:TextArea id="textArea" x="0" y="0" width="100%" height="100%" 
fontFamily="_sans">
+       </mx:TextArea>
+       <mx:ControlBar horizontalAlign="center">
+               <mx:Button label="Import" id="cmdImport" 
visible="{importFunction != null}" click="{if (importFunction != null) 
importFunction(this)}"/>
+               <mx:Button label="Save"   id="cmdSave"   visible="{saveFunction 
!= null}" click="{if (saveFunction != null) saveFunction(this)}"/>
+               <mx:Button label="Close"  id="cmdClose"  
click="closeFunction(this)"/>
+       </mx:ControlBar>
+</mx:Panel>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/StyleChangeEvent.as
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/StyleChangeEvent.as 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/StyleChangeEvent.as
new file mode 100644
index 0000000..eb3273c
--- /dev/null
+++ b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/StyleChangeEvent.as
@@ -0,0 +1,46 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 textEditBar
+{
+       import flash.events.Event;
+       
+       import flashx.textLayout.formats.ITextLayoutFormat;
+
+       public class StyleChangeEvent extends Event
+       {
+               private var _attrs:Object;
+               
+               public function StyleChangeEvent(type:String, 
styleAttrs:Object, bubbles:Boolean=false, cancelable:Boolean=false)
+               {
+                       _attrs = styleAttrs;
+                       super(type, bubbles, cancelable);
+               }
+               
+               override public function clone():Event
+               {
+                       return new StyleChangeEvent(type, _attrs, bubbles, 
cancelable);
+               }
+               
+               public function get format():ITextLayoutFormat
+               { return _attrs as ITextLayoutFormat; } 
+               
+               public function get attrs():Object
+               { return _attrs; }
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/%icon_tcy.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/%icon_tcy.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/%icon_tcy.png
new file mode 100644
index 0000000..47c3637
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/%icon_tcy.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/BreakOpportunityType.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/BreakOpportunityType.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/BreakOpportunityType.png
new file mode 100644
index 0000000..565003d
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/BreakOpportunityType.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/EmbedDeleteIcon.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/EmbedDeleteIcon.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/EmbedDeleteIcon.png
new file mode 100644
index 0000000..7894025
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/EmbedDeleteIcon.png 
differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/EmbedDeleteIconDisabled.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/EmbedDeleteIconDisabled.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/EmbedDeleteIconDisabled.png
new file mode 100644
index 0000000..22975eb
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/EmbedDeleteIconDisabled.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignBottom_Sm_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignBottom_Sm_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignBottom_Sm_N.png
new file mode 100644
index 0000000..a6ec4b1
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignBottom_Sm_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignJustify_Sm_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignJustify_Sm_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignJustify_Sm_N.png
new file mode 100644
index 0000000..4c45bc2
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignJustify_Sm_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignMiddle_Sm_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignMiddle_Sm_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignMiddle_Sm_N.png
new file mode 100644
index 0000000..a1f5ae8
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignMiddle_Sm_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignTop_Sm_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignTop_Sm_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignTop_Sm_N.png
new file mode 100644
index 0000000..9981848
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextAlignTop_Sm_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextBaselineShift_Md_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextBaselineShift_Md_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextBaselineShift_Md_N.png
new file mode 100644
index 0000000..e348d7c
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextBaselineShift_Md_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextBottomOffset_Md_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextBottomOffset_Md_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextBottomOffset_Md_N.png
new file mode 100644
index 0000000..89b948e
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextBottomOffset_Md_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextFirstLineIndent_Md_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextFirstLineIndent_Md_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextFirstLineIndent_Md_N.png
new file mode 100644
index 0000000..eebadec
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextFirstLineIndent_Md_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextLeftIndent_Md_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextLeftIndent_Md_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextLeftIndent_Md_N.png
new file mode 100644
index 0000000..b587cc6
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextLeftIndent_Md_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextLeftOffset_Md_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextLeftOffset_Md_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextLeftOffset_Md_N.png
new file mode 100644
index 0000000..33c35a8
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextLeftOffset_Md_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextRightIndent_Md_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextRightIndent_Md_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextRightIndent_Md_N.png
new file mode 100644
index 0000000..2c0f651
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextRightIndent_Md_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextRightOffset_Md_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextRightOffset_Md_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextRightOffset_Md_N.png
new file mode 100644
index 0000000..1efc8e7
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextRightOffset_Md_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSmallCaps_Md_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSmallCaps_Md_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSmallCaps_Md_N.png
new file mode 100644
index 0000000..72c3860
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSmallCaps_Md_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSpaceAfter_Md_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSpaceAfter_Md_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSpaceAfter_Md_N.png
new file mode 100644
index 0000000..3d31df2
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSpaceAfter_Md_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSpaceBefore_Md_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSpaceBefore_Md_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSpaceBefore_Md_N.png
new file mode 100644
index 0000000..34a5bf6
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextSpaceBefore_Md_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextTopOffset_Md_N.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextTopOffset_Md_N.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextTopOffset_Md_N.png
new file mode 100644
index 0000000..b5b98b0
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/P_TextTopOffset_Md_N.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/TextAutoLeadingPercent.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/TextAutoLeadingPercent.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/TextAutoLeadingPercent.png
new file mode 100644
index 0000000..f8726a1
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/TextAutoLeadingPercent.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/digitCase.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/digitCase.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/digitCase.png
new file mode 100644
index 0000000..b3da25b
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/digitCase.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/digitWidth.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/digitWidth.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/digitWidth.png
new file mode 100644
index 0000000..7e156f0
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/digitWidth.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/elementBaseline.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/elementBaseline.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/elementBaseline.png
new file mode 100644
index 0000000..056cf8f
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/elementBaseline.png 
differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_all_but_last.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_all_but_last.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_all_but_last.png
new file mode 100644
index 0000000..7475419
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_all_but_last.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_center.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_center.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_center.png
new file mode 100644
index 0000000..3fac48d
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_center.png 
differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_end.PNG
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_end.PNG 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_end.PNG
new file mode 100644
index 0000000..15d6ddf
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_end.PNG 
differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_justify.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_justify.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_justify.png
new file mode 100644
index 0000000..bf4a6d6
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_justify.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_left.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_left.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_left.png
new file mode 100644
index 0000000..c9f45f6
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_left.png 
differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_right.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_right.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_right.png
new file mode 100644
index 0000000..1bdcda3
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_right.png 
differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_start.PNG
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_start.PNG 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_start.PNG
new file mode 100644
index 0000000..039711b
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_align_start.PNG 
differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_bullet.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_bullet.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_bullet.png
new file mode 100644
index 0000000..a99e9a2
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_bullet.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_bold.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_bold.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_bold.png
new file mode 100644
index 0000000..a0a71d1
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_bold.png 
differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_italic.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_italic.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_italic.png
new file mode 100644
index 0000000..2d0221d
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_italic.png 
differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_strikethrough.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_strikethrough.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_strikethrough.png
new file mode 100644
index 0000000..3195a1b
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_strikethrough.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_underline.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_underline.png
 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_underline.png
new file mode 100644
index 0000000..316b2f1
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_style_underline.png
 differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_tcy.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_tcy.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_tcy.png
new file mode 100644
index 0000000..04e02e9
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/icon_tcy.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/ligatures.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/ligatures.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/ligatures.png
new file mode 100644
index 0000000..7f72cb0
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/ligatures.png differ

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/47a67608/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/lineBaseline.png
----------------------------------------------------------------------
diff --git 
a/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/lineBaseline.png 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/lineBaseline.png
new file mode 100644
index 0000000..b19b3c8
Binary files /dev/null and 
b/TourDeFlex/TourDeFlex3/src/spark/tlf/textEditBar/assets/lineBaseline.png 
differ

Reply via email to