Search code examples
actionscript-3apache-flexflex4tlf

How to select a flow element in TLF?


Is there a method that I can use to select a FlowElement? I checked a few classes including SelectionManager and EditManager and did not see anything.


Solution

  • The following example shows how to select an element:

    <fx:Script>
        <![CDATA[
            import flashx.textLayout.edit.ISelectionManager;
            import flashx.textLayout.edit.SelectionState;
            import flashx.textLayout.elements.FlowElement;
            import flashx.textLayout.elements.TextFlow; 
    
            protected function selectElementHandler(event:MouseEvent):void {
                var selectionManager:ISelectionManager = activeFlow.interactionManager as ISelectionManager;
                var element:FlowElement = activeFlow.findLeaf(selectionManager.anchorPosition);
                selectElement(element);
            }
    
            public function selectElement(flowElement:FlowElement):void { 
                var textFlow:TextFlow = flowElement.getTextFlow();
                var selection:SelectionState = ISelectionManager(textFlow.interactionManager).getSelectionState();
                var startIndex:int = flowElement.getAbsoluteStart();
                selection.updateRange(startIndex, startIndex + flowElement.textLength);
                IEditManager(textFlow.interactionManager).setSelectionState(selection);
                textFlow.flowComposer.updateAllControllers();
            }
        ]]>
    </fx:Script>
    
    <s:Button label="Select current element" click="selectElementHandler(event)"/>