Ótima solução Hamad, Beck.
Aproveito para perguntar se a solução funcionaria caso o dataProvider for
uma ArrayCollection vinda de um de um DataService ?
João
2007/5/15, Hamad Amaral <[EMAIL PROTECTED]>:
>
>
> Beck,
>
> BN> Eu faria apenas umas Refatorações básicos para reduzir a complexidade
> BN> e aumentar a legibilidade.
>
> Beleza, Beck, obrigado, eu já tinha removido parte do código duplicado,
> mas
> não pensei na solução das constantes. Como sempre, você mandou muito
> bem.
>
> BN> NO LUGAR DA FUNÇÃO "moveNodeTest()" TERÍAMOS:
> BN> =========================================
>
> BN> private function setStateMoveButtons():void
> BN> {
> BN> if ([EMAIL PROTECTED] != MODULE)
> BN> {
> BN> btUp.enabled = false;
> BN> btDown.enabled = false;
> BN> }
> BN> else
> BN> {
> BN> var hasPrevSibling:Boolean = (
> myTree.selectedItem.childIndex()-1) >=
> BN> 0;
> BN> var hasNextSibling:Boolean = (
> myTree.selectedItem.childIndex()+1) <
> BN> myTree.selectedItem.parent().children().length();
> BN> btUp.enabled = hasPrevSibling;
> BN> btDown.enabled = hasNextSibling;
> BN> }
> BN> }
>
> BN> Acabamos de matar 3 ifs.
>
>
> BN> NO LUGAR DE "moveNode()" TERÍAMOS:
> BN> ===============================
>
> BN> private function moveModule(type:int):void
> BN> {
> BN> if (type == UP || type == DOWN)
> BN> {
> BN> var firstModule:XML = XML(myTree.selectedItem);
> BN> var firstModuleCopy:XML = firstModule.copy();
> BN> myTree.selectedIndex = myTree.selectedIndex + type;
> BN> var secondModule:XML = XML(myTree.selectedItem);
> BN> [EMAIL PROTECTED] = [EMAIL PROTECTED];
> BN> [EMAIL PROTECTED] = [EMAIL PROTECTED];
> BN> [EMAIL PROTECTED] = [EMAIL PROTECTED];
> BN> [EMAIL PROTECTED] = [EMAIL PROTECTED];
> BN> }
> BN> else
> BN> {
> BN> Alert.show("Error");
> BN> }
> BN> setStateMoveButtons();
> BN> }
>
> BN> Usamos constantes no lugar de strings, matamos um "if" e removemos o
> BN> código duplicado. Estas constantes seriam definadas da seguinte forma:
>
> BN> private const UP:int = -1;
> BN> private const DOWN:int = 1;
>
> BN> Então elas seriam usadas no "click" dos botões:
>
> BN> <mx:Button id="btUp" label="UP" enabled="false" click="moveModule(UP)"
> BN> x="209" y="189" width="58"/>
> BN> <mx:Button id="btDown" label="Down" enabled="false"
> BN> click="moveModule(DOWN)" x="209" y="219" />
>
>
> BN> []'s
> BN> Beck Novaes
>
>
>
> BN> On 14 maio, 07:03, Hamad Amaral <[EMAIL PROTECTED]> wrote:
> >> Pessoal,
> >>
> >> Segue a minha solução (mas estou certo de que existem soluções
> melhores):
> >>
> >> <?xml version="1.0" encoding="utf-8"?>
> >> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
> layout="absolute"
> >> initialize="getInitialData();">
> >> <mx:Script>
> >> <![CDATA[
> >> import mx.controls.Alert;
> >> import mx.collections.XMLListCollection;
> >>
> >> private const FOLDER:String = "folder";
> >> private const COURSE:String = "course";
> >> private const MODULE:String = "module";
> >>
> >> [Bindable]
> >> private var types: Array =
> [FOLDER,COURSE,MODULE];
> >>
> >> [Bindable]
> >> private var coursesList:XML =
> >> <list><node objectID="6"
> name="CF" parentID="1" recordType="course"><node objectID="7" name="CFC"
> parentID="6" recordType="module"/><node objectID="8"
> >> name="CFAdmin" parentID="6" recordType="module"/><node objectID="9"
> name="CFML" parentID="6" recordType="module"/><node objectID="10"
> name="CFSCRIPT" parentID="6" recordType="module"/></node><node
> >> objectID="2" name="DataBase" parentID="1" recordType="folder"><node
> objectID="3" name="Oracle" parentID="2" recordType="course"><node
> objectID="4" name="PLSQL" parentID="3"
> >> recordType="module"/><node objectID="5" name="SP" parentID="3"
> recordType="module"/></node></node></list> ;
> >>
> >> [Bindable]
> >> private var courses:XMLListCollection;
> >>
> >> private function getInitialData():void
> >> {
> >> courses = new XMLListCollection(
> coursesList.node);
> >> }
> >>
> >> private function
> treeNodeLabelFunction(item:XML):String
> >> {
> >> return [EMAIL PROTECTED] + " (" +
> [EMAIL PROTECTED] + ")";
> >> }
> >>
> >> private function moveNodeTest():void
> >> {
> >> if ([EMAIL PROTECTED] !=
> MODULE)
> >> {
> >> btUp.enabled = false;
> >> btDown.enabled = false;
> >> }
> >> else
> >> {
> >> var modulesList:XMLList =
> myTree.selectedItem.parent().descendants();
> >> if (modulesList[0] ==
> myTree.selectedItem)
> >> {
> >> btUp.enabled = false;
> >> btDown.enabled = true;
> >> }else if (modulesList[
> modulesList.length()-1] == myTree.selectedItem)
> >> {
> >> btUp.enabled = true;
> >> btDown.enabled = false;
> >> }
> >> else
> >> {
> >> btUp.enabled = true;
> >> btDown.enabled = true;
> >> }
> >> }
> >> }
> >>
> >> private function moveNode(type:String):void
> >> {
> >> var i:Number;
> >> var module:XML;
> >> var aModule:XML;
> >> var tempNode:XML;
> >>
> >> if (type == "up")
> >> {
> >> module = XML(
> myTree.selectedItem);
> >> tempNode = XML(
> myTree.selectedItem).copy();
> >> myTree.selectedIndex =
> myTree.selectedIndex - 1
> >> aModule = XML(
> myTree.selectedItem);
> >> [EMAIL PROTECTED] = [EMAIL
> >> PROTECTED];
> >> [EMAIL PROTECTED] =
> [EMAIL PROTECTED];
> >> [EMAIL PROTECTED] = [EMAIL
> >> PROTECTED];
> >> [EMAIL PROTECTED] =
> [EMAIL PROTECTED];
> >> }
> >> else if (type == "down")
> >> {
> >> module = XML(
> myTree.selectedItem);
> >> tempNode = XML(
> myTree.selectedItem).copy();
> >> myTree.selectedIndex =
> myTree.selectedIndex + 1
> >> aModule = XML(
> myTree.selectedItem);
> >> [EMAIL PROTECTED] = [EMAIL
> >> PROTECTED];
> >> [EMAIL PROTECTED] =
> [EMAIL PROTECTED];
> >> [EMAIL PROTECTED] = [EMAIL
> >> PROTECTED];
> >> [EMAIL PROTECTED] =
> [EMAIL PROTECTED];
> >> }
> >> else
> >> {
> >> Alert.show("Error");
> >> }
> >> moveNodeTest();
> >> }
> >> ]]>
> >> </mx:Script>
> >>
> >> <mx:Tree id="myTree" dataProvider="{courses}"
> labelFunction="treeNodeLabelFunction"
> >> change="moveNodeTest()"
> >> width="200" showRoot="false" height="300"/>
> >>
> >> <mx:TextInput id="tiTemp"
> >> text="{myTree.selectedItem.parent()[EMAIL PROTECTED]"
> y="142" x="208"/>
> >>
> >> <mx:Button id="btUp" label="UP" enabled="false"
> click="moveNode('up')" x="209" y="189" width="58"/>
> >> <mx:Button id="btDown" label="Down" enabled="false"
> click="moveNode('down')" x="209" y="219" />
> >>
> >> </mx:Application>
> >>
> >> --
> >> Hamad Amaral
> >> [EMAIL PROTECTED]
>
>
> BN>
>
> BN> --
> BN> No virus found in this incoming message.
> BN> Checked by AVG Free Edition.
> BN> Version: 7.5.467 / Virus Database: 269.7.0/804 - Release Date:
> 14/5/2007 16:46
>
>
>
> --
> Hamad Amaral
> [EMAIL PROTECTED]
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---