flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ha...@apache.org
Subject [27/42] flex-asjs git commit: And here’s TLF…
Date Thu, 16 Mar 2017 13:37:47 GMT
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/TextLayoutImporter.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/TextLayoutImporter.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/TextLayoutImporter.as
new file mode 100644
index 0000000..dca3eb3
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/TextLayoutImporter.as
@@ -0,0 +1,674 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.conversion 
+{
+	import org.apache.flex.textLayout.TextLayoutVersion;
+	import org.apache.flex.textLayout.debug.assert;
+	import org.apache.flex.textLayout.elements.BreakElement;
+	import org.apache.flex.textLayout.elements.DivElement;
+	import org.apache.flex.textLayout.elements.ElementHelper;
+	import org.apache.flex.textLayout.elements.FlowGroupElement;
+	import org.apache.flex.textLayout.elements.GlobalSettings;
+	import org.apache.flex.textLayout.elements.IDivElement;
+	import org.apache.flex.textLayout.elements.IFlowElement;
+	import org.apache.flex.textLayout.elements.IListElement;
+	import org.apache.flex.textLayout.elements.IListItemElement;
+	import org.apache.flex.textLayout.elements.IParagraphElement;
+	import org.apache.flex.textLayout.elements.ISpanElement;
+	import org.apache.flex.textLayout.elements.ITableElement;
+	import org.apache.flex.textLayout.elements.InlineGraphicElement;
+	import org.apache.flex.textLayout.elements.LinkElement;
+	import org.apache.flex.textLayout.elements.ListElement;
+	import org.apache.flex.textLayout.elements.ListItemElement;
+	import org.apache.flex.textLayout.elements.SpanElement;
+	import org.apache.flex.textLayout.elements.SubParagraphGroupElement;
+	import org.apache.flex.textLayout.elements.TCYElement;
+	import org.apache.flex.textLayout.elements.TabElement;
+	import org.apache.flex.textLayout.elements.TableCellElement;
+	import org.apache.flex.textLayout.elements.TableElement;
+	import org.apache.flex.textLayout.elements.TableRowElement;
+	import org.apache.flex.textLayout.elements.TextFlow;
+	import org.apache.flex.textLayout.formats.TextLayoutFormat;
+	import org.apache.flex.textLayout.property.PropertyFactory;
+	import org.apache.flex.textLayout.utils.FactoryUtil;
+	import org.apache.flex.utils.ObjectMap;
+	
+
+
+	/** 
+	 * @private
+	 * TextLayoutImporter converts from XML to TextLayout data structures and back.
+	 */ 	
+	public class TextLayoutImporter extends BaseTextLayoutImporter implements ITextLayoutImporter
+	{
+		private static var _defaultConfiguration:ImportExportConfiguration;
+		
+		/** Default ImportExportConfiguration to use when none specified 
+		* @playerversion Flash 10
+		* @playerversion AIR 1.5
+	 	* @langversion 3.0 
+		*/
+		public static function get defaultConfiguration():ImportExportConfiguration
+		{
+			// The first call will force the import/export to include the standard components
+			if (!_defaultConfiguration)
+			{
+				_defaultConfiguration = new ImportExportConfiguration();
+				// elements
+	 			_defaultConfiguration.addIEInfo("TextFlow", TextFlow,        BaseTextLayoutImporter.parseTextFlow,	BaseTextLayoutExporter.exportTextFlow);
+				_defaultConfiguration.addIEInfo("br", BreakElement,          BaseTextLayoutImporter.parseBreak,		BaseTextLayoutExporter.exportFlowElement);
+				_defaultConfiguration.addIEInfo("p", IParagraphElement,       BaseTextLayoutImporter.parsePara,		BaseTextLayoutExporter.exportParagraphFormattedElement);
+				_defaultConfiguration.addIEInfo("span", SpanElement,         BaseTextLayoutImporter.parseSpan,		BaseTextLayoutExporter.exportSpan);
+				_defaultConfiguration.addIEInfo("tab", TabElement,           BaseTextLayoutImporter.parseTab,		BaseTextLayoutExporter.exportFlowElement);
+				_defaultConfiguration.addIEInfo("list", ListElement,  		 BaseTextLayoutImporter.parseList,		BaseTextLayoutExporter.exportList);
+				_defaultConfiguration.addIEInfo("li", ListItemElement,       BaseTextLayoutImporter.parseListItem,	BaseTextLayoutExporter.exportListItem);
+				_defaultConfiguration.addIEInfo("g", SubParagraphGroupElement, TextLayoutImporter.parseSPGE, 		TextLayoutExporter.exportSPGE);
+				_defaultConfiguration.addIEInfo("tcy", TCYElement,           TextLayoutImporter.parseTCY, 			TextLayoutExporter.exportTCY);
+				_defaultConfiguration.addIEInfo("a", LinkElement,            TextLayoutImporter.parseLink, 			TextLayoutExporter.exportLink);
+	 			_defaultConfiguration.addIEInfo("div", DivElement,           TextLayoutImporter.parseDivElement, 	TextLayoutExporter.exportDiv);
+				_defaultConfiguration.addIEInfo("img", InlineGraphicElement, TextLayoutImporter.parseInlineGraphic, TextLayoutExporter.exportImage);	
+				_defaultConfiguration.addIEInfo("table", TableElement, 		 TextLayoutImporter.parseTable,     	TextLayoutExporter.exportTable);	
+				_defaultConfiguration.addIEInfo("tr", TableRowElement, 	     TextLayoutImporter.parseTableRow,	    TextLayoutExporter.exportTableRow);	
+				_defaultConfiguration.addIEInfo("th", TableCellElement, 	 TextLayoutImporter.parseTableCell,  	TextLayoutExporter.exportTableCell);	
+				_defaultConfiguration.addIEInfo("td", TableCellElement, 	 TextLayoutImporter.parseTableCell,  	TextLayoutExporter.exportTableCell);	
+				
+				// validate the defaultTypeName values.  They are to match the TLF format export xml names
+				CONFIG::debug 
+				{
+					for (var name:String in _defaultConfiguration.flowElementInfoList)
+					{
+						var info:FlowElementInfo = _defaultConfiguration.flowElementInfoList[name];
+						assert(name == (new info.flowClass).defaultTypeName,"Bad defaultTypeName in "+info.flowClass);
+					}
+				}
+				// customized link formats
+				_defaultConfiguration.addIEInfo("linkNormalFormat",null,TextLayoutImporter.parseLinkNormalFormat,null);
+				_defaultConfiguration.addIEInfo("linkActiveFormat",null,TextLayoutImporter.parseLinkActiveFormat,null);
+				_defaultConfiguration.addIEInfo("linkHoverFormat", null,TextLayoutImporter.parseLinkHoverFormat, null);
+				// list marker format
+				_defaultConfiguration.addIEInfo("ListMarkerFormat",null,TextLayoutImporter.parseListMarkerFormat,null);
+			}
+			
+			return _defaultConfiguration;
+		}
+		
+		/** Set the default configuration back to its original value 
+		* @playerversion Flash 10
+		* @playerversion AIR 1.5
+	 	* @langversion 3.0
+	 	*/
+		public static function restoreDefaults():void
+		{
+			_defaultConfiguration = null;
+		}
+				
+		static private const _formatImporter:TLFormatImporter = new TLFormatImporter(TextLayoutFormat,TextLayoutFormat.description);
+		static private const _idImporter:SingletonAttributeImporter = new SingletonAttributeImporter("id");
+		static private const _typeNameImporter:SingletonAttributeImporter = new SingletonAttributeImporter("typeName");
+		static private const _customFormatImporter:CustomFormatImporter = new CustomFormatImporter();
+		
+		static private const _flowElementFormatImporters:Array = [ _formatImporter,_idImporter,_typeNameImporter,_customFormatImporter ];
+		
+		private var _imageSourceResolveFunction:Function;
+
+		/** Constructor */
+		public function TextLayoutImporter()
+		{
+			super(new Namespace("flow", "http://ns.adobe.com/textLayout/2008"), defaultConfiguration);
+		}
+		
+		/** @copy ITextLayoutImporter#imageSourceResolveFunction
+		 * 
+		 * @playerversion Flash 10.0
+		 * @playerversion AIR 2.0
+		 * @langversion 3.0
+		 */
+		public function get imageSourceResolveFunction():Function
+		{ return _imageSourceResolveFunction; }
+		public function set imageSourceResolveFunction(resolver:Function):void
+		{ _imageSourceResolveFunction = resolver; }
+		
+		
+		/**  @private */
+		override protected function parseContent(rootStory:XML):TextFlow
+		{
+			// Capture all the top-level tags of interest that can be "bound"
+			// We have to do this because the attributes are applied at the point
+			// of calling something like:
+			// span.charAttrs = characterAttrs;
+			// At one time, we just set the variable to the parameter (in the setter),
+			// but now we're copying the data into a new object. This change does
+			// not allow for us to parse the bindings in any order. Hence, we
+			// will process the potential bindings objects first, then the
+			// TextFlow objects.
+			//
+			// Also note the use of "..*" below. We are using this to traverse the
+			// XML structure looking for particular tags and at the same time allow for
+			// any namespace. So, you might see something like <flow:TextContainer> or
+			// <TextContainer> and this code will capture both cases.
+			
+			var rootName:String = rootStory.name().localName;
+			var textFlowElement:XML = rootName == "TextFlow" ? rootStory : rootStory..*::TextFlow[0];
+			if (!textFlowElement)
+			{
+				reportError(GlobalSettings.resourceStringFunction("missingTextFlow")); 
+				return null;
+			}
+			if (!checkNamespace(textFlowElement))
+				return null;
+	
+			return parseTextFlow(this, textFlowElement);
+		}
+		
+		private function parseStandardFlowElementAttributes(flowElem:IFlowElement,xmlToParse:XML,importers:Array = null):void
+		{
+			if (importers == null)
+				importers = _flowElementFormatImporters;
+			// all the standard ones have to be in importers - some check needed
+			parseAttributes(xmlToParse,importers);
+			
+			var textFormat:TextLayoutFormat = extractTextFormatAttributesHelper(flowElem.format,_formatImporter) as TextLayoutFormat;
+			if (textFormat)
+			{
+				CONFIG::debug { assert(textFormat.getStyles() != null,"Bad TextFormat in parseStandardFlowElementAttributes"); }
+				flowElem.format = textFormat;
+			}
+
+			if (_idImporter.result)
+				flowElem.id = _idImporter.result as String;
+			if (_typeNameImporter.result)
+				flowElem.typeName = _typeNameImporter.result as String;
+			if (_customFormatImporter.result)
+			{
+				for (var styleName:String in _customFormatImporter.result)
+					flowElem.setStyle(styleName,_customFormatImporter.result[styleName]);
+			}
+		}
+		
+
+		override public function createTextFlowFromXML(xmlToParse:XML, textFlow:TextFlow = null):TextFlow
+		{
+			// allocate the TextFlow and set the TextContainer's rootElement to it.
+			var newFlow:TextFlow = null;
+
+			if (!checkNamespace(xmlToParse))
+				return newFlow;
+
+//TODO @
+			if (xmlToParse.hasOwnProperty("@version"))
+			{
+				var version:String = xmlToParse.@version;
+				if (version == "3.0.0")
+					_importVersion = TextLayoutVersion.VERSION_3_0;
+				else if (version == "2.0.0")
+					_importVersion = TextLayoutVersion.VERSION_2_0;
+				else if (version == "1.1.0" || version == "1.0.0")
+					_importVersion = TextLayoutVersion.VERSION_1_0;
+				else
+				{
+					reportError(GlobalSettings.resourceStringFunction("unsupportedVersion",[ xmlToParse.@version ]));
+					_importVersion = TextLayoutVersion.CURRENT_VERSION;
+				}
+			}
+			else		// we must be the first version
+				_importVersion = TextLayoutVersion.VERSION_1_0;
+				
+			// allocate the TextFlow and initialize the container attributes
+			if (!newFlow)
+				newFlow = new TextFlow(FactoryUtil.defaultTLFFactory);
+	
+			// parse formatting
+			parseStandardFlowElementAttributes(newFlow,xmlToParse);
+			
+			// descend into children
+			parseFlowGroupElementChildren(xmlToParse, newFlow);
+			
+			CONFIG::debug { newFlow.debugCheckNormalizeAll() ; }
+			newFlow.normalize();
+			
+			newFlow.applyWhiteSpaceCollapse(null);
+			
+			return newFlow;
+		}
+		
+		public function createDivFromXML(xmlToParse:XML):IDivElement
+		{
+			// add the div element to the parent
+			var divElem:IDivElement = new DivElement();
+			
+			parseStandardFlowElementAttributes(divElem,xmlToParse);
+
+			return divElem;
+		}
+		
+		/**
+		 * Create a table element from XML
+		 **/
+		public function createTableFromXML(xmlToParse:XML):ITableElement
+		{
+			// add the table element to the parent
+			var tableElement:TableElement = new TableElement();
+			
+			parseStandardFlowElementAttributes(tableElement, xmlToParse);
+
+			return tableElement;
+		}
+		
+		/**
+		 * Create a table row element from XML
+		 **/
+		public function createTableRowFromXML(xmlToParse:XML):TableRowElement
+		{
+			// add the table row element to the parent
+			var tableRowElement:TableRowElement = new TableRowElement();
+			
+			parseStandardFlowElementAttributes(tableRowElement, xmlToParse);
+			
+			return tableRowElement;
+		}
+		
+		/**
+		 * Create a table cell element from XML
+		 **/
+		public function createTableCellFromXML(xmlToParse:XML):TableCellElement
+		{
+			// add the table cell element to the parent
+			var tableCellElement:TableCellElement = new TableCellElement();
+			
+			parseStandardFlowElementAttributes(tableCellElement, xmlToParse);
+			
+			return tableCellElement;
+		}
+		
+		/**
+		 * Create a paragraph element from XML
+		 **/
+		public override function createParagraphFromXML(xmlToParse:XML):IParagraphElement
+		{
+			var paraElem:IParagraphElement = ElementHelper.getParagraph();
+			parseStandardFlowElementAttributes(paraElem,xmlToParse);
+			return paraElem;
+		}
+		
+		/**
+		 * Create a sub paragraph group element from XML
+		 **/
+		public function createSubParagraphGroupFromXML(xmlToParse:XML):SubParagraphGroupElement
+		{
+			var elem:SubParagraphGroupElement = new SubParagraphGroupElement();
+			parseStandardFlowElementAttributes(elem,xmlToParse);
+			return elem;
+		}
+		
+		/**
+		 * Create a tate chu yoko element from XML
+		 **/
+		public function createTCYFromXML(xmlToParse:XML):TCYElement
+		{
+			var tcyElem:TCYElement = new TCYElement();
+			parseStandardFlowElementAttributes(tcyElem,xmlToParse);
+			return tcyElem;
+		}
+		
+		
+		static internal const _linkDescription:Object = {
+			"href" : PropertyFactory.string("href",null, false, null),
+			"target" : PropertyFactory.string("target",null, false, null)
+		};
+		static private const _linkFormatImporter:TLFormatImporter = new TLFormatImporter(ObjectMap,_linkDescription);
+		static private const _linkElementFormatImporters:Array = [ _linkFormatImporter, _formatImporter,_idImporter,_typeNameImporter,_customFormatImporter ];
+
+		/** 
+		 * Parse a LinkElement Block.
+		 * 
+		 * @param - importFilter:BaseTextLayoutImporter - parser object
+		 * @param - xmlToParse:XML - the xml describing the Link
+		 * @param - parent:FlowBlockElement - the parent of the new Link
+		 * @return LinkElement - a new LinkElement and its children
+		 */
+		public function createLinkFromXML(xmlToParse:XML):LinkElement
+		{
+			var linkElem:LinkElement = new LinkElement();
+			parseStandardFlowElementAttributes(linkElem,xmlToParse,_linkElementFormatImporters);
+			if (_linkFormatImporter.result)
+			{
+				linkElem.href = _linkFormatImporter.result["href"] as String;
+				linkElem.target = _linkFormatImporter.result["target"] as String;
+			}
+
+			return linkElem;
+		}
+		
+		/**
+		 * Create a span element from XML
+		 **/
+		public override function createSpanFromXML(xmlToParse:XML):ISpanElement
+		{
+			var spanElem:SpanElement = new SpanElement();
+			
+			parseStandardFlowElementAttributes(spanElem,xmlToParse);
+
+			return spanElem;
+		}
+		
+		static private const _imageDescription:Object = {
+			"height":InlineGraphicElement.heightPropertyDefinition,
+			"width":InlineGraphicElement.widthPropertyDefinition,
+			"source": PropertyFactory.string("source", null, false, null),
+			"float": PropertyFactory.string("float", null, false, null),
+			"rotation": InlineGraphicElement.rotationPropertyDefinition };
+		
+		static private const _ilgFormatImporter:TLFormatImporter = new TLFormatImporter(ObjectMap,_imageDescription);
+		static private const _ilgElementFormatImporters:Array = [ _ilgFormatImporter, _formatImporter, _idImporter, _typeNameImporter, _customFormatImporter ];
+
+		/**
+		 * Create an inline graphic from XML
+		 **/
+		public function createInlineGraphicFromXML(xmlToParse:XML):InlineGraphicElement
+		{				
+			var imgElem:InlineGraphicElement = new InlineGraphicElement();
+			
+			parseStandardFlowElementAttributes(imgElem,xmlToParse,_ilgElementFormatImporters);
+			
+			if (_ilgFormatImporter.result)
+			{
+				var source:String = _ilgFormatImporter.result["source"];
+				imgElem.source = _imageSourceResolveFunction != null ? _imageSourceResolveFunction(source) : source;
+				
+				// if not defined then let InlineGraphic set its own default
+				imgElem.height = _ilgFormatImporter.result["height"];
+				imgElem.width  = _ilgFormatImporter.result["width"];
+				/*	We don't support rotation yet because of bugs in the player. */		
+				// imgElem.rotation  = InlineGraphicElement.heightPropertyDefinition.setHelper(imgElem.rotation,_ilgFormatImporter.result["rotation"]);
+				imgElem.float = _ilgFormatImporter.result["float"];
+			}
+			
+			return imgElem;
+		}
+	
+		/**
+		 * Create a list element from XML
+		 **/
+		public override function createListFromXML(xmlToParse:XML):IListElement
+		{
+			var rslt:IListElement = ElementHelper.getList();
+			parseStandardFlowElementAttributes(rslt,xmlToParse);
+			return rslt;
+		}
+
+		/**
+		 * Create a list item element from XML
+		 **/
+		public override function createListItemFromXML(xmlToParse:XML):IListItemElement
+		{
+			var rslt:IListItemElement = ElementHelper.getListItem();
+			parseStandardFlowElementAttributes(rslt,xmlToParse);
+			return rslt;
+		}
+		
+		/**
+		 * Extract text format attributes
+		 **/
+		public function extractTextFormatAttributesHelper(curAttrs:Object, importer:TLFormatImporter):Object
+		{
+			return extractAttributesHelper(curAttrs,importer);
+		}
+		
+		/** 
+		 * Parse an SPGE element
+		 * 
+		 * @param - importFilter:BaseTextLayoutImporter - parser object
+		 * @param - xmlToParse:XML - the xml describing the TCY Block
+		 * @param - parent:FlowBlockElement - the parent of the new TCY Block
+		 * @return SubParagraphGroupElement - a new TCYBlockElement and its children
+		 */
+		static public function parseSPGE(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{
+			var elem:SubParagraphGroupElement = TextLayoutImporter(importFilter).createSubParagraphGroupFromXML(xmlToParse);
+			if (importFilter.addChild(parent, elem))
+			{
+				importFilter.parseFlowGroupElementChildren(xmlToParse, elem);
+				//if parsing an empty tcy, create a Span for it.
+				if (elem.numChildren == 0)
+					elem.addChild(new SpanElement());
+			}
+		}
+
+		/** 
+		 * Parse a TCY Block.
+		 * 
+		 * @param - importFilter:BaseTextLayoutImporter - parser object
+		 * @param - xmlToParse:XML - the xml describing the TCY Block
+		 * @param - parent:FlowBlockElement - the parent of the new TCY Block
+		 * @return TCYBlockElement - a new TCYBlockElement and its children
+		 */
+		static public function parseTCY(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{
+			var tcyElem:TCYElement = TextLayoutImporter(importFilter).createTCYFromXML(xmlToParse);
+			if (importFilter.addChild(parent, tcyElem))
+			{
+				importFilter.parseFlowGroupElementChildren(xmlToParse, tcyElem);
+				//if parsing an empty tcy, create a Span for it.
+				if (tcyElem.numChildren == 0)
+					tcyElem.addChild(new SpanElement());
+			}
+		}
+		
+				
+		/** 
+		 * Parse a LinkElement Block.
+		 * 
+		 * @param - importFilter:BaseTextLayoutImporter - parser object
+		 * @param - xmlToParse:XML - the xml describing the Link
+		 * @param - parent:FlowBlockElement - the parent of the new Link
+		 * @return LinkElement - a new LinkElement and its children
+		 */
+		static public function parseLink(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{
+			var linkElem:LinkElement = TextLayoutImporter(importFilter).createLinkFromXML(xmlToParse);
+			if (importFilter.addChild(parent, linkElem))
+			{
+				importFilter.parseFlowGroupElementChildren(xmlToParse, linkElem);
+				//if parsing an empty link, create a Span for it.
+				if (linkElem.numChildren == 0)
+					linkElem.addChild(new SpanElement());
+			}
+		}
+		
+		public function createDictionaryFromXML(xmlToParse:XML):ObjectMap
+		{
+			var formatImporters:Array = [ _customFormatImporter ];
+
+			// parse the TextLayoutFormat child object		
+			var formatList:XMLList = xmlToParse..*::TextLayoutFormat;
+			if (formatList.length() != 1)
+				reportError(GlobalSettings.resourceStringFunction("expectedExactlyOneTextLayoutFormat",[ xmlToParse.name() ]));
+			
+			var parseThis:XML = formatList.length() > 0 ? formatList[0] : xmlToParse;
+			parseAttributes(parseThis,formatImporters);
+			return _customFormatImporter.result as ObjectMap;
+		}
+
+		static public function parseLinkNormalFormat(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{ parent.linkNormalFormat = TextLayoutImporter(importFilter).createDictionaryFromXML(xmlToParse); }
+		static public function parseLinkActiveFormat(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{ parent.linkActiveFormat = TextLayoutImporter(importFilter).createDictionaryFromXML(xmlToParse); }
+		static public function parseLinkHoverFormat(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{ parent.linkHoverFormat = TextLayoutImporter(importFilter).createDictionaryFromXML(xmlToParse); }
+		
+		public function createListMarkerFormatDictionaryFromXML(xmlToParse:XML):ObjectMap
+		{
+			var formatImporters:Array = [ _customFormatImporter ];
+			
+			// parse the TextLayoutFormat child object		
+			var formatList:XMLList = xmlToParse..*::ListMarkerFormat;
+			if (formatList.length() != 1)
+				reportError(GlobalSettings.resourceStringFunction("expectedExactlyOneListMarkerFormat",[ xmlToParse.name() ]));
+			
+			var parseThis:XML = formatList.length() > 0 ? formatList[0] : xmlToParse;
+			parseAttributes(parseThis,formatImporters);
+			return _customFormatImporter.result as ObjectMap;
+		}
+		
+		static public function parseListMarkerFormat(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{ parent.listMarkerFormat = TextLayoutImporter(importFilter).createListMarkerFormatDictionaryFromXML(xmlToParse); }
+
+		/** 
+		 * Parse the <div ...> tag and all its children
+		 * 
+		 * @param - importFilter:BaseTextLayoutImportFilter - parser object
+		 * @param - xmlToParse:XML - the xml describing the Div
+		 * @param - parent:FlowBlockElement - the parent of the new Div
+		 */
+		static public function parseDivElement(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{
+			var divElem:IDivElement = TextLayoutImporter(importFilter).createDivFromXML(xmlToParse);
+			if (importFilter.addChild(parent, divElem))
+			{
+				importFilter.parseFlowGroupElementChildren(xmlToParse, divElem);
+				// we can't have a <div> tag w/no children... so, add an empty paragraph
+				if (divElem.numChildren == 0)
+					divElem.addChild(ElementHelper.getParagraph());
+			}
+		}
+
+		/** 
+		 * Parse a leaf element, the <img ...>  tag.
+		 * 
+		 * @param - importFilter:BaseTextLayoutImporter - parser object
+		 * @param - xmlToParse:XML - the xml describing the InlineGraphic FlowElement
+		 * @param - parent:FlowBlockElement - the parent of the new image FlowElement
+		 */
+		static public function parseInlineGraphic(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{
+			var ilg:InlineGraphicElement = TextLayoutImporter(importFilter).createInlineGraphicFromXML(xmlToParse);
+			importFilter.addChild(parent, ilg);
+		}
+		
+		/** 
+		 * Parse the <table ...> tag and all its children
+		 * 
+		 * @param - importFilter:BaseTextLayoutImportFilter - parser object
+		 * @param - xmlToParse:XML - the xml describing the Table
+		 * @param - parent:FlowBlockElement - the parent of the new Table
+		 */
+		static public function parseTable(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{
+			var tableElement:ITableElement = TextLayoutImporter(importFilter).createTableFromXML(xmlToParse);
+			
+			if (importFilter.addChild(parent, tableElement)) 
+			{
+				importFilter.parseFlowGroupElementChildren(xmlToParse, tableElement);
+				
+			}
+		}
+		
+		/** 
+		 * Parse the <tr ...> tag (TableRowElement) and all its children
+		 * 
+		 * @param - importFilter:BaseTextLayoutImportFilter - parser object
+		 * @param - xmlToParse:XML - the xml describing the Table
+		 * @param - parent:FlowBlockElement - the parent of the new Table
+		 */
+		static public function parseTableRow(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{
+			var tableRowElement:TableRowElement = TextLayoutImporter(importFilter).createTableRowFromXML(xmlToParse);
+			var table:ITableElement;
+			
+			if (importFilter.addChild(parent, tableRowElement))
+			{
+				
+				importFilter.parseFlowGroupElementChildren(xmlToParse, tableRowElement);
+				
+				table = tableRowElement.table;
+				
+				var columnCount:int = tableRowElement.getColumnCount();
+				
+				if (table.numColumns<columnCount) {
+					table.numColumns = columnCount;
+				}
+				
+				table.insertRow(tableRowElement, tableRowElement.mxmlChildren);
+				
+			}
+		}
+		
+		/** 
+		 * Parse the <td ...> or <th ...> tag (TableCellElement) and all its children
+		 * 
+		 * @param - importFilter:BaseTextLayoutImportFilter - parser object
+		 * @param - xmlToParse:XML - the xml describing the Table
+		 * @param - parent:FlowBlockElement - the parent of the new Table
+		 */
+		static public function parseTableCell(importFilter:BaseTextLayoutImporter, xmlToParse:XML, parent:FlowGroupElement):void
+		{
+			var tableCellElement:TableCellElement = TextLayoutImporter(importFilter).createTableCellFromXML(xmlToParse);
+			
+			if (importFilter.addChild(parent, tableCellElement))
+			{
+				importFilter.parseTableCellElementChildren(xmlToParse, tableCellElement);
+			}
+			
+			//tableCellElement.textFlow = getTextFlowContent("test cell");
+			
+			TableRowElement(parent).addCell(tableCellElement);
+			//TableRowElement(parent).getTable().addChild(tableCellElement);
+			//importFilter.parseFlowGroupElementChildren(xmlToParse, tableCellElement);
+			
+			// we can't have a <td> tag w/no children... so, add an empty text flow
+			//if (tableCellElement.numChildren == 0) {
+			//	tableCellElement.addChild(new TextFlow());
+			//}
+				
+		}
+		
+		/**
+		 * Creates default text flow from the text value passed in. Used for table cell text flows. 
+		 * Used for testing. May be removed in the future. 
+		 **/
+		static public function getTextFlowContent(text:String = null, selectable:Boolean = false, editable:Boolean = false):TextFlow {
+			var textFlowContent:TextFlow = new TextFlow(FactoryUtil.defaultTLFFactory);
+			var paragraph:IParagraphElement = ElementHelper.getParagraph();
+			var span:SpanElement = new SpanElement();
+			
+			if (text) {
+				span.text = text;
+			}
+			else {
+				span.text = "";
+			}
+			
+			paragraph.backgroundAlpha = 0.2;
+			paragraph.backgroundColor = 0xFF0000;
+			paragraph.addChild(span);
+			
+			if (editable) {
+				//textFlowContent.interactionManager = new EditManager(new UndoManager);
+			}
+			else if (selectable) {
+				//textFlowContent.interactionManager = new SelectionManager();
+			}
+			
+			textFlowContent.addChild(paragraph);
+			
+			return textFlowContent;
+		}
+	}
+}
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/CaseInsensitiveTLFFormatImporter.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/CaseInsensitiveTLFFormatImporter.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/CaseInsensitiveTLFFormatImporter.as
new file mode 100644
index 0000000..69893e1
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/CaseInsensitiveTLFFormatImporter.as
@@ -0,0 +1,54 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.conversion.importers {
+	import org.apache.flex.textLayout.conversion.TLFormatImporter;
+
+/** Specialized to provide case insensitivity (as required by TEXT_FIELD_HTML_FORMAT)
+ *  Keys need to be lower-cased. Values may or may not based on a flag passed to the constructor. 
+ */
+public class CaseInsensitiveTLFFormatImporter extends TLFormatImporter
+{
+	private var _convertValuesToLowerCase:Boolean;
+
+	public function CaseInsensitiveTLFFormatImporter(classType:Class,description:Object, convertValuesToLowerCase:Boolean=true)
+	{
+		_convertValuesToLowerCase = convertValuesToLowerCase;
+		
+		var lowerCaseDescription:Object = {};
+		for (var prop:Object in description)
+		{
+			lowerCaseDescription[prop.toUpperCase()] = description[prop];
+		}
+		
+		super(classType, lowerCaseDescription);
+	}
+	
+	public override function importOneFormat(key:String,val:String):Boolean
+	{
+		return super.importOneFormat(key.toUpperCase(), _convertValuesToLowerCase ? val.toLowerCase() : val);  
+	} 
+	
+	public function getFormatValue (key:String):*
+	{
+		return result ? result[key.toUpperCase()] : undefined;
+	}
+	
+}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/FontImporter.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/FontImporter.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/FontImporter.as
new file mode 100644
index 0000000..1325567
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/FontImporter.as
@@ -0,0 +1,38 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.conversion.importers {
+	import org.apache.flex.textLayout.conversion.TLFormatImporter;
+
+	public class FontImporter extends TLFormatImporter {
+		public function FontImporter(classType:Class, description:Object) {
+			super(classType, description);
+		}
+
+		public override function importOneFormat(key:String, val:String):Boolean {
+			key = key.toUpperCase();
+			if (key == "LETTERSPACING")
+				key = "trackingRight";
+			else if (key == "FACE")
+				key = "fontFamily";
+			else if (key == "COLOR")
+				key = "color";
+			return super.importOneFormat(key, val);  // no case-coversion required, values for these formats in TLF are case-insensitive
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/HtmlCustomParaFormatImporter.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/HtmlCustomParaFormatImporter.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/HtmlCustomParaFormatImporter.as
new file mode 100644
index 0000000..29eaf2c
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/HtmlCustomParaFormatImporter.as
@@ -0,0 +1,35 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.conversion.importers {
+	import org.apache.flex.textLayout.conversion.TLFormatImporter;
+
+	public class HtmlCustomParaFormatImporter extends TLFormatImporter {
+		public function HtmlCustomParaFormatImporter(classType:Class, description:Object) {
+			super(classType, description);
+		}
+
+		public override function importOneFormat(key:String, val:String):Boolean {
+			key = key.toUpperCase();
+
+			if (key == "ALIGN")
+				key = "textAlign";
+			return super.importOneFormat(key, val.toLowerCase()); // covert val to lowercase because TLF won't accept, say, "RIGHT"
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/TextFormatImporter.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/TextFormatImporter.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/TextFormatImporter.as
new file mode 100644
index 0000000..1dc35a4
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/conversion/importers/TextFormatImporter.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 org.apache.flex.textLayout.conversion.importers {
+	import org.apache.flex.textLayout.conversion.TLFormatImporter;
+
+	public class TextFormatImporter extends TLFormatImporter {
+		public function TextFormatImporter(classType:Class, description:Object) {
+			super(classType, description);
+		}
+
+		public override function importOneFormat(key:String, val:String):Boolean {
+			key = key.toUpperCase();
+
+			if (key == "LEFTMARGIN")
+				key = "paragraphStartIndent"; // assumed to be left-to-right text since we don't handle DIR attribute
+			else if (key == "RIGHTMARGIN")
+				key = "paragraphEndIndent";   // assumed to be left-to-right text since we don't handle DIR attribute
+			else if (key == "INDENT")
+				key = "textIndent";
+			else if (key == "LEADING")
+				key = "lineHeight";
+			else if (key == "TABSTOPS") {
+				key = "tabStops";
+				// Comma-delimited in TextField HTML format, space delimited in TLF
+				val = val.replace(/,/g, ' ');
+			}
+			return super.importOneFormat(key, val); // no case-coversion required, values for these formats in TLF are case-insensitive
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/BitmapData.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/BitmapData.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/BitmapData.as
new file mode 100644
index 0000000..6301b20
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/BitmapData.as
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.dummy {
+	import org.apache.flex.geom.Rectangle;
+	import org.apache.flex.geom.Matrix;
+	public class BitmapData {
+		public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF){
+
+		}
+
+		public function draw(source : IBitmapDrawable, matrix : Matrix = null, colorTransform : ColorTransform = null, blendMode : String = null, clipRect : Rectangle = null, smoothing : Boolean = false) : void {
+
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/BoundsUtil.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/BoundsUtil.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/BoundsUtil.as
new file mode 100644
index 0000000..a3409c9
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/BoundsUtil.as
@@ -0,0 +1,29 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.dummy {
+	import org.apache.flex.geom.Rectangle;
+	import org.apache.flex.core.IUIBase;
+	public class BoundsUtil {
+		static public function getBounds(child:IUIBase,parent:IUIBase):Rectangle{
+			//TODO implement getting bounds
+			child;parent;
+			return null;
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Clipboard.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Clipboard.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Clipboard.as
new file mode 100644
index 0000000..ca0fed1
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Clipboard.as
@@ -0,0 +1,36 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.dummy {
+	public class Clipboard {
+		public static var generalClipboard : Clipboard;
+
+		public function hasFormat(format : String) : Boolean {
+			return false;
+		}
+
+		public function getData(clipboardFormat : String) : void {
+		}
+
+		public function clear() : void {
+		}
+
+		public function setData(clipboardFormat : String, clipboardData : String) : void {
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ColorTransform.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ColorTransform.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ColorTransform.as
new file mode 100644
index 0000000..d654275
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ColorTransform.as
@@ -0,0 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.dummy {
+	public class ColorTransform {
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenu.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenu.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenu.as
new file mode 100644
index 0000000..f79776c
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenu.as
@@ -0,0 +1,28 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.dummy {
+	public class ContextMenu {
+		public var builtInItems:ContextMenuBuiltInItems;
+		public var clipboardItems:ContextMenuClipboardItems;
+		public var clipboardMenu:Boolean;
+		public var customItems:Array;
+		public var isSupported:Boolean;
+		public var items:Array;
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenuBuiltInItems.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenuBuiltInItems.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenuBuiltInItems.as
new file mode 100644
index 0000000..68e179a
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenuBuiltInItems.as
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.dummy {
+	public class ContextMenuBuiltInItems {
+
+		public var forwardAndBack:Boolean;
+		public var loop:Boolean;
+		public var play:Boolean;
+		public var print:Boolean;
+		public var quality:Boolean;
+		public var rewind:Boolean;
+		public var save:Boolean;
+		public var zoom:Boolean;
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenuClipboardItems.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenuClipboardItems.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenuClipboardItems.as
new file mode 100644
index 0000000..83346b9
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/ContextMenuClipboardItems.as
@@ -0,0 +1,28 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.dummy {
+	public class ContextMenuClipboardItems {
+			
+		public var clear:Boolean;
+		public var copy:Boolean;
+		public var cut:Boolean;
+		public var paste:Boolean;
+		public var selectAll:Boolean;
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/IBitmapDrawable.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/IBitmapDrawable.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/IBitmapDrawable.as
new file mode 100644
index 0000000..245b2b4
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/IBitmapDrawable.as
@@ -0,0 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.dummy {
+	public class IBitmapDrawable {
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Mouse.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Mouse.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Mouse.as
new file mode 100644
index 0000000..21a9b14
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/Mouse.as
@@ -0,0 +1,29 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.dummy {
+	public class Mouse {
+		public static var cursor : String;
+
+		public static function registerCursor(name : String, cursor : MouseCursorData) : void {
+			
+		}
+
+	}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/MouseCursor.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/MouseCursor.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/MouseCursor.as
new file mode 100644
index 0000000..993527e
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/MouseCursor.as
@@ -0,0 +1,28 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.dummy {
+	public class MouseCursor {
+
+		public static const ARROW:String = "arrow";
+		public static const AUTO:String = "auto";
+		public static const BUTTON:String = "button";
+		public static const HAND:String = "hand";
+		public static const IBEAM:String = "ibeam";
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/MouseCursorData.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/MouseCursorData.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/MouseCursorData.as
new file mode 100644
index 0000000..3691075
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/dummy/MouseCursorData.as
@@ -0,0 +1,26 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.dummy {
+	import org.apache.flex.geom.Point;
+	public class MouseCursorData {
+		public var data : Vector.<BitmapData>;
+		public var frameRate : Number;
+		public var hotSpot : Point;
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/fd08d137/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/ClipboardFormats.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/ClipboardFormats.as b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/ClipboardFormats.as
new file mode 100644
index 0000000..960b8cc
--- /dev/null
+++ b/frameworks/projects/TLF/src/main/flex/org/apache/flex/textLayout/edit/ClipboardFormats.as
@@ -0,0 +1,23 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.flex.textLayout.edit {
+	public class ClipboardFormats {
+		public static const TEXT_FORMAT : String = "TEXT_FORMAT";
+	}
+}
\ No newline at end of file


Mime
View raw message