У меня есть TileList с миниатюрами изображений.Под каждым уменьшенным изображением я отображаю название изображения.Я хочу создать функциональность переименования.Таким образом, под TileList есть кнопка «Переименовать выбранное изображение».
Когда эта кнопка нажата, я бы хотел изменить состояние компонента itemRenderer.Метка под изображением изменится на TextInput, чтобы пользователь мог ввести новое имя.Это очень похоже на функциональность файла переименования Windows.
Как я могу получить доступ к itemRenderer выбранного изображения?Как сделать так, чтобы он прослушивал событие нажатия кнопки «Переименовать»?
Некоторый код:
<mx:TileList id="imageTileList" width="100%" height="100%" doubleClickEnabled="true"
itemsChangeEffect="{tileListEffect}" dataProvider="{images}"
keyDown="{tileListKeyDownHandler(event)}"
itemRenderer="com.n200.components.htmlElement.ImageTile"
columnWidth="128" rowHeight="128" itemDoubleClick="{insertImage()}"
horizontalScrollPolicy="off" verticalScrollPolicy="auto" />
<mx:LinkButton label="Rename selected image" labelPlacement="left"
enabled="{imageTileList.selectedIndex>0}"
styleName="rename24" click="{renameSelectedImage()}" />
<mx:Script>
<![CDATA[
private function renameSelectedImage():void
{
// Need to access itemRenderer of selected image here
}
]]>
</mx:Script>
ItemRenderer - это просто mx: VBox с mx: ImageMX: Текст.Есть еще один mx: State, в котором mx: Text изменяется на mx: TextInput:
<mx:states>
<mx:State name="rename">
<mx:RemoveChild target="{imageName}" />
<mx:AddChild>
<mx:TextInput id="newName" text="{originalName}" keyDown="{textInputKeyDownHandler(event)}"
width="100%" focusOut="{commit()}" focusThickness="0" />
</mx:AddChild>
</mx:State>
</mx:states>
<enterComponents:P200Image source="{imgFunction?imgFunction.fileId:null}" width="82" height="82" verticalAlign="bottom" stretch="true" />
<mx:Text id="imageName" text="{imgFunction.name}" selectable="false" truncateToFit="true"
textAlign="center" width="82" toolTip="{imgFunction.name}" />