Text Layout Framework columncount Undo problem

Text Layout Framework columncount Undo problem ::
    The number of times columncount is changed it gets applied to textflow
and those number of operation is stored in undoStack(UndoManger).But when i
undo it, it comes back to intial state, without undoin step by step.
I have given my source code..
Y so or any other alternative to achieve this..
Thanx in advance..  
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init()">
    <fx:Script>
        <![CDATA[
            import flashx.textLayout.container.ContainerController;
            import flashx.textLayout.conversion.ITextImporter;
            import flashx.textLayout.conversion.TextConverter;
            import flashx.textLayout.edit.EditManager;
            import flashx.textLayout.edit.IEditManager;
            import flashx.textLayout.edit.ISelectionManager;
            import flashx.textLayout.edit.SelectionState;
            import flashx.textLayout.elements.InlineGraphicElement;
            import flashx.textLayout.elements.ParagraphElement;
            import flashx.textLayout.elements.TextFlow;
            import flashx.textLayout.events.SelectionEvent;
            import flashx.textLayout.events.StatusChangeEvent;
            import flashx.textLayout.formats.Direction;
            import flashx.textLayout.formats.TextLayoutFormat;
            import flashx.undo.UndoManager;
            import mx.collections.ArrayCollection;
            import mx.controls.Alert;
            import mx.controls.CheckBox;
            import mx.events.FlexEvent;
            import mx.events.SliderEvent;
            import spark.components.Group;
            import spark.components.TextArea;
            import spark.core.SpriteVisualElement;
            public var directions:ArrayCollection = new
ArrayCollection(
                    {label:"Left-to-Right",
data:Direction.LTR},
                    {label:"Right-to-Left",
data:Direction.RTL}
            private var _textContainer:SpriteVisualElement = null;
            private static const textInput:XML = <TextFlow
xmlns="http://ns.adobe.com/textLayout/2008">
                <div>
                    <p><span>The Text Layout Framework is
an extensible library, built on the new text engine in Adobe Flash Player 10,
which delivers advanced, easy-to-integrate typographic and text layout features
for rich, sophisticated and innovative typography on the web.
                Some benefits provided by this framework
include: 1) rich typographical controls, including kerning, ligatures,
typographic case, digit case, digit width and discretionary hyphens
                2) cut, copy, paste, undo and standard keyboard
and mouse gestures for editing 3) selection, editing and flowing text across
multiple columns and linked containers
                4) bidirectional text, vertical text and over
30 writing scripts including Arabic, Hebrew, Chinese, Japanese, Korean, Thai,
Lao, Vietnamese, and others
                5) vertical text, Tate-Chu-Yoko (horizontal
within vertical text) and justifier for East Asian typography. Try editing this
text and playing with the options below! Notice an inline image is also
included.</span></p>
                </div>
                </TextFlow>;
            private var _textFlow:TextFlow;
            private function init():void {
                _textContainer = new SpriteVisualElement();
                canvas.addElement(_textContainer);
                var importer:ITextImporter =
TextConverter.getImporter(TextConverter.TEXT_LAYOUT_FORMAT);
                _textFlow = importer.importToFlow(textInput);
                _textFlow.flowComposer.addController(new
ContainerController(_textContainer, canvas.width-40, canvas.height));
                _textFlow.interactionManager = new
EditManager(new UndoManager());
                _textFlow.flowComposer.updateAllControllers();
            private function changeNoColumns(event:Event):void {
                var tlf:TextLayoutFormat = new
TextLayoutFormat();
                tlf.columnCount = cols.value;
                tlf.columnGap = 15;
                tlf.direction = direction.selectedItem.data;
                var em:EditManager =
_textFlow.interactionManager as EditManager;
                em.selectAll();
                (_textFlow.interactionManager as
EditManager).applyFormat(tlf,tlf,tlf);
                _textFlow.flowComposer.updateAllControllers();
            protected function
undo_clickHandler(event:MouseEvent):void
                var em:EditManager =
_textFlow.interactionManager as EditManager;
                trace("Can undo " + em.undoManager.canUndo() +
" can redo " + em.undoManager.canRedo());
                em.undo();
            protected function
redo_clickHandler(event:MouseEvent):void
                var em:EditManager =
_textFlow.interactionManager as EditManager;
                trace("Can undo " + em.undoManager.canUndo() +
" can redo " + em.undoManager.canRedo());
                em.redo();
        ]]>
    </fx:Script>
    <s:Panel title="Text Layout Framework Sample" width="100%"
height="100%">
        <s:layout>
            <s:VerticalLayout paddingTop="8" paddingLeft="8"/>
        </s:layout>
        <s:VGroup>
            <s:Group id="canvas" width="600" height="200" />
            <s:HGroup width="100%" verticalAlign="middle">
                <s:Label text="# Columns:"/>
                <s:NumericStepper id="cols"  minimum="1"
maximum="20" snapInterval="1" change="changeNoColumns(event)" />
                <s:Label text="Text Direction:"/>
                <s:DropDownList id="direction"
change="changeTextDirection(event)" dataProvider="{directions}"
selectedItem="{directions[0]}"/>
                <s:Button label="Undo"
click="undo_clickHandler(event)"/>
                <s:Button label="Redo"
click="redo_clickHandler(event)"/>
            </s:HGroup>
        </s:VGroup>
    </s:Panel>
</s:WindowedApplication>

It cannot be reproduced with TLF 3.0 + SDK 4.5.

Similar Messages

  • Problem in running Text Layout Framework online demo

    Hi
             I am running textlayout_example but while compile itself showing error
    1.1061: Call to a possibly undefined method selectRange through a reference with static type flashx.textLayout.edit:ISelectionManager
    2.1120: Access of undefined property TextConverter.
    3.Could not resolve <s:Application> to a component implementation
    4.1119: Access of possibly undefined property INLINE_GRAPHIC_STATUS_CHANGE through a reference with static type Class.
    Am using flexbuilder 3 with flexsdk4.0 and flashplayer 10.0.32. I dono what was d problem... Could anyone know about to fix.

    From a distance it sounds like there is more than one version of the textLayout swc in your compile path.  Looks like you have the spark components so there is one version included with the Flex SDK.
    Either that or your examples are out of date with respect to the textLayout swc you have.  The releasenotes have details on the API changes.
    The most recent examples are available here:
    http://opensource.adobe.com/wiki/display/tlf/Text+Layout+Framework
    Hope that helps,
    Richard

  • Text Layout Framework Bold & Italic don't work on Linux

    Hi,
    The bold and Italic in Text Layout Framework is not working on Linux with Flash Player 10.1.85.3. Please verify at this link http://labs.adobe.com/technologies/textlayout/demos/ on Linux, by trying to do bold & italic to some text.
    is this a problem with Flash Player 10 ?
    Any help is appreciated.
    Thanks,
    Avi

    Thanks Richard,
    The Bold/Italic variant of the font should be present on the client's machine. Now I am finding solution to how to display the fonts which Bold/Italic variant are not present on the client's machine. One way can be embedding the fonts. Anythings else?
    Avi

  • Rotated ASCII characters overlap in Text Layout Framework with specific Japanese/Chinese fonts

    I am trying to layout rotated text with Text Layout Framework. Mostly okay, but when it comes to specific Japanese/Chinese fonts, problem happens - "hankaku" alphanumeric characters(in other words, ASCII characters) overlap in those fonts. (Full-width "zenkaku" characters have no problem, though)
    When "HG丸ゴシックM-PRO" or "HG正楷書体-PRO" are specified as fontFamily(both come with Office - common fonts in Japanese Windows environment), characters are wholly overlapped.
    When "SimSun", "NSimSun" or "SimHei" are specified as fontFamily(Chinese fonts, all come with Japanese Windows XP), characters are slightly overlapped.
    If anyone knows a solution or a workaround to this, please let me know.
    Sample code:
    <?xml version="1.0" encoding="utf-8"?>
    <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initapp();">
        <mx:Script>
            <![CDATA[
                import flashx.textLayout.container.ContainerController;
                import flashx.textLayout.elements.ParagraphElement;
                import flashx.textLayout.elements.SpanElement;
                import flashx.textLayout.elements.TextFlow;
                import flash.text.engine.TextRotation;
                import mx.core.UIComponent;
                private function initapp():void
                    var container:UIComponent           = new UIComponent();
                    var textflow:TextFlow               = new TextFlow();
                    var controller:ContainerController  = new ContainerController(container);
                    var paragraph:ParagraphElement      = new ParagraphElement();
                    var span:SpanElement                = new SpanElement();
                    textflow.fontFamily          = "HG丸ゴシックM-PRO";
                    textflow.textRotation        = TextRotation.ROTATE_270;
                    textflow.fontSize            = 72;
                    textflow.color               = 0;
                    span.text                    = "abcdefg";
                    controller.setCompositionSize(this.unscaledWidth, this.unscaledHeight);
                    paragraph.addChild(span);
                    textflow.addChild(paragraph);
                    textflow.flowComposer.addController(controller);
                    textflow.flowComposer.updateAllControllers();
                    this.addChild(container);
            ]]>
        </mx:Script>
    </mx:WindowedApplication>
    Warm regards,
    Yuushima

    malachite00 wrote:
    > Thanks David. So is there any way around having to embed
    the font when
    > rotating text?
    Not that I know of. Your problem is that you're loading the
    content
    dynamically, so you have no idea what it will contain.
    There's normally
    no need to embed Japanese fonts for a Japanese audience,
    because they
    already have the main fonts, such as Mincho, Gothic, or Osaka
    on their
    machine. Perhaps you'll just have to give up the idea of
    rotation.
    David Powers
    Adobe Community Expert
    Author, "Foundation PHP for Dreamweaver 8" (friends of ED)
    http://foundationphp.com/

  • [svn] 4634: First part of glue code for allowing Halo components to use the new Text Layout Framework , in order to get functionality such as bidirectional text.

    Revision: 4634
    Author:   [email protected]
    Date:     2009-01-22 17:38:56 -0800 (Thu, 22 Jan 2009)
    Log Message:
    First part of glue code for allowing Halo components to use the new Text Layout Framework, in order to get functionality such as bidirectional text.
    Background:
    TLF is making this possible by implementing a TLFTextField class. It is a Sprite that uses TLF to implement the same properties and methods as the legacy TextField class in the Player. Thanks to the createInFontContext() bottleneck method in UIComponent, it can be used by a properly-written Halo component (such as those in Flex 3) without any modifications to the component.
    Note: Text should render similarly -- but is unlikely to render identically -- when a component uses TLFTextField vs. TextField. The width and height may be different, affecting layout; text could wrap differently; etc. This is a fact-of-life based on the fact that TLF/FTE and TextField are completely different text engines.
    Whether a Halo component uses TLF or not to render text will be determined in Flex 4 by a new style, textFieldClass. (Gumbo components always use TLF.)
    TLFTextField is currently only partially implemented. It does not yet support scrolling, selection, editing, multiple formats, or htmlText. Therefore it can only be used for simple display text, such as a Button label.
    Details:
    The TextStyles.as bucket 'o text styles now includes a non-inheriting textFieldClass style. It can be set to either mx.core.UITextField or mx.core.UITLFTextField. These are the Flex framework's wrapper classes around the lower-level classes flash.text.TextField (in the Player) and its TLF-based workalike, flashx.textLayout.controls.TLFTextField.
    The global selector in defaults.css currently sets it to mx.core.UITextField using a ClassReference directive. For the time being, all Halo components will continue to use the "real" TextField.
    The new UITLFTextField is a copy of UITextField, except that it extends TLFTextField instead of TextField. This class has been added to FrameworkClasses.as because no classes in framework.swc have a dependency on it. It will get soft-linked into applcations via the textFieldClass style.
    The TLFTextField class currently lives in a fourth TLF SWC, textLayout_textField.swc. This SWC has been added to various build scripts. The external-library-path for building framework.swc now includes all four TLF SWCs, because UITLFTextField can't be compiled and linked without them. However, since they are external they aren't linked into framework.swc.
    Properly-written Halo UIComponents access their text fields only through the IUITextField interface, and they create text fields like this:
    textField = IUITextField(createInFontContext(UITextField));
    (The reason for using createInFontContext() is to support embedded fonts that are embedded in a different SWF.)
    The createInFontContext() method of UIComponent has been modified to use the textFieldClass style to determine whether to create a UITextField or a UITLFTextField.
    With these changes, you can now write code like
    to get two Buttons, the first of which uses UITextField (because this is the value of textFieldClass in the global selector) and the second of which uses UITLFTextField. They look very similar, which is good!
    Currently, both Buttons are being measured by using an offscreen TextField. A subsequent checkin will make components rendering using UITLFTextField measure themselves using an offscreen TLFTextField so that measurement and rendering are consistent.
    QE Notes: None
    Doc Notes: None
    Bugs: None
    Reviewer: Deepa
    Modified Paths:
        flex/sdk/trunk/asdoc/build.xml
        flex/sdk/trunk/build.xml
        flex/sdk/trunk/frameworks/projects/framework/build.xml
        flex/sdk/trunk/frameworks/projects/framework/defaults.css
        flex/sdk/trunk/frameworks/projects/framework/src/FrameworkClasses.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/TextStyles.as
    Added Paths:
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITLFTextField.as

    Many of your points are totally legitimate.
    This one, however, is not:
    …To put it another way, the design of the site seems to be geared much more towards its regular users than those the site is supposedly trying to "help"…
    The design and management of the forums for more than five years have driven literally dozens of the most valuable contributors and "regulars" away from the forums—permanently.
    The only conclusion a prudent, reasonable person can draw from this state of affairs is that Adobe consciously and deliberately want to kill these forums by attrition—without a the PR hit they would otherwise take if they suddenly just shut them down.

  • InDesign export Text Layout Framework Markup

    hi there
    as described in title, i'm having troubles exporting an InDesign comp in a decent way
    my quesitons are:
    1 - It exists a DTD for Text Layout Framework Markup Language ?
    2 - Is there an export module that make me able to do it automatically? because tagging all the elements is a pain, and there is just a little documentation about the markup language
    If not, are there any plans to do it?
    I personally think that an export module will be very helpful and will score another goal on products' integration
    Thanx for your time

    Regarding a DTD see this post http://forums.adobe.com/message/2221283#2221283
    I can't comment on any plans for ID to export TLF markup.  Definitely a good idea.
    Thanks,
    Richard

  • Can I use Text Layout Framework with Flex 3 SDK?

    Greetings,
    I have to develop a complex custom widget, with custom text wrapping behaviour. Text Layout framework seem to offer fine level of control, but we are trying to keep our project in Flash player 9, and therefore we are using Flex 3 sdk.
    Can I use the framework with flex sdk 3 and therefore flash player 9?
    Best Regards
    Seref

    For that you need to install flex sdk 3.5 framework and choose your defauls framework to flex 3.5 it will work and as well instal flash player 10

  • How to create a table using Text Layout Framework?

    How to create a table using Text Layout Framework? I meen real tables - like in HTML.

    Cell as indipendant TLF should work, I have created my table using same approach and works fine for me ... this is where it is
    http://apps.live-documents.com/docs/openWebDoc.do?docId=1480607
    Regards
    Raf

  • Unable to apply embedded font swf to text in text layout framework

    Hello,
    We have created a swf for a given font (for e.g., Calibri.swf) which contains all the styles (Regular, Italic, Bold, BoldItalic).
    We have created a xml which lists the name of the font and the corresponding swf file path. The names from the xml are loaded into a combo box in the application.
    When we try to apply the selected font to a text in the text layout framework, it does not apply the same. It sets the font to default "Times" font.
    Following is a snippet of code to apply the font to the text:
    private function selectFont(fontXML:XML):void {               
                    var path:String = fontXML.@source;
                    var myEvent:IEventDispatcher = styleManager.loadStyleDeclarations(FlexGlobals.topLevelApplication.url.substring(0,FlexGl obals.topLevelApplication.url.lastIndexOf("/"))+"/"+path);
                    myEvent.addEventListener(StyleEvent.COMPLETE, function(event:StyleEvent):void{
                        var editManager:EditManager = textFlow.interactionManager as EditManager;
                        var itextLayout:TextLayoutFormat = new TextLayoutFormat();
                        itextLayout.fontSize = 20;
                        var fontName:String = fontXML.@name;
                        Alert.show(fontName);
                        itextLayout.fontFamily = fontName;   
                        Alert.show( "itext = " + itextLayout.fontFamily);
                        editManager.applyFormat(itextLayout,itextLayout,itextLayout);
                        var flowLeafElement:FlowElement = textFlow.findLeaf(editManager.anchorPosition) as FlowElement;
                        editManager.changeStyleName(fontName,flowLeafElement);
    Can anyone please let us know what is missing in the implementation?
    Thanks in advance.
    Vikram

    My recommendation: unless you really care about ISWFContext implementations and the application domain issues, ignore Alex's post about embedded fonts.
    It is a nice discussion about the inner workings of the domain and security of how this works but it is imho broken and is an insane concept to require an ISWFContext to just use an embedded font. It also breaks runtime CSS loading that has fonts embedded in it because the Flex compiler (last I checked) was also busted – it doesn't include the function necessary to create within context the font embed so that it may be applied. You can't create an ISWFContext with a compiled CSS file.
    These issues were introduced in the last Flex SDK beta before FB4 was released in final form. There are multiple bugs logged against the issue of applying loaded font files to TLF text (in short, SWFContext is broken and you have to override GlobalSettings.resolveFontLookupFunction to return embedded or null, all the time).
    Here's some more details to get you started - with links to at least one of the SDK bugs that were filed:
    http://forums.adobe.com/message/2656152
    For example:
    import flashx.textLayout.elements.GlobalSettings;
    import flash.text.engine.FontLookup;
    GlobalSettings.resolveFontLookupFunction = function makeValid():String { return FontLookup.EMBEDDED_CFF };
    And you may need to do this after your font is loaded:
    yourTextBlock.textFlow.invalidateAllFormats();
    Disclaimer: I haven't seen the latest Flex SDK release to see if this was fixed. I have an AIR application with native process that builds embedded font SWF files for use and stub code for FB4 usage but haven't updated to the latest SDK yet to see if it's working properly.
    Anyhow, your best bet is to look at the Flash Builder forums. I think this is/was a Flex team issue, not TLF.

  • Errors in implementing Text Layout Framework text flow- selection event not found

    please help me i have implemented the same project givan at adobe open source code site.
    This is my code
    <?xml version="1.0" encoding="utf-8"?>
    <!--
    ADOBE SYSTEMS INCORPORATED
    Copyright 2008 Adobe Systems Incorporated
    All Rights Reserved.
    NOTICE:  Adobe permits you to use, modify, and distribute this file
    in accordance with the terms of the Adobe license agreement
    accompanying it.  If you have received this file from a source
    other than Adobe, then your use, modification, or distribution
    of it requires the prior written permission of Adobe.
    -->
    <!-- Demonstrate some example controls.  This example does not attempt to create a control for every property in the TextLayoutFramework -->
    <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" label="Text Editor Example" initialize="init()" backgroundColor="#FFFFFF" horizontalScrollPolicy="off" verticalScrollPolicy="off">
    <mx:Script>
    <![CDATA[
    import flashx.textLayout.container.ContainerController;
    import flashx.textLayout.conversion.TextConverter;
    import flashx.textLayout.edit.EditManager;
    import flashx.textLayout.edit.IEditManager;
    import flashx.textLayout.edit.ElementRange;
    import flashx.textLayout.edit.SelectionState;
    import flashx.textLayout.elements.Configuration;
    import flashx.textLayout.elements.TextFlow;
    import flashx.textLayout.events.StatusChangeEvent;
    import flashx.textLayout.events.SelectionEvent;
    import flashx.textLayout.formats.ITextLayoutFormat;
    import flashx.textLayout.formats.TextLayoutFormat;
    import flashx.textLayout.formats.TextAlign;
    import flashx.textLayout.formats.VerticalAlign;
    import flashx.textLayout.formats.BlockProgression;
    import flashx.textLayout.formats.Direction;
    import flashx.textLayout.tlf_internal;
    import flashx.undo.UndoManager;
    import flash.display.Sprite;
    import flash.system.Capabilities;
    // the textFlow being worked on
    private var _textFlow:TextFlow = null;
    // container to hold the text
    private var _container:Sprite = null;
    // data providers for enumerated list boxes
    static private const textAlignData:Array = [
    { label:"Justify", data:TextAlign.JUSTIFY},
    { label:"Left", data:TextAlign.LEFT},
    { label:"Right", data:TextAlign.RIGHT},
    { label:"Center", data:TextAlign.CENTER},
    { label:"End", data:TextAlign.END},
    { label:"Start", data:TextAlign.START}
    static private const verticalAlignData:Array = [
    { label:"Bottom", data:VerticalAlign.BOTTOM },
    { label:"Justify", data:VerticalAlign.JUSTIFY },
    { label:"Middle", data:VerticalAlign.MIDDLE },
    { label:"Top", data:VerticalAlign.TOP }
    static private const blockProgressionData:Array = [
    { label:"TopToBottom", data:BlockProgression.TB },
    { label:"RightToleft", data:BlockProgression.RL }
    static private const directionData:Array = [
    { label:"LeftToRight", data:Direction.LTR },
    { label:"RightToleft", data:Direction.RTL }
    * initialization
    private function init():void
    // create a sprite to hold the TextLines
    _container = new Sprite();
    textArea.rawChildren.addChild(_container);
    fontFamily.dataProvider = populateFontFamily();
    versionInfo.text = "Vellum: " + flashx.textLayout.BuildInfo.kBuildNumber + (Configuration.tlf_internal::debugCodeEnabled ? " Debug" : " Release")
    + ", Flex: " + mx_internal::VERSION
    + ", Player: " + Capabilities.version;
    * Create an array of available font families
    static private function populateFontFamily():Array
    // really this returns an array of fonts - would be nice to strip it down to just the families
    var fonts:Array = Font.enumerateFonts(true);
    var fontfamily:Array = new Array();
    fonts.sortOn("fontName", Array.CASEINSENSITIVE);
    for(var i:int = 0; i< fonts.length; i++)
    // trace(fonts[i].fontName);
    fontfamily.push({label: fonts[i].fontName, data: fonts[i].fontName});
    return fontfamily;
    /** called to set the size of this panel */
    public function setSize(w:int,h:int):void
    this.width = w;
    this.height = h;
    textArea.width = width;
    textArea.height = height > bottomTabs.height ? this.height-bottomTabs.height : 0;
    if (_textFlow)
    _textFlow.flowComposer.getControllerAt(0).setCompositionSize(textArea.width,textArea.heigh t);
    _textFlow.flowComposer.updateAllControllers();
    /** called when the bottom tabs finally gets sized. */
    private function bottomTabsResize():void
    setSize(width,height);
    /** The TextFlow to edit. */
    public function get textFlow():TextFlow
    { return _textFlow; }
    public function set textFlow(newFlow:TextFlow):void
    // clear any old flow if present
    if (_textFlow)
    _textFlow.flowComposer = null;
    _textFlow = null;
    _textFlow = newFlow;
    if (_textFlow)
    _textFlow.flowComposer.addController(new ContainerController(_container,textArea.width,textArea.height));
    // setup event listeners for selection changed and ILG loaded
    _textFlow.addEventListener(SelectionEvent.SELECTION_CHANGE,selectionChangeListener,false,0 ,true);
    _textFlow.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE,graphicStatusCha ngeEvent,false,0,true);
    // make _textFlow editable with undo
    _textFlow.interactionManager = new EditManager(new UndoManager());
    // initialize with a selection before the first character
    _textFlow.interactionManager.selectRange(0,0);
    // compose the new textFlow and give it focus
    _textFlow.flowComposer.updateAllControllers();
    _textFlow.interactionManager.setFocus();
    /** Receives an event any time an ILG with a computed size finishes loading. */
    private function graphicStatusChangeEvent(evt:StatusChangeEvent):void
    // recompose if the evt is from an element in this textFlow
    if (_textFlow && evt.element.getTextFlow() == _textFlow)
    _textFlow.flowComposer.updateAllControllers();
    /** Receives an event any time the selection is changed.  Update the UI */
    private function selectionChangeListener(e:SelectionEvent):void
    var selectionState:SelectionState = e.selectionState;
    var selectedElementRange:ElementRange = ElementRange.createElementRange(selectionState.textFlow, selectionState.absoluteStart, selectionState.absoluteEnd);
    // set display according to the values at the beginning of the selection range.  For point selection/characterFormat use getCommonCharacterFormat as that tracks pending attributes waiting for the next character
    var characterFormat:ITextLayoutFormat = _textFlow.interactionManager.activePosition == _textFlow.interactionManager.anchorPosition ? _textFlow.interactionManager.getCommonCharacterFormat() : selectedElementRange.characterFormat;
    var paragraphFormat:ITextLayoutFormat = selectedElementRange.paragraphFormat;
    var containerFormat:ITextLayoutFormat = selectedElementRange.containerFormat;
    updateComboBox(fontFamily,characterFormat.fontFamily);
    fontSize.text = characterFormat.fontSize.toString();
    lineHeight.text = characterFormat.lineHeight.toString();
    updateComboBox(textAlign,paragraphFormat.textAlign);
    textIndent.text = paragraphFormat.textIndent.toString();
    columnCount.text = containerFormat.columnCount.toString();
    columnGap.text = containerFormat.columnGap.toString();
    updateComboBox(verticalAlign,containerFormat.verticalAlign);
    updateComboBox(blockProgression,_textFlow.computedFormat.blockProgression);
    updateComboBox(directionBox,_textFlow.computedFormat.direction);
    /** Helper function to update a comboBox in the UI */
    private function updateComboBox(box:ComboBox,val:String):void
    for (var i:int = 0; i < box.dataProvider.length; i++)
    if (box.dataProvider[i].data == val)
    box.selectedIndex = i;
    return;
    box.text = val;
    * These functions are helpers for the various widgets to actually perform the operations on the TextFlow
    private function changeFontFamily(newFontFamily:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.fontFamily = newFontFamily;
    IEditManager(_textFlow.interactionManager).applyLeafFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeFontSize(newFontSize:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.fontSize = newFontSize;
    IEditManager(_textFlow.interactionManager).applyLeafFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeLeading(newLeading:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.lineHeight = newLeading;
    IEditManager(_textFlow.interactionManager).applyLeafFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeTextAlign(newAlign:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var pf:TextLayoutFormat = new TextLayoutFormat();
    pf.textAlign = newAlign;
    IEditManager(_textFlow.interactionManager).applyParagraphFormat(pf);
    _textFlow.interactionManager.setFocus();
    private function changeTextIndent(newIndent:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var pf:TextLayoutFormat = new TextLayoutFormat();
    pf.textIndent = newIndent;
    IEditManager(_textFlow.interactionManager).applyParagraphFormat(pf);
    _textFlow.interactionManager.setFocus();
    private function changeColumnCount(newCount:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.columnCount = newCount;
    IEditManager(_textFlow.interactionManager).applyContainerFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeColumnGap(newGap:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.columnGap = newGap;
    IEditManager(_textFlow.interactionManager).applyContainerFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeVerticalAlign(newAlign:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.verticalAlign = newAlign;
    IEditManager(_textFlow.interactionManager).applyContainerFormat(cf);
    _textFlow.interactionManager.setFocus();
    private function changeBlockProgression(newProgression:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var cf:TextLayoutFormat = new TextLayoutFormat();
    cf.blockProgression = newProgression;
    IEditManager(_textFlow.interactionManager).applyFormatToElement(_textFlow,cf);
    _textFlow.interactionManager.setFocus();
    /** Set direction on the rootElement.  This effects both columnDirection and default reading order. */
    private function changeDirection(newDirection:String):void
    if (_textFlow && _textFlow.interactionManager is IEditManager)
    var pf:TextLayoutFormat = new TextLayoutFormat();
    pf.direction = newDirection;
    IEditManager(_textFlow.interactionManager).applyFormatToElement(_textFlow,pf);
    _textFlow.interactionManager.setFocus();
    ]]>
    </mx:Script>
    <!-- <mx:VBox horizontalScrollPolicy="off" verticalScrollPolicy="off" width="100%" height="100%"> -->
    <mx:Canvas id="textArea" width="520" height="400"/>
    <mx:TabNavigator id="bottomTabs" width="100%" creationPolicy="all" paddingLeft="4" paddingBottom="8" backgroundColor="#D9D9D9" color="#202020" horizontalScrollPolicy="off" verticalScrollPolicy="off" resize="bottomTabsResize()">
    <mx:HBox label="Text" backgroundColor="#D9D9D9" width="496" horizontalScrollPolicy="off" verticalScrollPolicy="off" >
    <mx:Label text="Font:"/>
    <mx:ComboBox id="fontFamily" editable="true" enter="changeFontFamily(fontFamily.text)"  close="changeFontFamily(fontFamily.text)" width="200"/>
    <mx:Label text="Size:"/>
    <mx:TextInput id="fontSize" enter="changeFontSize(fontSize.text)" width="40"/>
    <mx:Label text="LineHeight:"/>
    <mx:TextInput id="lineHeight" enter="changeLeading(lineHeight.text)" width="40"/>
    </mx:HBox>
    <mx:HBox label="Para" backgroundColor="#D9D9D9" width="496">
    <mx:Label text="Alignment:"/>
    <mx:ComboBox id="textAlign" close="changeTextAlign(textAlign.selectedItem.data)" dataProvider="{textAlignData}"/>
    <mx:Label text="FirstLineIdent:"/>
    <mx:TextInput id="textIndent" enter="changeTextIndent(textIndent.text)" width="40"/>
    </mx:HBox>
    <mx:HBox label="Container" backgroundColor="#D9D9D9" width="496">
    <mx:Label text="Columns:"/>
    <mx:TextInput id="columnCount" toolTip="auto or a number" enter="changeColumnCount(columnCount.text)" width="40"/>
    <mx:Label text="Gap:"/>
    <mx:TextInput id="columnGap" toolTip="a number" enter="changeColumnGap(columnGap.text)" width="40"/>
    <mx:Label text="VerticalAlignment:"/>
    <mx:ComboBox id="verticalAlign" close="changeVerticalAlign(verticalAlign.selectedItem.data)" dataProvider="{verticalAlignData}"/>
    </mx:HBox>
    <mx:HBox label="Flow" backgroundColor="#D9D9D9" width="496">
    <mx:Label text="Progression:"/>
    <mx:ComboBox id="blockProgression" close="changeBlockProgression(blockProgression.selectedItem.data)" dataProvider="{blockProgressionData}"/>
    <mx:Label text="Direction:"/>
    <mx:ComboBox id="directionBox" close="changeDirection(directionBox.selectedItem.data)" dataProvider="{directionData}"/>
    </mx:HBox>
    <mx:HBox label="Version" backgroundColor="#D9D9D9" width="496">
    <mx:TextInput id="versionInfo" editable="false" width="100%"/>
    </mx:HBox>
    </mx:TabNavigator>
    <!-- </mx:VBox> -->
    </mx:VBox>

    Probably something is going wrong when the application is being built, and textLayout.SWC is not found. Are you using Flex or Flash Pro to build it? What version? Does this error come up when you build the project, or when you run it?
    Thanks,
    - robin

  • How to use Text Layout Framework in Flash CS3?

    Hi,
    I perferctly now how to get TLF to work in CS4.
    As far as I know, the the base code is in AS3 so I should be able to locate the classes in CS3 and use it in Flash CS3.
    I appreciate if there is anyone who can help me with this?

    I'm not that knowledgeable about Flash Pro, however, I'd be quite surprised if you could make this work.  CS4 added Flash Player 10 support.  That includes a compiler update for Vector - a new AS3 feature.  Minimally you'll have to get Flash CS3 to generate FP10 level content and compile with the playerglobals.swc from FP10.  If you can get that far than adding textLayout.swc to your project should be straightforward.
    Maybe someone else has an idea.
    Hope that helps,
    Richard

  • Can we specifies the border sides in Text Layout Framework?

    I am apply boder .. it is working but i am not able to specifies the border sides like left and right only.
    Thanx in advanced...

    What border you are setting?
    I don't think TLF currently got a border attribute in current version. Can you make sure you are setting the attribute for TLF?

  • How about a 'Text Layout Framwork' category on Adobe Labs Ideas in the Flex SDK section?

    I like 'Adobe Labs Ideas', it's far more accessible/inviting then "Adobe Bugs and Issues" (JIRA).
    Therefor I would like to suggest a new category 'Text Layout Framework' under the Flex SDK section or even it's own section (after all TLF isn't Flex only).

    Am I right, that this is a tricky question? No hints or attempts so far. Really no-one out there?
    I guess I am not the only one who would like to extend the Importer (Exporter) by new tags, FlowElement's and FlowLeafElement's.
    Best regards
    Masteradi

  • InDesign 5.5 Text layout problem--possible preference issue

    I do a lot of book layout and recently upgraded from InDesign CS3 to 5.5. I've encountered a problem when I'm editing the text layout
    When I make changes to one paragraph (i.e. change the spacing above or below a head or change leading in a particular paragraph), InDesign is automatically changing the word/letter spacing in the lines of the following paragraph. For instance, I added some space before a head. InDesign automattically shifted the spacing of words and letters in the first lines of the following paragraph instead of just shifting all of the text down. In another case I changed one word in a paragraph, and the letter/word spacing changed in the following paragraph.
    This is unacceptable and didn't happen in CS3. How can I turn off this "function" ?

    What I think is happening here is that you’re editing a layout done in a prior version.
    When you open it, InDesign honors the prior text composition but the second you start to edit the new text engine takes over.
    You can export the document out of CS3 as INX and open that which will force all the text to recompose at once and you can get it all over with or stick with CS3 to finish up this job.
    Bob

  • Flash CS4 Text Layout Component Problem

    Hi,
    We are trying to use multiple instances (around 25) of Flash
    CS4 Text Layout Component in one file to display arabic text. It
    works fine for some random number of instances. However, it gives
    problem if that number increases (The text doesnt show).
    Any help will be highly appreciated.
    Thanks!

    If you're referring to this:
    http://labs.adobe.com/technologies/textlayout/
    Then that's still in beta and you should take your discussion
    to the beta forum on that link.

Maybe you are looking for

  • Required Start date in Notification

    Hi All, Maint order is assigned as a call object for a maint plan. After scheduling the maint order is generated with the basic date as per the planned date in maint plan. But the notification generated along with the order has the required start dat

  • Problems bringing psd into in design CS4

    Hello, I am trying to use a high resolution (300, though I've tried higher as well) psd in In design, but when I drop it in, the quality looks bad: the curves of the image (logo) appear jagged. I need to use a psd (or similar) because I do not want a

  • Java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]COUNT field incor

    hello i am trying to call stored procedure from javabeans to SQL server database. my stored procedure is..... ========================================= CREATE PROCEDURE sp_ins_client1_defect /* INSERTS defect AFTER GENERATING A NEW defectid RETRUN VA

  • How to Output Totals to one Row?

    Post Author: robertr CA Forum: General Hi - I have a giant report that contains basic info such as name, employee id, check date, check hours and check earnings.  The problem is that I need only the totals for each employee and not the entire check e

  • Oracle Payables - Proxima Payments Terms

    Hi Could anybody please explain me the relevance of Proxima Payment Terms and where is it used ? Regards Siva