Hi,

Sorry for so many mails but I can't help it as I keep discovering new 
things in Qooxdoo. :-)

I was not getting the indicator at the correct position in the 
playground application. But, when I integrated the same in my actual 
code, I am getting the indicator correctly (except when I hover on the 
node label, the indicator shrinks, but I will look deeply into 
Christian's code and rectify this).

Also, adding below last node gives error. Hoping to solve this soon too.

Cheers
Amit

Christian Schmidt wrote:
> Hi Fritz,
>
> I'm working on an example for that, but it isn't very well. I have 
> attached my current solution.
>
> Have a look into the "drag" listener, it shows how to get the correct 
> TreeFolder for the indicator possition.
>
> Cheers,
> Chris
>
>
> Fritz Zaucker schrieb:
>> Hi Amit,
>>
>> cool, all solved except for the indicator position. May be the 
>> Qooxdoo-gods
>> of 1&1 will be able to help ... Chris?
>>
>> Thanks,
>> Fritz
>>
>> On Tue, 24 Mar 2009, Amit Rana wrote:
>>
>>  
>>> Hi,
>>>
>>> Amit Rana wrote:
>>>    
>>>> Hi Fritz,
>>>>
>>>> Fritz Zaucker wrote:
>>>>
>>>>      
>>>>> Hi Amit,
>>>>>
>>>>> thanks for coming up with the code snippet.
>>>>>
>>>>> For dropping to work in the drop-listener you must replace the line
>>>>>
>>>>>      this.addBefore(sel[i], orig); //error - this.addBefore is not 
>>>>> a function
>>>>>
>>>>> with
>>>>>
>>>>>      orig.getParent().addBefore(sel[i], orig);
>>>>>
>>>>> You must drop (e.g. add) to the parentFolder in a tree.
>>>>>
>>>>>
>>>>>         
>>>> thanks for the tip but i guess I was not using that properly. After 
>>>> removal of "for" loop, now its working fine.
>>>>
>>>>      
>>>>> However, there are still issues:
>>>>>
>>>>> 1) The indicator is not shown (it is probably at the wrong place 
>>>>> as the call
>>>>>
>>>>>         var origCoords = orig.getContainerLocation();
>>>>>
>>>>>     gets the coordinates of the "surrounding" parent part of the 
>>>>> tree.
>>>>>
>>>>>     This is the problem I originally described in my posting. Your 
>>>>> code
>>>>>     snippet nicely describes the problem (with the above change for
>>>>>     dropping).
>>>>>
>>>>>
>>>>>         
>>>> as you already know, same problem with me but i guess we can try 
>>>> solving this in case no-one else comes up with any suggestions :-)
>>>>
>>>>      
>>>>> 2) Depending on where the drop occurs the call to 
>>>>> getOriginalTarget() seems
>>>>>     to pick up the label part of the TreeFolder widget and thus 
>>>>> the attempt
>>>>>     to add the droppable widget to its parent (the labels) fails 
>>>>> with the
>>>>>     following error in the firebug console:
>>>>>
>>>>>         orig.getParent is not a function
>>>>>            var cz=new qx.ui.basic.Label(this.tr(bn));
>>>>>
>>>>>     This can be reproduced with your code snippet in the 
>>>>> playground by
>>>>>     experimenting with dragging/dropping.
>>>>>
>>>>>     I guess the logic of detecting the widget to drop to needs some
>>>>>     improvement (probably some instanceOf magic).
>>>>>
>>>>>         
>>>> The List example works perfect (it doesn't allow you to drop on the 
>>>> label and only allows the drop at place when indicator is seen 
>>>> between the items). So, we need to do something similar. Even 
>>>> without indicator, the cursor changes to cursor with a small box at 
>>>> top and if we can make this appear only between the nodes, then 
>>>> maybe this error will not come.
>>>> BTW, in my code, if I try dropping on the label, the script simply 
>>>> hangs (without giving any error). :-(
>>>>
>>>>       
>>> I solved this problem by modifying my "drop" eventlistener as :
>>> ----snip----
>>> tree.addListener("drop", function(e)
>>>     {
>>>       var sel = this.getSortedSelection();
>>>       var src = sel[0];
>>>       var dest = e.getOriginalTarget();
>>>             var p1 = src.getParent();
>>>       var p2 = dest.getParent();
>>>            if(p1 == p2)      //solves issue 4)
>>>         if(dest instanceof qx.ui.tree.TreeFolder){   //solves issue 2)
>>>           dest.getParent().addBefore(src, dest);
>>>         }
>>>                });
>>> ----snip----
>>> But, if I try dropping after the last node, I get error. So need to 
>>> handle this special case.
>>>
>>> Amit
>>>    
>>>>> 3) The for loop in the drop listener is probably not needed, as in 
>>>>> a tree
>>>>>     only one Folder can be selected at a time, so sel.length is 
>>>>> always 1. So
>>>>>     I guess this could be simplified a bit.
>>>>>
>>>>>
>>>>>         
>>>> Yeah... I changed it to orig.getParent().addBefore(sel[0], orig); 
>>>> and its working fine. thnks
>>>>
>>>>      
>>>>> 4) For my application I need to limit the dragging of a folder to 
>>>>> within the
>>>>>     same sub-tree (e.g. the parent folder cannot change). So more 
>>>>> drag
>>>>>     detection logic is needed, but this shouldn't be too difficult.
>>>>>
>>>>>         
>>>> same in my case too. :-)
>>>>
>>>>      
>>>>> So currently I am in need for some help on 1) and if somebody has 
>>>>> a hint for
>>>>> 2) that would even be better.
>>>>>
>>>>> Thanks,
>>>>> Fritz
>>>>>
>>>>>
>>>>>         
>>>> thanks
>>>> Amit
>>>>
>>>>      
>>>>> On Mon, 23 Mar 2009, Amit Rana wrote:
>>>>>
>>>>>
>>>>>        
>>>>>> Hi,
>>>>>>
>>>>>> As mentioned before, I am also working on drag-drop feature on 
>>>>>> tree. I have made a sample code, but I am stuck up with :
>>>>>>
>>>>>> 1. moving the folder at the right place (How to get the list of 
>>>>>> parsed nodes - I tried to add them to an array on "dragover" 
>>>>>> event but same node gets added multiple times and also node label 
>>>>>> gets added separately, so need to write lot of code to avoid all 
>>>>>> that and I am lokking at some simplified method possible)
>>>>>>
>>>>>> 2. Indicator position (indicator gets shown at wrong place - it 
>>>>>> has to do with the container but not sure how to rectify that)
>>>>>>
>>>>>> Please find the code snippet (made on Playground) and let me know 
>>>>>> your suggestions.
>>>>>> Please note that the "drop" part does not work properly.
>>>>>>
>>>>>> Amit
>>>>>>
>>>>>> P.S. : I am sorry that I have added my doubt in the same thread. 
>>>>>> Please let me know if I should create a new thread or its ok in 
>>>>>> this one (created by Fritz)
>>>>>>
>>>>>>
>>>>>> Fritz Zaucker wrote:
>>>>>>
>>>>>>          
>>>>>>> Hi Amit,
>>>>>>>
>>>>>>> I'll have to extract the relevant code from my application (I 
>>>>>>> currently use
>>>>>>> a class derived from TreeFolder and a somewhat complex code to 
>>>>>>> dynamically
>>>>>>> create the Folders). I'll post the snippet on the mailing list 
>>>>>>> asap.
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Fritz
>>>>>>>
>>>>>>> On Mon, 23 Mar 2009, Amit Rana wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>            
>>>>>>>> Hi Fritz,
>>>>>>>>
>>>>>>>> I am also trying to implement the drag-drop feature on tree 
>>>>>>>> but  the
>>>>>>>> script hangs if I try in playground application. Can you please 
>>>>>>>> pass me
>>>>>>>> your code snippet ?
>>>>>>>>
>>>>>>>> BR
>>>>>>>> Amit
>>>>>>>>
>>>>>>>> Christian Schmidt wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>              
>>>>>>>>> Hi Fritz,
>>>>>>>>>
>>>>>>>>> could you please send a code snipped or an example, that would 
>>>>>>>>> make it
>>>>>>>>> easier to help you by this problem.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Chris
>>>>>>>>>
>>>>>>>>> Fritz Zaucker schrieb:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> I have started to implement drag/drop in my application for the
>>>>>>>>>> qx .ui.tree.TreeFolder()s of a qx.ui.tree.Tree(). I followed the
>>>>>>>>>> Drag/Drop-Demo for Lists in the demobrowser. I had to change 
>>>>>>>>>> the line
>>>>>>>>>>
>>>>>>>>>>       orig.addBefore(sel[i], orig);
>>>>>>>>>>
>>>>>>>>>> to
>>>>>>>>>>
>>>>>>>>>>       orig.getParent().addBefore(sel[i], orig);
>>>>>>>>>>
>>>>>>>>>> to drop the folder into the correct widget.
>>>>>>>>>>
>>>>>>>>>> The only problem I have is to figure out how to get the 
>>>>>>>>>> coordinates for the
>>>>>>>>>> drag/drop indicator right. The demo code has the line
>>>>>>>>>>
>>>>>>>>>>      var orig = e.getOriginalTarget();
>>>>>>>>>>      var origCoords = orig.getContainerLocation();
>>>>>>>>>>
>>>>>>>>>> but this places the indicator several folders below where it 
>>>>>>>>>> should. I guess
>>>>>>>>>> that this actually gives the lower end of the sub-tree in 
>>>>>>>>>> which the folder
>>>>>>>>>> lives.
>>>>>>>>>>
>>>>>>>>>> So my question is, which widget would I have to call 
>>>>>>>>>> getContainerLocation()
>>>>>>>>>> or some other method on to get the right coordinates?
>>>>>>>>>>
>>>>>>>>>> Thanks for your help,
>>>>>>>>>> Fritz
>>>>>>>>>>
>>>>>>>>>>                   
>>
>>  

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to