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

Responder a