Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/ParagraphPropertyEditor.as
==============================================================================
--- 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/ParagraphPropertyEditor.as
 (added)
+++ 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/ParagraphPropertyEditor.as
 Sat Aug 23 08:50:20 2014
@@ -0,0 +1,226 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.inspectors
+{
+       import flash.text.engine.*;
+       
+       import flashx.textLayout.formats.Direction;
+       import flashx.textLayout.formats.FormatValue;
+       import flashx.textLayout.formats.TextJustify;
+       import flashx.textLayout.formats.TextLayoutFormat;
+       import flashx.textLayout.tlf_internal;
+       import flashx.textLayout.formats.LeadingModel;
+       use namespace tlf_internal;
+               
+       public class ParagraphPropertyEditor extends DynamicTextPropertyEditor
+       {
+               [Embed(source="./assets/align_start_icon.png")]
+               private var alignStartIcon:Class;
+               
+               [Embed(source="./assets/align_end_icon.png")]
+               private var alignEndIcon:Class;
+               
+               [Embed(source="./assets/align_left_icon.png")]
+               private var alignLeftIcon:Class;
+               
+               [Embed(source="./assets/align_center_icon.png")]
+               private var alignCenterIcon:Class;
+               
+               [Embed(source="./assets/align_right_icon.png")]
+               private var alignRightIcon:Class;
+               
+               [Embed(source="./assets/align_justify_icon.png")]
+               private var alignJustifyIcon:Class;
+               
+               [Embed(source="./assets/align_last_left_icon.png")]
+               private var alignLastLeftIcon:Class;
+               
+               [Embed(source="./assets/align_last_center_icon.png")]
+               private var alignLastCenterIcon:Class;
+               
+               [Embed(source="./assets/align_last_right_icon.png")]
+               private var alignLastRightIcon:Class;
+
+               public function ParagraphPropertyEditor()
+               {
+                       var recipe:XML =
+                               <recipe>
+                                       <row>
+                                               <editor type="multiIconButton" 
style="iconButtonGroup" 
label="$$$/stage/TextEditing/Label/Alignment=Alignment:">
+                                                       <property 
name={TextInspectorController.TEXT_ALIGN_UIPROP}/>
+                                                       <button 
icon="alignStartIcon" value="start"/>
+                                                       <button 
icon="alignEndIcon" value="end"/>
+                                                       <button 
icon="alignLeftIcon" value="left"/>
+                                                       <button 
icon="alignCenterIcon" value="center"/>
+                                                       <button 
icon="alignRightIcon" value="right"/>
+                                                       <button 
icon="alignJustifyIcon" value="justify"/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="multiIconButton" 
style="iconButtonGroup" label="$$$/stage/TextEditing/Label/LastLine=Last Line:">
+                                                       <property 
name={TextInspectorController.TEXT_ALIGN_LAST_UIPROP}/>
+                                                       <button 
icon="alignStartIcon" value="start"/>
+                                                       <button 
icon="alignEndIcon" value="end"/>
+                                                       <button 
icon="alignLastLeftIcon" value="left"/>
+                                                       <button 
icon="alignLastCenterIcon" value="center"/>
+                                                       <button 
icon="alignLastRightIcon" value="right"/>
+                                                       <button 
icon="alignJustifyIcon" value="justify"/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/Indent=Text Indent:" decimals="1" 
enforcePrecision="no">
+                                                       <property 
name={TextInspectorController.TEXT_INDENT_UIPROP}
+                                                               
minValue={TextLayoutFormat.textIndentProperty.minValue}
+                                                               
maxValue={TextLayoutFormat.textIndentProperty.maxValue}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/Left=Start Indent:" decimals="1" 
enforcePrecision="no">
+                                                       <property 
name={TextInspectorController.START_INDENT_UIPROP} 
+                                                               
minValue={TextLayoutFormat.paragraphStartIndentProperty.minValue}
+                                                               
maxValue={TextLayoutFormat.paragraphStartIndentProperty.maxValue}/>
+                                               </editor>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/Right=End:" decimals="1" 
enforcePrecision="no">
+                                                       <property 
name={TextInspectorController.END_INDENT_UIPROP} 
+                                                               
minValue={TextLayoutFormat.paragraphEndIndentProperty.minValue} 
+                                                               
maxValue={TextLayoutFormat.paragraphEndIndentProperty.maxValue}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/Before=Space Before:" decimals="1" 
enforcePrecision="no">
+                                                       <property 
name={TextInspectorController.SPACE_BEFORE_UIPROP} 
+                                                               
minValue={TextLayoutFormat.paragraphSpaceBeforeProperty.minValue} 
+                                                               
maxValue={TextLayoutFormat.paragraphSpaceBeforeProperty.maxValue}/>
+                                               </editor>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/After=After:" decimals="1" 
enforcePrecision="no">
+                                                       <property 
name={TextInspectorController.SPACE_AFTER_UIPROP} 
+                                                               
minValue={TextLayoutFormat.paragraphSpaceAfterProperty.minValue} 
+                                                               
maxValue={TextLayoutFormat.paragraphSpaceAfterProperty.maxValue}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/justRule=Just. Rule:">
+                                                       <property 
name={TextInspectorController.JUSTIFICATION_RULE_UIPROP}/>
+                                                       <choice display="Auto" 
value={FormatValue.AUTO}/>
+                                                       <choice display="Roman" 
value={flashx.textLayout.formats.JustificationRule.SPACE}/>
+                                                       <choice display="East 
Asian" value={flashx.textLayout.formats.JustificationRule.EAST_ASIAN}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/textJust=Text Justify:">
+                                                       <property 
name={TextInspectorController.TEXT_JUSTIFY_UIPROP}/>
+                                                       <choice 
display="Inter-word" value={flashx.textLayout.formats.TextJustify.INTER_WORD}/>
+                                                       <choice 
display="Distribute" value={flashx.textLayout.formats.TextJustify.DISTRIBUTE}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/justStyle=Just. Style:">
+                                                       <property 
name={TextInspectorController.JUSTIFICATION_STYLE_UIPROP}/>
+                                                       <choice display="Auto" 
value={FormatValue.AUTO}/>
+                                                       <choice 
display="Prioritize Least Adjustment" 
value={flash.text.engine.JustificationStyle.PRIORITIZE_LEAST_ADJUSTMENT}/>
+                                                       <choice display="Push 
in Kinsoku" value={flash.text.engine.JustificationStyle.PUSH_IN_KINSOKU}/>
+                                                       <choice display="Push 
out Only" value={flash.text.engine.JustificationStyle.PUSH_OUT_ONLY}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/direction=Direction:">
+                                                       <property 
name={TextInspectorController.DIRECTION_UIPROP}/>
+                                                       <choice display="Left 
to Right" value={flashx.textLayout.formats.Direction.LTR}/>
+                                                       <choice display="Right 
to Left" value={flashx.textLayout.formats.Direction.RTL}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/leadingModel=Leading Model:">
+                                                       <property 
name={TextInspectorController.LEADING_MODEL_UIPROP}/>
+                                                       <choice display="Roman; 
Up" value={flashx.textLayout.formats.LeadingModel.ROMAN_UP}/>
+                                                       <choice 
display="Ideographic Top; Up" 
value={flashx.textLayout.formats.LeadingModel.IDEOGRAPHIC_TOP_UP}/>
+                                                       <choice 
display="Ideographic Center; Up" 
value={flashx.textLayout.formats.LeadingModel.IDEOGRAPHIC_CENTER_UP}/>
+                                                       <choice 
display="Ideographic Top; Down" 
value={flashx.textLayout.formats.LeadingModel.IDEOGRAPHIC_TOP_DOWN}/>
+                                                       <choice 
display="Ideographic Center; Down" 
value={flashx.textLayout.formats.LeadingModel.IDEOGRAPHIC_CENTER_DOWN}/>
+                                                       <choice 
display="Ascent-Descent; Up" 
value={flashx.textLayout.formats.LeadingModel.ASCENT_DESCENT_UP}/>
+                                                       <choice 
display="Approximate TextField" 
value={flashx.textLayout.formats.LeadingModel.APPROXIMATE_TEXT_FIELD}/>
+                                                       <choice display="Auto" 
value={flashx.textLayout.formats.LeadingModel.AUTO}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/Lacale=Locale:">
+                                                       <property 
name={TextInspectorController.PARA_LOCALE_UIPROP}/>
+                                                       <choice 
display="Arabic" value="ar"/>,
+                                                       <choice 
display="Bengali" value="bn"/>,
+                                                       <choice 
display="Bulgarian" value="bg"/>,
+                                                       <choice 
display="Catalan" value="ca"/>,
+                                                       <choice 
display="Chinese, Simplified (China)" value="zh-CN"/>,
+                                                       <choice 
display="Chinese, Traditional (Taiwan)" value="zh-TW"/>,
+                                                       <choice 
display="Croatian" value="hr"/>,
+                                                       <choice display="Czech" 
value="cs"/>,
+                                                       <choice 
display="Danish" value="da"/>,
+                                                       <choice display="Dutch" 
value="nl"/>,
+                                                       <choice 
display="English" value="en"/>,
+                                                       <choice 
display="Estonian" value="et"/>,
+                                                       <choice 
display="Finnish" value="fi"/>,
+                                                       <choice 
display="French" value="fr"/>,
+                                                       <choice 
display="German" value="de"/>,
+                                                       <choice display="Greek" 
value="el"/>,
+                                                       <choice 
display="Gujarati" value="gu"/>,
+                                                       <choice display="Hindi" 
value="hi"/>,
+                                                       <choice 
display="Hebrew" value="he"/>,
+                                                       <choice 
display="Hungarian" value="hu"/>,
+                                                       <choice 
display="Italian" value="it"/>,
+                                                       <choice 
display="Japanese" value="ja"/>,
+                                                       <choice 
display="Korean" value="ko"/>,
+                                                       <choice 
display="Latvian" value="lv"/>,
+                                                       <choice 
display="Lithuanian" value="lt"/>,
+                                                       <choice 
display="Marathi" value="mr"/>,
+                                                       <choice 
display="Norwegian" value="no"/>,
+                                                       <choice 
display="Persian" value="fa"/>,
+                                                       <choice 
display="Polish" value="pl"/>,
+                                                       <choice 
display="Portuguese" value="pt"/>,
+                                                       <choice 
display="Punjabi" value="pa"/>,
+                                                       <choice 
display="Romanian" value="ro"/>,
+                                                       <choice 
display="Russian" value="ru"/>,
+                                                       <choice 
display="Slovak" value="sk"/>,
+                                                       <choice 
display="Slovenian" value="sl"/>,
+                                                       <choice 
display="Spanish" value="es"/>,
+                                                       <choice 
display="Swedish" value="sv"/>,
+                                                       <choice display="Tamil" 
value="ta"/>,
+                                                       <choice 
display="Telugu" value="te"/>,
+                                                       <choice display="Thai" 
value="th"/>,
+                                                       <choice 
display="Turkish" value="tr"/>,
+                                                       <choice 
display="Ukrainian" value="uk"/>,
+                                                       <choice display="Urdu" 
value="ur"/>,
+                                                       <choice 
display="Vietnamese" value="vi"/>
+                                               </editor>
+                                       </row>
+                               </recipe>;
+
+                       super(recipe);
+                       
+                       SetIcon("alignStartIcon", alignStartIcon);
+                       SetIcon("alignEndIcon", alignEndIcon);
+                       SetIcon("alignLeftIcon", alignLeftIcon);
+                       SetIcon("alignCenterIcon", alignCenterIcon);
+                       SetIcon("alignRightIcon", alignRightIcon);
+                       SetIcon("alignJustifyIcon", alignJustifyIcon);
+                       SetIcon("alignLastLeftIcon", alignLastLeftIcon);
+                       SetIcon("alignLastCenterIcon", alignLastCenterIcon);
+                       SetIcon("alignLastRightIcon", alignLastRightIcon);
+               }
+       }
+}
\ No newline at end of file

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/SelectionUpdateEvent.as
==============================================================================
--- 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/SelectionUpdateEvent.as
 (added)
+++ 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/SelectionUpdateEvent.as
 Sat Aug 23 08:50:20 2014
@@ -0,0 +1,41 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.inspectors
+{
+       import flash.events.Event;
+
+       public class SelectionUpdateEvent extends Event
+       {
+               public static const SELECTION_UPDATE:String = "selectionUpdate";
+               
+               public function SelectionUpdateEvent(inFormat:Object)
+               {
+                       super(SELECTION_UPDATE);
+                       mFormat = inFormat;
+               }
+               
+               public function get format():Object
+               {
+                       return mFormat;
+               }
+               
+               private var mFormat:Object;
+       }
+}
\ No newline at end of file

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TabPropertyEditor.as
==============================================================================
--- 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TabPropertyEditor.as
 (added)
+++ 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TabPropertyEditor.as
 Sat Aug 23 08:50:20 2014
@@ -0,0 +1,64 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.inspectors
+{
+       import bxf.ui.inspectors.DynamicPropertyEditorBase;
+       
+       import flash.text.engine.*;
+       
+       import flashx.textLayout.formats.TabStopFormat;
+       import flashx.textLayout.tlf_internal;
+       use namespace tlf_internal;
+       
+       public class TabPropertyEditor extends DynamicPropertyEditorBase
+       {
+               public function TabPropertyEditor()
+               {
+                       var recipe:XML = 
+                               <recipe>
+                                       <row>
+                                               <editor type="checkbox" 
label="$$$/stage/TextEditing/Label/showRuler=Show Ruler" labelSide="right">
+                                                       <property 
name="rulervisible"/>
+                                               </editor>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/tabPosition=Position:" decimals="1" 
enforcePrecision="no">
+                                                       <property 
name={TabStopFormat.positionProperty.name}
+                                                               
minValue={TabStopFormat.positionProperty.minValue}
+                                                               
maxValue={TabStopFormat.positionProperty.maxValue}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/tabType=Tab Type:">
+                                                       <property 
name={TabStopFormat.alignmentProperty.name}/>
+                                                       <choice display="Start" 
value={flash.text.engine.TabAlignment.START}/>
+                                                       <choice 
display="Center" value={flash.text.engine.TabAlignment.CENTER}/>
+                                                       <choice display="End" 
value={flash.text.engine.TabAlignment.END}/>
+                                                       <choice display="Align" 
value={flash.text.engine.TabAlignment.DECIMAL}/>
+                                               </editor>
+                                               <editor type="string" 
label="$$$/stage/TextEditing/Label/tabAlign=Align to:" width="50">
+                                                       <property 
name={TabStopFormat.decimalAlignmentTokenProperty.name}/>
+                                               </editor>
+                                       </row>
+                               </recipe>;
+
+                       super(recipe);
+               }
+               
+       }
+}
\ No newline at end of file

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TextContainerPropertyEditor.as
==============================================================================
--- 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TextContainerPropertyEditor.as
 (added)
+++ 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TextContainerPropertyEditor.as
 Sat Aug 23 08:50:20 2014
@@ -0,0 +1,151 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.inspectors
+{
+       import flash.text.engine.*;
+
+       import flashx.textLayout.formats.FormatValue;
+       import flashx.textLayout.formats.TextLayoutFormat;
+       import flashx.textLayout.tlf_internal;
+       use namespace tlf_internal;
+       
+       public class TextContainerPropertyEditor extends 
DynamicTextPropertyEditor
+       {
+               [Embed(source="./assets/cont_align_top_icon.png")]
+               private var contAlignTopIcon:Class;
+
+               [Embed(source="./assets/cont_align_middle_icon.png")]
+               private var contAlignMiddleIcon:Class;
+
+               [Embed(source="./assets/cont_align_bottom_icon.png")]
+               private var contAlignBottomIcon:Class;
+
+               [Embed(source="./assets/cont_align_justify_icon.png")]
+               private var contAlignJustifyIcon:Class;
+
+               public function TextContainerPropertyEditor()
+               {
+                       var recipe:XML =
+                               <recipe>
+                                       <row>
+                                               <editor type="multiIconButton" 
style="iconButtonGroup" 
label="$$$/stage/TextEditing/Label/Container/Alignment=Alignment:">
+                                                       <property 
name={TextInspectorController.VERTICAL_ALIGN_UIPROP}/>
+                                                       <button 
icon="contAlignTopIcon" value="top"/>
+                                                       <button 
icon="contAlignMiddleIcon" value="middle"/>
+                                                       <button 
icon="contAlignBottomIcon" value="bottom"/>
+                                                       <button 
icon="contAlignJustifyIcon" value="justify"/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="hotnumberunit" 
label="$$$/stage/TextEditing/Label/NumColumns=Columns:">
+                                                       <property 
name={TextInspectorController.COLUMN_COUNT_UIPROP}/>
+                                                       
<defaultunit>count</defaultunit>
+                                                       <numericunit 
displayname="count"
+                                                               
min={TextLayoutFormat.columnCountProperty.minValue} 
+                                                               
max={TextLayoutFormat.columnCountProperty.maxValue} 
+                                                               default="1"/>
+                                                       <enumval 
displayname="Auto" value={flashx.textLayout.formats.FormatValue.AUTO}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="hotnumberunit" 
label="$$$/stage/TextEditing/Label/ColumnWidth=Column Width:">
+                                                       <property 
name={TextInspectorController.COLUMN_WIDTH_UIPROP}/>
+                                                       
<defaultunit>pix</defaultunit>
+                                                       <numericunit 
displayname="pix" 
+                                                               
min={TextLayoutFormat.columnWidthProperty.minValue} 
+                                                               
max={TextLayoutFormat.columnWidthProperty.maxValue} 
+                                                               default="200"/>
+                                                       <enumval 
displayname="Auto" value={flashx.textLayout.formats.FormatValue.AUTO}/>
+                                               </editor>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/ColumnGap=Gap:" decimals="1" 
enforcePrecision="no">
+                                                       <property 
name={TextInspectorController.COLUMN_GAP_UIPROP} 
+                                                               
minValue={TextLayoutFormat.columnGapProperty.minValue}
+                                                               
maxValue={TextLayoutFormat.columnGapProperty.maxValue}/>
+                                               </editor>
+                                       </row>
+                                       <row 
label="$$$/stage/TextEditing/Label/ContainerGeometry=Geometry:"/>
+                                       <row>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/PaddingLeft=Left:" decimals="1" 
enforcePrecision="no">
+                                                       <property 
name={TextInspectorController.PADDING_LEFT_UIPROP} 
+                                                               
minValue={TextLayoutFormat.paddingLeftProperty.minValue} 
+                                                               
maxValue={TextLayoutFormat.paddingLeftProperty.maxValue}/>
+                                               </editor>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/PaddingTop=Top:" decimals="1" 
enforcePrecision="no">
+                                                       <property 
name={TextInspectorController.PADDING_TOP_UIPROP} 
+                                                               
minValue={TextLayoutFormat.paddingTopProperty.minValue} 
+                                                               
maxValue={TextLayoutFormat.paddingTopProperty.maxValue}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/PaddingRight=Right:" decimals="1" 
enforcePrecision="no">
+                                                       <property 
name={TextInspectorController.PADDING_RIGHT_UIPROP} 
+                                                               
minValue={TextLayoutFormat.paddingRightProperty.minValue} 
+                                                               
maxValue={TextLayoutFormat.paddingRightProperty.maxValue}/>
+                                               </editor>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/PaddingBottom=Bottom:" decimals="1" 
enforcePrecision="no">
+                                                       <property 
name={TextInspectorController.PADDING_BOTTOM_UIPROP} 
+                                                               
minValue={TextLayoutFormat.paddingBottomProperty.minValue} 
+                                                               
maxValue={TextLayoutFormat.paddingBottomProperty.maxValue}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="hotnumberunit" 
label="$$$/stage/TextEditing/Label/FirstBaseline=First Line Offset:">
+                                                       <property 
name={TextInspectorController.FIRST_BASELINE_UIPROP}/>
+                                                       
<defaultunit>pix</defaultunit>
+                                                       <numericunit 
displayname="pix" 
+                                                               
min={TextLayoutFormat.firstBaselineOffsetProperty.minValue}
+                                                               
max={TextLayoutFormat.firstBaselineOffsetProperty.maxValue} 
+                                                               default="1"/>
+                                                       <enumval 
displayname="Auto" value={flashx.textLayout.formats.BaselineOffset.AUTO}/>
+                                                       <enumval 
displayname="Ascent" value={flashx.textLayout.formats.BaselineOffset.ASCENT}/>
+                                                       <enumval 
displayname="Line Height" 
value={flashx.textLayout.formats.BaselineOffset.LINE_HEIGHT}/>
+                                               </editor>
+                                       </row>
+                       <!--            <row 
label="$$$/stage/TextEditing/Label/Border=Border:">
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/BorderStyle=Style:">
+                                                       <property 
name={TextInspectorController.BORDER_STYLE_UIPROP}/>
+                                                       <choice display="None" 
value={text.BorderStyle.NONE}/>
+                                                       <choice display="Solid" 
value={text.BorderStyle.SOLID}/>
+                                                       <choice display="Innie" 
value={text.BorderStyle.INSET}/>
+                                                       <choice display="Outie" 
value={text.BorderStyle.OUTSET}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="hotnumber" 
label="$$$/stage/TextEditing/Label/BorderThickness=Thickness:" decimals="0" 
enforcePrecision="yes">
+                                                       <property 
name={TextInspectorController.BORDER_THICKNESS_UIPROP} 
+                                                               
minValue={TextLayoutFormat.borderThicknessProperty.minValue}
+                                                               
maxValue={TextLayoutFormat.borderThicknessProperty.maxValue}/>
+                                               </editor>
+                                               <editor type="color" 
label="$$$/stage/TextEditing/Label/BorderColor=Color:">
+                                                       <property 
name={TextInspectorController.BORDER_COLOR_UIPROP}/>
+                                               </editor>
+                                       </row> -->
+                               </recipe>;
+
+                       super(recipe);
+
+                       SetIcon("contAlignTopIcon", contAlignTopIcon);
+                       SetIcon("contAlignMiddleIcon", contAlignMiddleIcon);
+                       SetIcon("contAlignBottomIcon", contAlignBottomIcon);
+                       SetIcon("contAlignJustifyIcon", contAlignJustifyIcon);
+               }
+               
+       }
+}
\ No newline at end of file

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TextFlowPropertyEditor.as
==============================================================================
--- 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TextFlowPropertyEditor.as
 (added)
+++ 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TextFlowPropertyEditor.as
 Sat Aug 23 08:50:20 2014
@@ -0,0 +1,71 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.inspectors
+{
+       import flashx.textLayout.formats.BlockProgression;
+       import flashx.textLayout.formats.LineBreak;
+
+       public class TextFlowPropertyEditor extends DynamicTextPropertyEditor
+       {
+               public function TextFlowPropertyEditor()
+               {
+                       var recipe:XML =
+                               <recipe>
+                                       <row>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/LineProgression=Orientation:">
+                                                       <property 
name={TextInspectorController.BLOCK_PROGRESSION_UIPROP}/>
+                                                       <choice 
display="Horizontal" value={flashx.textLayout.formats.BlockProgression.TB}/>
+                                                       <choice 
display="Vertical" value={flashx.textLayout.formats.BlockProgression.RL}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/direction=Direction:">
+                                                       <property 
name={TextInspectorController.FLOW_DIRECTION_UIPROP}/>
+                                                       <choice display="Left 
to Right" value={flashx.textLayout.formats.Direction.LTR}/>
+                                                       <choice display="Right 
to Left" value={flashx.textLayout.formats.Direction.RTL}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/Linebreak=Line Breaks:">
+                                                       <property 
name={TextInspectorController.LINE_BREAK_UIPROP}/>
+                                                       <choice display="Auto 
Line Wrap" value={flashx.textLayout.formats.LineBreak.TO_FIT}/>
+                                                       <choice display="Hard 
Breaks Only" value={flashx.textLayout.formats.LineBreak.EXPLICIT}/>
+                                               </editor>
+                                       </row>
+                                       <row>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/vertScroll=V. Scroll:">
+                                                       <property 
name={TextInspectorController.VERTICAL_SCROLL_UIPROP}/>
+                                                       <choice display="Off" 
value="off"/>
+                                                       <choice display="On" 
value="on"/>
+                                                       <choice display="Auto" 
value="auto"/>
+                                               </editor>
+                                               <editor type="combo" 
label="$$$/stage/TextEditing/Label/horzScroll=H. Scroll:">
+                                                       <property 
name={TextInspectorController.HORIZONTAL_SCROLL_UIPROP}/>
+                                                       <choice display="Off" 
value="off"/>
+                                                       <choice display="On" 
value="on"/>
+                                                       <choice display="Auto" 
value="auto"/>
+                                               </editor>
+                                       </row>
+                               </recipe>;
+                       super(recipe);
+               }
+               
+       }
+}
\ No newline at end of file

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TextInspectorController.as
==============================================================================
--- 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TextInspectorController.as
 (added)
+++ 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/TextInspectorController.as
 Sat Aug 23 08:50:20 2014
@@ -0,0 +1,614 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.inspectors
+{
+       import flash.events.EventDispatcher;
+       import flash.events.IEventDispatcher;
+       import flash.text.engine.RenderingMode;
+       
+       import flashx.textLayout.compose.TextFlowLine;
+       import flashx.textLayout.container.ContainerController;
+       import flashx.textLayout.edit.ElementRange;
+       import flashx.textLayout.edit.IEditManager;
+       import flashx.textLayout.edit.SelectionState;
+       import flashx.textLayout.elements.FlowElement;
+       import flashx.textLayout.elements.FlowLeafElement;
+       import flashx.textLayout.elements.LinkElement;
+       import flashx.textLayout.elements.ParagraphElement;
+       import flashx.textLayout.elements.SpanElement;
+       import flashx.textLayout.elements.TCYElement;
+       import flashx.textLayout.elements.TextFlow;
+       import flashx.textLayout.events.SelectionEvent;
+       import flashx.textLayout.formats.ITextLayoutFormat;
+       import flashx.textLayout.formats.TextAlign;
+       import flashx.textLayout.formats.TextLayoutFormat;
+       import flashx.textLayout.tlf_internal;
+       import flashx.textLayout.ui.rulers.RulerBar;
+       
+       use namespace tlf_internal;
+
+       public class TextInspectorController extends EventDispatcher
+       {
+               public static const CHAR_DOMAIN:String = "char"
+               public static const PAR_DOMAIN:String = "par"
+               public static const CONT_DOMAIN:String = "cont"
+               public static const FLOW_DOMAIN:String = "flow"
+               public static const SCROLL_DOMAIN:String = "sp"
+               public static const TCY_DOMAIN:String = "tcy"
+               public static const LINK_DOMAIN:String = "link"
+               
+               public static const FONT_SIZE_UIPROP:String = CHAR_DOMAIN + "/" 
+ TextLayoutFormat.fontSizeProperty.name;
+               public static const FONT_FAMILY_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.fontFamilyProperty.name;
+               public static const FONT_LOOKUP_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.fontLookupProperty.name;
+               public static const TRACKING_RIGHT_UIPROP:String = CHAR_DOMAIN 
+ "/" + TextLayoutFormat.trackingRightProperty.name;
+               public static const TRACKING_LEFT_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.trackingLeftProperty.name;
+               public static const KERNING_UIPROP:String = CHAR_DOMAIN + "/" + 
TextLayoutFormat.kerningProperty.name;
+               public static const LINE_HEIGHT_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.lineHeightProperty.name;
+               public static const COLOR_UIPROP:String = CHAR_DOMAIN + "/" + 
TextLayoutFormat.colorProperty.name;
+               public static const BGCOLOR_UIPROP:String = CHAR_DOMAIN + "/" + 
TextLayoutFormat.backgroundColorProperty.name;
+               public static const FONT_WEIGHT_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.fontWeightProperty.name;
+               public static const FONT_STYLE_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.fontStyleProperty.name;
+               public static const TEXT_DECORATION_UIPROP:String = CHAR_DOMAIN 
+ "/" + TextLayoutFormat.textDecorationProperty.name;
+               public static const LINE_THROUGH_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.lineThroughProperty.name;
+               public static const DIGIT_CASE_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.digitCaseProperty.name;
+               public static const DIGIT_WIDTH_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.digitWidthProperty.name;
+               public static const DOMINANT_BASELINE_UIPROP:String = 
CHAR_DOMAIN + "/" + TextLayoutFormat.dominantBaselineProperty.name;
+               public static const ALIGNMENT_BASELINE_UIPROP:String = 
CHAR_DOMAIN + "/" + TextLayoutFormat.alignmentBaselineProperty.name;
+               public static const BASELINE_SHIFT_SUPER_UIPROP:String = 
CHAR_DOMAIN + "/" + TextLayoutFormat.baselineShiftProperty.name + "#super";
+               public static const BASELINE_SHIFT_SUB_UIPROP:String = 
CHAR_DOMAIN + "/" + TextLayoutFormat.baselineShiftProperty.name + "#sub";
+               public static const BASELINE_SHIFT_UIPROP:String = CHAR_DOMAIN 
+ "/" + TextLayoutFormat.baselineShiftProperty.name;
+               public static const TYPOGRAPHIC_CASE_UIPROP:String = 
CHAR_DOMAIN + "/" + TextLayoutFormat.typographicCaseProperty.name;
+               public static const LIGATURE_LEVEL_UIPROP:String = CHAR_DOMAIN 
+ "/" + TextLayoutFormat.ligatureLevelProperty.name;
+               public static const TEXT_ROTATION_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.textRotationProperty.name;
+               public static const TEXT_ALPHA_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.textAlphaProperty.name;
+               public static const BACKGROUND_ALPHA_UIPROP:String = 
CHAR_DOMAIN + "/" + TextLayoutFormat.backgroundAlphaProperty.name;
+               public static const LOCALE_UIPROP:String = CHAR_DOMAIN + "/" + 
TextLayoutFormat.localeProperty.name;
+               public static const BREAK_OPPORTUNITY_UIPROP:String = 
CHAR_DOMAIN + "/" + TextLayoutFormat.breakOpportunityProperty.name;
+               public static const RENDERING_MODE_UIPROP:String = CHAR_DOMAIN 
+ "/" + TextLayoutFormat.renderingModeProperty.name;
+               public static const CFF_HINTING_UIPROP:String = CHAR_DOMAIN + 
"/" + TextLayoutFormat.cffHintingProperty.name;
+               
+               public static const PARA_LOCALE_UIPROP:String = PAR_DOMAIN + 
"/" + TextLayoutFormat.localeProperty.name;
+               public static const TEXT_INDENT_UIPROP:String = PAR_DOMAIN + 
"/" + TextLayoutFormat.textIndentProperty.name;
+               public static const START_INDENT_UIPROP:String = PAR_DOMAIN + 
"/" + TextLayoutFormat.paragraphStartIndentProperty.name;
+               public static const END_INDENT_UIPROP:String = PAR_DOMAIN + "/" 
+ TextLayoutFormat.paragraphEndIndentProperty.name;
+               public static const SPACE_BEFORE_UIPROP:String = PAR_DOMAIN + 
"/" + TextLayoutFormat.paragraphSpaceBeforeProperty.name;
+               public static const SPACE_AFTER_UIPROP:String = PAR_DOMAIN + 
"/" + TextLayoutFormat.paragraphSpaceAfterProperty.name;
+               public static const TEXT_ALIGN_UIPROP:String = PAR_DOMAIN + "/" 
+ TextLayoutFormat.textAlignProperty.name;
+               public static const TEXT_ALIGN_LAST_UIPROP:String = PAR_DOMAIN 
+ "/" + TextLayoutFormat.textAlignLastProperty.name;
+               public static const JUSTIFICATION_RULE_UIPROP:String = 
PAR_DOMAIN + "/" + TextLayoutFormat.justificationRuleProperty.name;
+               public static const TEXT_JUSTIFY_UIPROP:String = PAR_DOMAIN + 
"/" + TextLayoutFormat.textJustifyProperty.name;
+               public static const JUSTIFICATION_STYLE_UIPROP:String = 
PAR_DOMAIN + "/" + TextLayoutFormat.justificationStyleProperty.name;
+               public static const DIRECTION_UIPROP:String = PAR_DOMAIN + "/" 
+ TextLayoutFormat.directionProperty.name;
+               public static const LEADING_MODEL_UIPROP:String = PAR_DOMAIN + 
"/" + TextLayoutFormat.leadingModelProperty.name;
+
+               public static const VERTICAL_ALIGN_UIPROP:String = CONT_DOMAIN 
+ "/" + TextLayoutFormat.verticalAlignProperty.name;
+               public static const COLUMN_COUNT_UIPROP:String = CONT_DOMAIN + 
"/" + TextLayoutFormat.columnCountProperty.name;
+               public static const COLUMN_WIDTH_UIPROP:String = CONT_DOMAIN + 
"/" + TextLayoutFormat.columnWidthProperty.name;
+               public static const COLUMN_GAP_UIPROP:String = CONT_DOMAIN + 
"/" + TextLayoutFormat.columnGapProperty.name;
+               public static const PADDING_LEFT_UIPROP:String = CONT_DOMAIN + 
"/" + TextLayoutFormat.paddingLeftProperty.name;
+               public static const PADDING_TOP_UIPROP:String = CONT_DOMAIN + 
"/" + TextLayoutFormat.paddingTopProperty.name;
+               public static const PADDING_RIGHT_UIPROP:String = CONT_DOMAIN + 
"/" + TextLayoutFormat.paddingRightProperty.name;
+               public static const PADDING_BOTTOM_UIPROP:String = CONT_DOMAIN 
+ "/" + TextLayoutFormat.paddingBottomProperty.name;
+               public static const FIRST_BASELINE_UIPROP:String = CONT_DOMAIN 
+ "/" + TextLayoutFormat.firstBaselineOffsetProperty.name;
+
+               public static const BLOCK_PROGRESSION_UIPROP:String = 
FLOW_DOMAIN + "/" + TextLayoutFormat.blockProgressionProperty.name;
+               public static const FLOW_DIRECTION_UIPROP:String = FLOW_DOMAIN 
+ "/" + TextLayoutFormat.directionProperty.name;
+               public static const LINE_BREAK_UIPROP:String = FLOW_DOMAIN + 
"/" + TextLayoutFormat.lineBreakProperty.name;
+
+               public static const VERTICAL_SCROLL_UIPROP:String = 
SCROLL_DOMAIN + "/" + "verticalScrollPolicy";
+               public static const HORIZONTAL_SCROLL_UIPROP:String = 
SCROLL_DOMAIN + "/" + "horizontalScrollPolicy";
+
+               public static const TCY_UIPROP:String = TCY_DOMAIN + "/" + 
"tcy";
+
+               public static const LINK_URL_UIPROP:String = LINK_DOMAIN + "/" 
+ "linkURL";
+               public static const LINK_TARGET_UIPROP:String = LINK_DOMAIN + 
"/" + "linkTarget";
+               public static const LINK_EXTEND_UIPROP:String = LINK_DOMAIN + 
"/" + "linkExtend";
+               private static var sInstance:TextInspectorController = null;
+               
+               private var processingCharacterFormatChange:Boolean = false;
+               
+               public function 
TextInspectorController(target:IEventDispatcher=null)
+               {
+                       super(target);
+                       if (sInstance != null)
+                               throw new Error("Can't create another 
TextEditingController. Call TextEditingController.Instance.");
+               }
+               
+               public static function Instance():TextInspectorController
+               {
+                       if (!sInstance)
+                               sInstance = new TextInspectorController();
+                       return sInstance;
+               }
+               
+               public function set activeFlow(inFlow:TextFlow):void
+               {
+                       if (inFlow && !inFlow.interactionManager is 
IEditManager)
+                               throw new Error("Can't set the active flow to a 
flow without an EditManager.");
+                       if (mActiveFlow)
+                       {
+                               
mActiveFlow.removeEventListener(SelectionEvent.SELECTION_CHANGE, 
onTextSelectionChanged);
+                               mEditManager = null;
+                       }
+                       mActiveFlow = inFlow;
+                       if (mActiveFlow)
+                       {
+                               mEditManager = mActiveFlow.interactionManager 
as IEditManager;
+                               
mActiveFlow.addEventListener(SelectionEvent.SELECTION_CHANGE, 
onTextSelectionChanged);
+                       }
+                       else
+                               onTextSelectionChanged(null);
+                       for each (var ruler:RulerBar in mRulers)
+                               ruler.activeFlow = mActiveFlow;
+               }
+               
+               public function get activeFlow():TextFlow
+               {
+                       return mActiveFlow;
+               }
+               
+               public function set rulerVisible(inVisible:Boolean):void
+               {
+                       for each (var ruler:RulerBar in mRulers)
+                       {
+                               ruler.active = inVisible;
+                               if (inVisible)
+                               {
+                                       ruler.RedrawRuler();
+                               }
+                       }
+                       if (mActiveFlow && (mActiveFlow.interactionManager))
+                       {
+                               mActiveFlow.interactionManager.setFocus();
+                       }
+               }
+               
+               public function get rulerVisible():Boolean
+               {
+                       if (mRulers.length > 0)
+                               return mRulers[0].active;
+                       return false;
+               }
+
+               public function AddRuler(inRuler:RulerBar):void
+               {
+                       mRulers.push(inRuler);
+               }
+               
+               private function onTextSelectionChanged(e:SelectionEvent):void
+               {
+                       if ((processingCharacterFormatChange) && 
(mEditManager.absoluteStart == mEditManager.absoluteEnd)) return;
+                       
+                       if (e)
+                       {
+                               var selState:SelectionState = e.selectionState;
+                               var selectedElementRange:ElementRange =  
selState ? ElementRange.createElementRange(selState.textFlow, 
selState.absoluteStart, selState.absoluteEnd) : null;
+                               if (selectedElementRange)
+                               {
+                                       var format:Object = 
GetFormatFromRange(selectedElementRange,selState.pointFormat);
+                                       if (mLastFormat == null || 
FormatChanged(mLastFormat, format))
+                                       {
+                                               dispatchEvent(new 
SelectionUpdateEvent(format));
+                                               mLastFormat = format;
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               dispatchEvent(new SelectionUpdateEvent(new 
Object()));
+                               mLastFormat = null;
+                       }
+               }
+               
+               public function forceBroadcastFormats():void
+               {
+                       if (mEditManager)
+                       {
+                               var format:Object = 
GetFormatFromRange(ElementRange.createElementRange(mActiveFlow, 
mActiveFlow.interactionManager.anchorPosition, 
mActiveFlow.interactionManager.activePosition),null);
+                               dispatchEvent(new SelectionUpdateEvent(format));
+                               mLastFormat = format;
+                       }
+               }
+               
+               private function FormatChanged(format1:Object, 
format2:Object):Boolean
+               {
+                       if (format1.numProps == format2.numProps)
+                       {
+                               for(var key:String in format1)
+                               {
+                                       if (format2[key] == null)
+                                               return true;
+                                       var prop1:Array = format1[key];
+                                       var prop2:Array = format2[key];
+                                       var n:int = prop1.length;
+                                       if (n != prop2.length)
+                                               return true;
+                                       for (var i:int = 0; i < n; ++i)
+                                               if (prop1[i] != prop2[i])
+                                                       return true;
+                               }
+                               return false;
+                       }
+                       return true;
+               }
+
+               private function 
GetFormatFromRange(inRange:ElementRange,pendingFormat:ITextLayoutFormat):Object
+               {
+                       var format:Object = new Object();
+                       format.numProps = 0;
+                       format.setPropertyIsEnumerable("numProps", false);
+                       var leafIter:FlowLeafElement = inRange.firstLeaf;
+                       while (leafIter)
+                       {
+                               var charFormat:ITextLayoutFormat = 
leafIter.computedFormat;
+                               if (pendingFormat)
+                               {
+                                       var scratch:TextLayoutFormat = new 
TextLayoutFormat(charFormat);
+                                       scratch.apply(pendingFormat);
+                                       charFormat = scratch;
+                               }
+                               AddAttributeToFormat(format, 
FONT_FAMILY_UIPROP, charFormat.fontFamily);
+                               if (!IsMetaFontName(charFormat.fontFamily))
+                                       AddAttributeToFormat(format, 
FONT_LOOKUP_UIPROP, charFormat.fontLookup);
+                               AddAttributeToFormat(format, FONT_SIZE_UIPROP, 
charFormat.fontSize);
+                               AddAttributeToFormat(format, 
TRACKING_RIGHT_UIPROP, charFormat.trackingRight);
+                               AddAttributeToFormat(format, 
TRACKING_LEFT_UIPROP, charFormat.trackingLeft);
+                               AddAttributeToFormat(format, KERNING_UIPROP, 
charFormat.kerning);
+                               AddAttributeToFormat(format, 
LINE_HEIGHT_UIPROP, charFormat.lineHeight);
+                               AddAttributeToFormat(format, COLOR_UIPROP, 
charFormat.color);
+                               AddAttributeToFormat(format, BGCOLOR_UIPROP, 
charFormat.backgroundColor);
+                               AddAttributeToFormat(format, 
FONT_WEIGHT_UIPROP, charFormat.fontWeight);
+                               AddAttributeToFormat(format, FONT_STYLE_UIPROP, 
charFormat.fontStyle);
+                               AddAttributeToFormat(format, 
TEXT_DECORATION_UIPROP, charFormat.textDecoration);
+                               AddAttributeToFormat(format, 
LINE_THROUGH_UIPROP, charFormat.lineThrough);
+                               // This little kludge allows me to have two 
controls operate on the same property
+                               AddAttributeToFormat(format, 
BASELINE_SHIFT_SUPER_UIPROP,
+                                               charFormat.baselineShift == 
flashx.textLayout.formats.BaselineShift.SUPERSCRIPT ?
+                                                                               
                                
flashx.textLayout.formats.BaselineShift.SUPERSCRIPT :
+                                                                               
                                0);
+                               AddAttributeToFormat(format, 
BASELINE_SHIFT_SUB_UIPROP,
+                                               charFormat.baselineShift == 
flashx.textLayout.formats.BaselineShift.SUBSCRIPT ?
+                                                                               
                                
flashx.textLayout.formats.BaselineShift.SUBSCRIPT :
+                                                                               
                                0);
+                               AddAttributeToFormat(format, DIGIT_CASE_UIPROP, 
charFormat.digitCase);
+                               AddAttributeToFormat(format, 
DIGIT_WIDTH_UIPROP, charFormat.digitWidth);
+                               AddAttributeToFormat(format, 
DOMINANT_BASELINE_UIPROP, charFormat.dominantBaseline);
+                               AddAttributeToFormat(format, 
ALIGNMENT_BASELINE_UIPROP, charFormat.alignmentBaseline);
+                               AddAttributeToFormat(format, 
BASELINE_SHIFT_UIPROP, charFormat.baselineShift);
+                               AddAttributeToFormat(format, 
TYPOGRAPHIC_CASE_UIPROP, charFormat.typographicCase);
+                               AddAttributeToFormat(format, 
LIGATURE_LEVEL_UIPROP, charFormat.ligatureLevel);
+                               AddAttributeToFormat(format, 
TEXT_ROTATION_UIPROP, charFormat.textRotation);
+                               AddAttributeToFormat(format, TEXT_ALPHA_UIPROP, 
charFormat.textAlpha);
+                               AddAttributeToFormat(format, 
BACKGROUND_ALPHA_UIPROP, charFormat.backgroundAlpha);
+                               AddAttributeToFormat(format, LOCALE_UIPROP, 
charFormat.locale);
+                               AddAttributeToFormat(format, 
BREAK_OPPORTUNITY_UIPROP, charFormat.breakOpportunity);
+                               AddAttributeToFormat(format, 
RENDERING_MODE_UIPROP, charFormat.renderingMode);
+                               if (charFormat.renderingMode == 
flash.text.engine.RenderingMode.CFF)
+                                       AddAttributeToFormat(format, 
CFF_HINTING_UIPROP, charFormat.cffHinting);
+                               
+                               
+                               var paragraph:ParagraphElement = 
leafIter.getParagraph();
+                               var paraFormat:ITextLayoutFormat = 
paragraph.computedFormat;
+                               AddAttributeToFormat(format, 
PARA_LOCALE_UIPROP, paraFormat.locale);
+                               AddAttributeToFormat(format, 
TEXT_INDENT_UIPROP, paraFormat.textIndent);
+                               AddAttributeToFormat(format, 
START_INDENT_UIPROP, paraFormat.paragraphStartIndent);
+                               AddAttributeToFormat(format, END_INDENT_UIPROP, 
paraFormat.paragraphEndIndent);
+                               AddAttributeToFormat(format, 
SPACE_BEFORE_UIPROP, paraFormat.paragraphSpaceBefore);
+                               AddAttributeToFormat(format, 
SPACE_AFTER_UIPROP, paraFormat.paragraphSpaceAfter);
+                               AddAttributeToFormat(format, TEXT_ALIGN_UIPROP, 
paraFormat.textAlign);
+                               if (paraFormat.textAlign == TextAlign.JUSTIFY)
+                                       AddAttributeToFormat(format, 
TEXT_ALIGN_LAST_UIPROP, paraFormat.textAlignLast);
+                               AddAttributeToFormat(format, 
JUSTIFICATION_RULE_UIPROP, paraFormat.justificationRule);
+                               AddAttributeToFormat(format, 
TEXT_JUSTIFY_UIPROP, paraFormat.textJustify);
+                               AddAttributeToFormat(format, 
JUSTIFICATION_STYLE_UIPROP, paraFormat.justificationStyle);
+                               AddAttributeToFormat(format, DIRECTION_UIPROP, 
paraFormat.direction);
+                               AddAttributeToFormat(format, 
LEADING_MODEL_UIPROP, paraFormat.leadingModel);
+                               
+                               addLinkSettings(format, leafIter);
+                               
+                               if (leafIter == inRange.lastLeaf)
+                                       break;
+
+                               leafIter = leafIter.getNextLeaf();
+                               
+                               //if this is a single point selection between 
differing elements, we don't want to pick up the second one
+                               //is start == end, break...
+                               if(inRange.absoluteStart == inRange.absoluteEnd)
+                                       break;
+                       }
+                       var containerFormat:ITextLayoutFormat = null;
+                       var selStart:int = 
Math.min(mActiveFlow.interactionManager.activePosition, 
mActiveFlow.interactionManager.anchorPosition);
+                       var selEnd:int = 
Math.max(mActiveFlow.interactionManager.activePosition, 
mActiveFlow.interactionManager.anchorPosition);
+                       var line:TextFlowLine = 
mActiveFlow.flowComposer.findLineAtPosition(selStart);
+                       
+                       // this is some odd logic - probably because 
ElementRange is not telling about the containercontroller range
+                       if (line && line.controller)
+                       {
+                               var controller:ContainerController = 
line.controller;
+                               line = 
mActiveFlow.flowComposer.findLineAtPosition(selEnd);
+                               var lastController:ContainerController = null;
+                               if (line && line.controller)
+                                       lastController = line.controller;
+                               while (controller)
+                               {
+                                       containerFormat = 
controller.computedFormat;
+                                       AddAttributeToFormat(format, 
VERTICAL_ALIGN_UIPROP, containerFormat.verticalAlign);
+                                       AddAttributeToFormat(format, 
COLUMN_COUNT_UIPROP, containerFormat.columnCount);
+                                       AddAttributeToFormat(format, 
COLUMN_WIDTH_UIPROP, containerFormat.columnWidth);
+                                       AddAttributeToFormat(format, 
COLUMN_GAP_UIPROP, containerFormat.columnGap);
+                                       AddAttributeToFormat(format, 
PADDING_LEFT_UIPROP, containerFormat.paddingLeft);
+                                       AddAttributeToFormat(format, 
PADDING_TOP_UIPROP, containerFormat.paddingTop);
+                                       AddAttributeToFormat(format, 
PADDING_RIGHT_UIPROP, containerFormat.paddingRight);
+                                       AddAttributeToFormat(format, 
PADDING_BOTTOM_UIPROP, containerFormat.paddingBottom);
+               // Note: These attributes are in the API but don't cause 
anything to be drawn. It looks like support
+               // for drawing borders on text containers is probably post-1.0. 
I have left in the XML description of
+               // how to build a UI for these properties, but commented this 
code out. If the DynamicPropertyEditorBase
+               // is never givena  value for these properties, it will not 
display the UI.
+               //                      AddAttributeToFormat(format, 
BORDER_COLOR_UIPROP, containerFormat.borderColor);
+               //                      AddAttributeToFormat(format, 
BORDER_STYLE_UIPROP, containerFormat.borderStyle);
+               //                      AddAttributeToFormat(format, 
BORDER_THICKNESS_UIPROP, containerFormat.borderThickness);
+                                       AddAttributeToFormat(format, 
FIRST_BASELINE_UIPROP, containerFormat.firstBaselineOffset);
+
+                                       if (controller == lastController)
+                                               break;
+                                       var myIdx:int = 
controller.flowComposer.getControllerIndex(controller);
+                                       controller = myIdx+1 == 
controller.flowComposer.numControllers ? null : 
controller.flowComposer.getControllerAt(myIdx+1);
+                               }
+                       }
+                       containerFormat = inRange.containerFormat;
+                       var tf:TextFlow = inRange.firstLeaf.getTextFlow();
+                       AddAttributeToFormat(format, BLOCK_PROGRESSION_UIPROP, 
tf.computedFormat.blockProgression);
+                       AddAttributeToFormat(format, FLOW_DIRECTION_UIPROP, 
tf.computedFormat.direction);
+                       AddAttributeToFormat(format, LINE_BREAK_UIPROP, 
tf.computedFormat.lineBreak);
+                       
+                       // TODO: uses first container only
+                       AddAttributeToFormat(format, VERTICAL_SCROLL_UIPROP, 
mActiveFlow.flowComposer.getControllerAt(0).verticalScrollPolicy);
+                       AddAttributeToFormat(format, HORIZONTAL_SCROLL_UIPROP, 
mActiveFlow.flowComposer.getControllerAt(0).horizontalScrollPolicy);
+
+                       if (isTCYEnabled())
+                               AddAttributeToFormat(format, TCY_UIPROP, 
TCY(inRange));
+                               
+                       if (shouldExtendLink(format))
+                               AddAttributeToFormat(format, 
LINK_EXTEND_UIPROP, true);
+                       
+                       return format;
+               }
+               
+               private function addLinkSettings(format:Object, 
leaf:FlowElement):void
+               {
+                       var linkElement:LinkElement = 
leaf.getParentByType(LinkElement) as LinkElement;
+                       if (linkElement)
+                       {
+                       AddAttributeToFormat(format, LINK_URL_UIPROP, 
linkElement.href);
+                       AddAttributeToFormat(format, LINK_TARGET_UIPROP, 
linkElement.target ? linkElement.target : "");
+                       }
+                       else
+                       {
+                       AddAttributeToFormat(format, LINK_URL_UIPROP, "");
+                       // Don't show link target or extend link if there's no 
URL property in the selection
+                       }
+                       
+               }
+               
+               private function shouldExtendLink(format:Object):Boolean
+               {
+                       // Check box is added if the selection contains mixed 
link settings (more than one, and at least one a valid link)
+                       var extendLink:Boolean = false;
+                       var urlArray:Array = format[LINK_URL_UIPROP];
+                       if (urlArray && urlArray.length > 1)
+                       {
+                               for each (var urlString:String in urlArray)
+                                       if (urlString.length > 1)
+                                       {
+                                               extendLink = true;
+                                               break;
+                                       }
+                       }
+                       return extendLink;
+               }
+               
+               private function isTCYEnabled():Boolean
+               {
+                       var okToTurnOnTCY:Boolean = false;
+                       if (mActiveFlow.interactionManager.isRangeSelection())
+                       {
+                               //have to also check if more than just the end 
of paragraph markers
+                               //are selected
+                                                               
+                               var selBegIdx:int = 
mActiveFlow.interactionManager.anchorPosition;
+                               var selEndIdx:int = 
mActiveFlow.interactionManager.activePosition;
+                               if (selBegIdx > selEndIdx)
+                               {
+                                       var tempInt:int = selBegIdx;
+                                       selBegIdx = selEndIdx;
+                                       selEndIdx = tempInt;
+                               }
+                               
+                               var para:ParagraphElement;
+                               var startParaPos:int;
+                               var endParaPos:int;
+                               var beginCheckPos:int;
+                               var endCheckPos:int;
+                               while ((!okToTurnOnTCY) && (selBegIdx < 
selEndIdx))
+                               {
+                                       para = 
mActiveFlow.findAbsoluteParagraph(selBegIdx);
+                                       startParaPos = para.getAbsoluteStart();
+                                       endParaPos = startParaPos + 
para.textLength;
+                                       
+                                       if (startParaPos > selBegIdx) 
+                                               beginCheckPos = startParaPos;
+                                       else 
+                                               beginCheckPos = selBegIdx
+                                               
+                                       if (endParaPos > selEndIdx)
+                                               endCheckPos = selEndIdx;
+                                       else
+                                               endCheckPos = endParaPos;
+                                       
+                                       var numSelInPar:int = endCheckPos - 
beginCheckPos;
+                                       if ((numSelInPar > 1) || ((numSelInPar 
== 1) && (endCheckPos != endParaPos)))
+                                       {
+                                               okToTurnOnTCY = true;
+                                       } else {
+                                               selBegIdx = endParaPos;
+                                       }
+                               }
+                       }
+                       return okToTurnOnTCY;
+               }
+               
+               public function TCY(range:ElementRange):Boolean
+               {
+                       if(range != null)
+                       {
+                               var anchorEl:FlowElement = range.firstLeaf;
+                               var endEl:FlowElement = range.lastLeaf;
+                               if ((endEl is SpanElement) && ((endEl as 
SpanElement).hasParagraphTerminator) && (endEl.textLength == 1))
+                               {
+                                       endEl = 
endEl.getTextFlow().findLeaf(endEl.getAbsoluteStart() - 1);
+                               }
+                               
+                               var anchorIsTCY:Boolean = false;
+                               var endIsTCY:Boolean = false;
+                               
+                               //if this or any of it's parents are TCY, then 
anchorIsTCY is true
+                               while(anchorEl != null && !anchorIsTCY)
+                               {
+                                       if(anchorEl is TCYElement)
+                                               anchorIsTCY = true;
+                                       
+                                       anchorEl = anchorEl.parent;
+                               }
+                               
+                               //if this or any of it's parents are TCY, then 
anchorIsTCY is true
+                               //NOTE: anchorEl and endEl may differing parent 
counts.
+                               while(endEl != null && !endIsTCY)
+                               {
+                                       if(endEl is TCYElement)
+                                               endIsTCY = true;
+                                       
+                                       endEl = endEl.parent;
+                               }
+                               
+                               return endIsTCY && anchorIsTCY;
+                       }
+                       else
+                               return false;
+               }
+               
+               private function IsMetaFontName(inFont:String):Boolean
+               {
+                       return (inFont == "_sans" || inFont == "_serif" || 
inFont == "_typewriter");
+               }
+               
+               private function AddAttributeToFormat(inFormat:Object, 
key:String, value:Object):void
+               {
+                       if (inFormat[key] == null)
+                       {
+                               inFormat[key] = [];
+                               ++inFormat.numProps;
+                       }
+                       if (inFormat[key].indexOf(value) == -1)
+                               inFormat[key].push(value);
+               }
+
+               public function SetTextProperty(inKey:String, 
inValue:Object):void
+               {
+                       var slashIndex:int = inKey.indexOf("/");
+                       if (slashIndex == -1)
+                               throw new Error("Expected a key with a slash in 
it.");
+                       var domain:String = inKey.slice(0, slashIndex);
+                       var key:String = inKey.slice(slashIndex + 1);
+                       // This little kludge allows me to have two controls 
operate on the same property
+                       var hashIndex:int = key.indexOf("#");
+                       if (hashIndex > -1)
+                               key = key.slice(0, hashIndex);
+                       if (mEditManager)
+                       {
+                               // scratch vars
+                               var pa:TextLayoutFormat;
+                               var cont:TextLayoutFormat;
+                               var ca:TextLayoutFormat;
+                               
+                               switch(domain) {
+                               case CHAR_DOMAIN:
+                                       ca = new TextLayoutFormat();
+                                       if (key == "color")
+                                       {
+                                               inValue = uint(inValue);
+                                               if (mActiveFlow)
+                                               {
+                                                       
mActiveFlow.interactionManager.setFocus();
+                                               }
+                                       }
+                                       if (key == "backgroundColor")
+                                       {
+                                               inValue = uint(inValue);
+                                       }
+                                       if (key == "lineThrough")
+                                               inValue = inValue == "true" ? 
true : false;
+                                       ca[key] = inValue;
+                                       if (key == "fontFamily" && 
IsMetaFontName(inValue as String))
+                                               ca["fontLookup"] = 
flash.text.engine.FontLookup.DEVICE;
+                                       processingCharacterFormatChange = true; 
                                        
+                                       mEditManager.applyLeafFormat(ca);
+                                       processingCharacterFormatChange = 
false;                                                                          
              
+                                       break;
+                               case PAR_DOMAIN:
+                                       pa = new TextLayoutFormat();
+                                       pa[key] = inValue;
+                                       mEditManager.applyParagraphFormat(pa);
+                                       break;
+                               case FLOW_DOMAIN:
+                                       pa = new TextLayoutFormat();
+                                       pa[key] = inValue;
+                                       
mEditManager.applyFormatToElement(mActiveFlow,pa);
+                                       break;
+                               case CONT_DOMAIN:
+                                       cont = new TextLayoutFormat();
+                                       cont[key] = inValue;
+
+                                       // always modify the containers
+                                       
mEditManager.applyContainerFormat(cont,null);
+                                       break;
+                               case SCROLL_DOMAIN:     // scroll policy props
+                                       
mActiveFlow.flowComposer.getControllerAt(0)[key] = inValue;
+                                       
mActiveFlow.flowComposer.updateAllControllers();
+                                       break;
+                               case TCY_DOMAIN:
+                                       if (key == "tcy")
+                                               mEditManager.applyTCY(inValue 
== "true" ? true : false);
+                                       break;
+                               case LINK_DOMAIN:
+                                       if (key == "linkURL")
+                                               mEditManager.applyLink(inValue 
as String);
+                                       break;
+                               }
+                       }
+                       mLastFormat = null;
+               }
+
+               private var mActiveFlow:TextFlow = null;
+               private var mEditManager:IEditManager = null;
+               private var mLastFormat:Object = null;
+               private var mRulers:Array = [];
+
+       }
+}

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_center_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_center_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_end_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_end_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_justify_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_justify_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_last_center_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_last_center_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_last_left_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_last_left_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_last_right_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_last_right_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_left_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_left_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_right_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_right_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_start_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/align_start_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/bold_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/bold_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/cont_align_bottom_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/cont_align_bottom_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/cont_align_justify_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/cont_align_justify_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/cont_align_middle_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/cont_align_middle_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/cont_align_top_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/cont_align_top_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/italic_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/italic_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/strikethrough_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/strikethrough_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/subscript_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/subscript_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/superscript_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/superscript_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/tcy_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/tcy_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/underline_icon.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/assets/underline_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/rulers/ParagraphPropertyMarker.as
==============================================================================
--- 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/rulers/ParagraphPropertyMarker.as
 (added)
+++ 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/rulers/ParagraphPropertyMarker.as
 Sat Aug 23 08:50:20 2014
@@ -0,0 +1,98 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.rulers
+{
+       import flashx.textLayout.formats.TextLayoutFormat;
+       import flashx.textLayout.tlf_internal;
+       use namespace tlf_internal;
+       
+       public class ParagraphPropertyMarker extends RulerMarker
+       {
+               public function ParagraphPropertyMarker(inRuler:RulerBar, 
inProperty:String)
+               {
+                       super(inRuler, 6, 13, 0, 0, 0);
+                       setStyle("propkind", inProperty);
+                       setStyle("rightToLeftPar", false);
+                       mProperty = inProperty;
+               }
+               
+               public function get property():String
+               {
+                       return mProperty;
+               }
+               
+               override protected function get alignToRight():Boolean
+               {
+                       switch(mProperty)
+                       {
+                       case TextLayoutFormat.textIndentProperty.name:
+                               return mRightToLeftPar ? true : false;
+                       case TextLayoutFormat.paragraphStartIndentProperty.name:
+                               return mRightToLeftPar;
+                       case TextLayoutFormat.paragraphEndIndentProperty.name:
+                               return !mRightToLeftPar;
+                       }
+                       return false;
+               }
+               
+               override protected function get originPosition():Number
+               {
+                       return mRelativeToPosition;
+               }
+
+               public function set relativeToPosition(inRelPos:Number):void
+               {
+                       mRelativeToPosition = inRelPos;
+                       positionMarker();
+               }
+               
+               override public function get hOffset():Number
+               {
+                       switch(mProperty)
+                       {
+                       case TextLayoutFormat.textIndentProperty.name:
+                               return mRightToLeftPar ? -6 : 0;
+                       case TextLayoutFormat.paragraphStartIndentProperty.name:
+                               return mRightToLeftPar ? -6 : 0;
+                       case TextLayoutFormat.paragraphEndIndentProperty.name:
+                               return mRightToLeftPar ? 0 : -6;
+                       }
+                       return 0;
+               }
+               
+               public function set rightToLeftPar(inRightToLeft:Boolean):void
+               {
+                       if (inRightToLeft != mRightToLeftPar)
+                       {
+                               mRightToLeftPar = inRightToLeft;
+                               setStyle("rightToLeftPar", mRightToLeftPar);
+                               
+                               if (mProperty == 
TextLayoutFormat.paragraphStartIndentProperty.name)
+                                       mProperty = 
TextLayoutFormat.paragraphEndIndentProperty.name;
+                               else if (mProperty == 
TextLayoutFormat.paragraphEndIndentProperty.name)
+                                       mProperty = 
TextLayoutFormat.paragraphStartIndentProperty.name;
+                       }
+               }
+               
+               private var mProperty:String;
+               private var mRelativeToPosition:Number = 0;
+               private var mRightToLeftPar:Boolean = false;
+       }
+}
\ No newline at end of file

Added: 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/rulers/ParagraphPropertyMarkerSkin.as
==============================================================================
--- 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/rulers/ParagraphPropertyMarkerSkin.as
 (added)
+++ 
websites/staging/flex/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/rulers/ParagraphPropertyMarkerSkin.as
 Sat Aug 23 08:50:20 2014
@@ -0,0 +1,103 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.rulers
+{
+       import mx.skins.RectangularBorder;
+
+       public class ParagraphPropertyMarkerSkin extends RectangularBorder
+       {
+               public function ParagraphPropertyMarkerSkin()
+               {
+                       super();
+               }
+               
+               override protected function updateDisplayList(w:Number, 
h:Number):void
+               {
+                   super.updateDisplayList(w, h);
+                   
+                   var propKind:String = getStyle("propkind");
+                   var rightToLeftPar:Boolean = getStyle("rightToLeftPar");
+                   
+                   var t:Number = 0;
+                   var b:Number = h;
+                   
+                       graphics.clear();
+
+                       graphics.beginFill(0x000000);
+                       if (rightToLeftPar)
+                       {
+                               switch(propKind) {
+                               case "textIndent":
+                                       b = (h - 1) / 2;
+                                       graphics.moveTo(w, 0);
+                                       graphics.lineTo(w, b);
+                                       graphics.lineTo(0, b);
+                                       graphics.lineTo(w, 0);
+                                       break;
+                               case "paragraphStartIndent":
+                                       graphics.moveTo(0, 0);
+                                       graphics.lineTo(0, h);
+                                       graphics.lineTo(w, h / 2);
+                                       graphics.lineTo(0, 0);
+                                       break;
+                               case "paragraphEndIndent":
+                                       t = h - (h - 1) / 2;
+                                       graphics.moveTo(w, h);
+                                       graphics.lineTo(0, t);
+                                       graphics.lineTo(w, t);
+                                       graphics.lineTo(w, h);
+                                       break;
+                               }
+                       }
+                       else
+                       {
+                               switch(propKind) {
+                               case "textIndent":
+                                       b = (h - 1) / 2;
+                                       graphics.moveTo(0, 0);
+                                       graphics.lineTo(w, b);
+                                       graphics.lineTo(0, b);
+                                       graphics.lineTo(0, 0);
+                                       break;
+                               case "paragraphStartIndent":
+                                       t = h - (h - 1) / 2;
+                                       graphics.moveTo(0, h);
+                                       graphics.lineTo(0, t);
+                                       graphics.lineTo(w, t);
+                                       graphics.lineTo(0, h);
+                                       break;
+                               case "paragraphEndIndent":
+                                       graphics.moveTo(w, 0);
+                                       graphics.lineTo(w, h);
+                                       graphics.lineTo(0, h / 2);
+                                       graphics.lineTo(w, 0);
+                                       break;
+                               }
+                       }
+                       graphics.endFill();
+                       
+                       // this makes the whole rect hittable
+                       graphics.lineStyle();
+               graphics.beginFill(0x0000ff, 0);
+               graphics.drawRect(0, t, w, b);
+               graphics.endFill();
+               }
+       }
+}


Reply via email to