| <?xml version="1.0" encoding="utf-8"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:textEditBar="textEditBar.*" |
| addedToStage="onAddedToStage()" removedFromStage="onRemovedFromStage()" |
| horizontalScrollPolicy="off" verticalScrollPolicy="off" xmlns:ns="library://ns.adobe.com/flex/mx"> |
| <mx:Metadata> |
| <!-- event generated by this component --> |
| [Event(name="containerPropsChange", type="textEditBar.MultiContainerChangeEvent")] |
| |
| <!-- undocumented --> |
| [DefaultTriggerEvent("containerPropsChange")] |
| |
| </mx:Metadata> |
| |
| <mx:Script> |
| <![CDATA[ |
| import mx.events.MenuEvent; |
| import flashx.textLayout.edit.ElementRange; |
| import flashx.textLayout.elements.TextFlow; |
| |
| [Bindable] |
| private var linkList:Array = [ |
| { label:"1"}, |
| { label:"2"}, |
| { label:"3"}, |
| { label:"4"}, |
| { label:"5"} |
| ]; |
| |
| public var activeFlow:TextFlow; |
| |
| [Bindable] |
| private var arrangeList:Array = [ |
| { label:"ViewStack", data:MultiContainerChangeEvent.ARRANGE_AS_VIEWSTACK}, |
| { label:"SideBySide",data:MultiContainerChangeEvent.ARRANGE_SIDE_BY_SIDE} |
| ]; |
| |
| private var onStage:Boolean = false; |
| private var addedFrameEventListener:Boolean = false; |
| private function onAddedToStage():void |
| { |
| // the dataProviders aren't set up yet - delay to the frame |
| onStage = true; |
| if (!addedFrameEventListener) |
| { |
| addedFrameEventListener = true; |
| addEventListener("enterFrame",onEnterFrame); |
| } |
| } |
| |
| private var numContainersValue:int = -1; |
| private var arrangementValue:String = null; |
| private var visibleContainerValue:int = -1; |
| |
| private function onEnterFrame(p:Event):void |
| { |
| this.removeEventListener("enterFrame",onEnterFrame); |
| addedFrameEventListener = false; |
| |
| var lcv:int = numContainersValue; |
| var av:String = arrangementValue; |
| var vcv:int = visibleContainerValue; |
| numContainersValue = -1; |
| arrangementValue = null; |
| visibleContainerValue = -1; |
| updateControllerProps(lcv,av,vcv); |
| } |
| |
| private function onRemovedFromStage():void |
| { |
| onStage = false; |
| } |
| |
| private function dataChangedHandler():void |
| { |
| var numContainers:int = int(linkComboBox.text); |
| var arrangeType:String = arrangeList[arrangeBox.selectedIndex].data; |
| var indexStr:String = visibleComboBox.text; |
| var visibleIndex:int = int(visibleComboBox.text); |
| dispatchEvent(new MultiContainerChangeEvent(MultiContainerChangeEvent.CONTAINER_PROPS_CHANGE,numContainers,arrangeType,visibleIndex)); |
| } |
| |
| private function drawBoundsChangedHandler():void |
| { |
| var dataEvent:DataEvent = new DataEvent(MultiContainerChangeEvent.CONTAINER_DRAW_BOUNDS_CHANGE); |
| dataEvent.data = showContentBounds.selected ? "true" : "false"; |
| dispatchEvent(dataEvent); |
| } |
| |
| // Dummy function - can't get controller prorties from active flow |
| public function update(range:ElementRange):void |
| { |
| |
| } |
| public function updateControllerProps(numContainers:int,arrangement:String,visibleContainer:int):void |
| { |
| if (onStage) |
| { |
| linkComboBox.text = numContainers.toString(); |
| visibleComboBox.text = visibleContainer.toString(); |
| |
| var idx:int = 0; |
| for (idx = 0; idx < arrangeList.length; idx++) |
| { |
| var obj:Object = arrangeList[idx]; |
| if (obj.data == arrangement) |
| { |
| arrangeBox.selectedIndex = idx; |
| break; |
| } |
| } |
| } |
| |
| numContainersValue = numContainers; |
| arrangementValue = arrangement; |
| visibleContainerValue = visibleContainer; |
| |
| } |
| ]]> |
| </mx:Script> |
| |
| <mx:Label text="NumContainers:" fontWeight="bold"/> |
| <mx:ComboBox id="linkComboBox" dataProvider="{linkList}" enter="dataChangedHandler()" close="dataChangedHandler()" width="60" editable="true" selectedIndex="-1"/> |
| <mx:ComboBox id="arrangeBox" dataProvider="{arrangeList}" enter="dataChangedHandler()" close="dataChangedHandler()" selectedIndex="-1"/> |
| <mx:Label text="VisibleContainer:" fontWeight="bold"/> |
| <mx:ComboBox id="visibleComboBox" dataProvider="{linkList}" enter="dataChangedHandler()" close="dataChangedHandler()" width="60" editable="true" selectedIndex="-1"/> |
| <ns:CheckBox id="showContentBounds" valueCommit="drawBoundsChangedHandler()" label="Show Content Bounds"/> |
| |
| </mx:HBox> |