You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jm...@apache.org on 2014/08/09 08:32:00 UTC
[2/5] Added more spark examples
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