Publié par : flexandgo | 8 juillet, 2009

Avec un Tree … pourquoi t’en chie :(

Un projet m’oblige à utiliser les tree flex … c’est pas que j’veux pas mais c’est qu’il faut implémenter pas mal de chose pour le drag and drop par exemple … et que c’est pas très intuitif …

Entre autres difficultés, pouvoir éditer un noeud avec un double clic …

Il y a pourtant un evenement itemDoubleClick … çà aurait pu être pas mal … le souci c’est que l’évènement itemEditBegin est appellé en mm temps … du coup le noeud se met en mode édition avant de finir le double clic :(

Certains diront de mettre un event.preventDefault() dans la méthode handler de l’itemEditBegin et d’utiliser un tree.editedItemPosition = event dans la méthode handler de l’itemDoubleClick …. et ben çà marche pas … parce que le set editedItemPosition déclenche l’évènement du itemBeginClick … qui lui mm contient un event.preventDefault() .. du coup y’a rien qui se passe ….

Tout çà pour dire que ma solution consiste à placer un Boolean …. c’est crade (à mon goût) mais çà a le mérite de fonctionner :) .. et çà .. c’est le principal :p (cf ci dessous)

A bon entendeur !

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 <mx:Script>
  <![CDATA[
   import mx.controls.TextInput;
   import mx.controls.Alert;
   import mx.events.ListEvent;
   private var dc:Boolean = false;
   public function itemEditBeginHandler(event:ListEvent):void{
    if(!dc){
     event.preventDefault();
    }
    dc = false;
   }
   public function itemDoubleClickHandler(event:ListEvent):void{
    dc = true;
    myTree.editedItemPosition = event;
   }

  ]]>
 </mx:Script>
 <mx:Tree
  id="myTree"
  labelField="@label"
  width="100%"
  height="100%"
  editable="true"
  itemEditBegin="itemEditBeginHandler(event)"
  itemDoubleClick="itemDoubleClickHandler(event)"
  doubleClickEnabled="true">
  <mx:dataProvider>
  <mx:XMLList id="treeData">
        <node label="Mail Box">
            <node label="Inbox">
                <node label="Marketing"/>
                <node label="Product Management"/>
                <node label="Personal"/>
            </node>
            <node label="Outbox">
                <node label="Professional"/>
                <node label="Personal"/>
            </node>
            <node label="Spam"/>
            <node label="Sent"/>
        </node>   
    </mx:XMLList>

  </mx:dataProvider>
 </mx:Tree>
</mx:Application>


Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Twitter picture

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Connexion à %s

Catégories

Suivre

Get every new post delivered to your Inbox.