Sua solução é boa o suficiente Hamad.

Eu faria apenas umas Refatorações básicos para reduzir a complexidade
e aumentar a legibilidade.

NO LUGAR DA FUNÇÃO "moveNodeTest()" TERÍAMOS:
=========================================

private function setStateMoveButtons():void
{
        if ([EMAIL PROTECTED] != MODULE)
        {
                btUp.enabled = false;
                btDown.enabled = false;
        }
        else
        {
                var hasPrevSibling:Boolean = 
(myTree.selectedItem.childIndex()-1) >=
0;
                var hasNextSibling:Boolean = 
(myTree.selectedItem.childIndex()+1) <
myTree.selectedItem.parent().children().length();
                btUp.enabled =  hasPrevSibling;
                btDown.enabled = hasNextSibling;
        }
}

Acabamos de matar 3 ifs.


NO LUGAR DE "moveNode()" TERÍAMOS:
===============================

private function moveModule(type:int):void
{
        if (type == UP || type == DOWN)
        {
                var firstModule:XML = XML(myTree.selectedItem);
                var firstModuleCopy:XML = firstModule.copy();
                myTree.selectedIndex = myTree.selectedIndex + type;
                var secondModule:XML = XML(myTree.selectedItem);
                [EMAIL PROTECTED] = [EMAIL PROTECTED];
                [EMAIL PROTECTED] = [EMAIL PROTECTED];
                [EMAIL PROTECTED] = [EMAIL PROTECTED];
                [EMAIL PROTECTED] = [EMAIL PROTECTED];
        }
        else
        {
                Alert.show("Error");
        }
        setStateMoveButtons();
}

Usamos constantes no lugar de strings, matamos um "if" e removemos o
código duplicado. Estas constantes seriam definadas da seguinte forma:

private const UP:int = -1;
private const DOWN:int = 1;

Então elas seriam usadas no "click" dos botões:

<mx:Button id="btUp" label="UP" enabled="false" click="moveModule(UP)"
x="209" y="189" width="58"/>
<mx:Button id="btDown" label="Down" enabled="false"
click="moveModule(DOWN)" x="209" y="219"  />


[]'s
Beck Novaes



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]


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Responder a