Re: [flexcoders] Drag Drop Question

2007-02-23 Thread Jae Pak
jmfillman,

You just need to add event listeners to your button before adding it to your 
dropBox Canvas.  

See below.

Cheers.

- Jae 


private function dragDropHandler( event:DragEvent) :void {

{
...
buttonA.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
buttonA.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
buttonA.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
dropBox.addChild( buttonA);
...
} 

// Note this is needed for smoothing drag.  Highly necessary in my 
opinion. 
private function mouseMove(event:MouseEvent):void 
{
event.updateAfterEvent();
}  

private function mouseDown(event:MouseEvent):void 
{
if (event.target is Button)
{
event.target.startDrag();
}

}

private function mouseUp(event:MouseEvent):void
{
if (event.target is Button)
{
event.target.stopDrag();
}
}


- Original Message 
From: jmfillman [EMAIL PROTECTED]
To: flexcoders@yahoogroups.com
Sent: Thursday, February 22, 2007 11:57:04 PM
Subject: [flexcoders] Drag  Drop Question









  



See code below. After you drag an item from the list and drop it 
into 

the Canvas, how you do then drag the item you just dropped, have it 

run the dragDropHandler function, and then move the original item?



?xml version=1.0 ?

mx:Application xmlns:mx=http://www.adobe. com/2006/ mxml 

layout=absolute width=500 height=620 borderStyle= solid 

creationComplete= initApp( );



mx:Script

![CDATA[

import mx.controls. Button;

import mx.controls. Alert;

import mx.events.DragEvent ;

import mx.controls. List;

import mx.managers. DragManager;

import mx.core.DragSource;



private function initApp():void {

var dp:Array = ([

{label:First , data:25},

{label:Second , data:50},

{label:Third , data:75},

{label:Fourth , data:100},

]);

listOne.dataProvide r = dp;

}



private function dragEnterHandler( event:DragEvent) :void {

var dropTarget:Canvas= event.currentTar get as Canvas;

dropTarget.setStyle (borderThicknes s, 5);

DragManager. acceptDragDrop( dropTarget) ;

}



private function dragExitHandler( event:DragEvent) :void {

var dropTarget:Canvas= event.currentTar get as Canvas;

revertBoxBorder( );

}



private function dragDropHandler( event:DragEvent) :void {

var dropTarget:Canvas= event.currentTar get as Canvas;

var buttonA:Button = new Button;

buttonA.label = 

listOne.selectedIte m.label;

if (dropTarget. mouseY.valueOf( ) = 0 

 dropTarget.mouseY. valueOf()  100) {

buttonA.y = 0;

buttonA.y = 0;

}

if (dropTarget. mouseY.valueOf( ) = 

100  dropTarget.mouseY. valueOf()  200) {

buttonA.x = 00;

buttonA.y = 100;



}   



dropBox.addChild( buttonA);

revertBoxBorder( );

}

   

private function revertBoxBorder( ):void {

dropBox.setStyle( borderThickness , 

1);

}

]]

/mx:Script

mx:List id=listOne dragEnabled= true 

dropEnabled= true x=10 y=10/mx: List

mx:Canvas x=180 y=10 width=308 height=498 

borderStyle= solid borderColor= #00 backgroundColor= #FF 

dragEnter=dragEnte rHandler( event); 

id=dropBox dragExit=dragExitH andler(event) ;

dragDrop=dragDropH andler(event) ;   

/mx:Canvas

/mx:Application






  







!--

#ygrp-mlmsg {font-size:13px;font-family:arial,helvetica,clean,sans-serif;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}
#ygrp-mlmsg 

Re: [flexcoders] Re: Drag Drop Question

2007-02-23 Thread Jae Pak
Hi jmfillman,

You made it all the way, except for the variable referencing part.  As opposed 
to creating a new Button object, you just need to get a reference to the Button 
you've been dragging around, i.e. var selectedButton:Button = event.target as 
Button;

Enjoy. 

- Jae 

public function mouseUp(event:MouseEvent) :void 
{
if (event.target is Button) 
{
event.target.stopDrag( );

// Assign a reference variable to the button that has been dragged 
around.
var selectedButton:Button = event.target as Button;

if (event.stageY. valueOf() = 10  event.stageY. valueOf()  110) 
{
selectedButton.x = 0;
selectedButton.y = 0;
selectedButton.width = 150;
}

if (event.stageY.valueOf() = 110  event.stageY.valueOf()  210) 
{
selectedButton.x = 0;
selectedButton.y = 100;
selectedButton.width = 150;
}
}
}


- Original Message 
From: jmfillman [EMAIL PROTECTED]
To: flexcoders@yahoogroups.com
Sent: Friday, February 23, 2007 4:10:31 PM
Subject: [flexcoders] Re: Drag  Drop Question









  



Thank you Jae. That is far better than what I had worked out.



This had led me to another question. When I move one of the buttons, 

the mouseUp function is firing and going to the correct IF statement. 

What it isn't doing is moving the item to the (x,y) position 

specified in the IF statement, it's just dropping it where ever I 

drop it.



I'm also curious what the impact is of having every item 

called buttonA and if there isn't a better way.



?xml version=1.0 ?

mx:Application xmlns:mx=http://www.adobe. com/2006/ mxml 

layout=absolute width=500 height=620 borderStyle= solid 

creationComplete= initApp( );



mx:Script

![CDATA[

public var slot001A:Boolean;

public var slot001B:Boolean;





import mx.controls. Button;

import mx.controls. Alert;

import mx.events.DragEvent ;

import mx.controls. List;

import mx.managers. DragManager;

import mx.core.DragSource;



private function initApp():void {

var dp:Array = ([

{label:First , data:25},

{label:Second , data:50},

{label:Third , data:75},

{label:Fourth , data:100},

]);

listOne.dataProvide r = dp;

}



private function dragEnterHandler( event:DragEvent) :void {

var dropTarget:Canvas= event.currentTar get as Canvas;

dropTarget.setStyle (borderThicknes s, 5);

   if (slot001A==false) {

if (event.stageY. valueOf() = 

10  event.stageY. valueOf()  110) {

DragManager. acceptDragDrop( dropTarget) ;  



}

   }

   if (slot001B==false) {

if (event.stageY. valueOf() = 

110  event.stageY. valueOf()  210) {

DragManager. acceptDragDrop( dropTarget) ;  



}

   }

}



private function dragExitHandler( event:DragEvent) :void {

var dropTarget:Canvas= event.currentTar get as Canvas;

revertBoxBorder( );

}



public function dragDropHandler( event:DragEvent) :void {

var dropTarget:Canvas= event.currentTar get as Canvas;

var buttonA:Button = new Button;



buttonA.label= listOne.selected Item.label;



buttonA.height= listOne.selected Item.data;

buttonA.addEventLis tener

(MouseEvent. MOUSE_DOWN, mouseDown);

buttonA.addEventLis tener

(MouseEvent. MOUSE_MOVE, mouseMove);

buttonA.addEventLis tener

(MouseEvent. MOUSE_UP, mouseUp);

buttonA.addEventLis tener

(MouseEvent. CLICK, buttonClick) ;



if (event.stageY. valueOf() = 10  

event.stageY. valueOf()  110) {

buttonA.x = 0;

buttonA.y = 0;

buttonA.width = 150;

slot001A=true;

}

else{


Re: A Solution Found [flexcoders] How I can get the benefit of both startDrag() and DragManager.doDrag()?

2007-02-22 Thread Jae Pak
Igor,

Thanks for your input.  I personally like rviewer example.  It demonstrates 
well the use of DragManager, but it misses one important feature that I was 
after, naming permanent location change of the drag initiator.  

Luckily, I made  a break through in my implementation roadblock.   I had a 
roadblock in that I could select a node and drag it to another node, but 
MOUSE_OVER behavior of the drag target did not always work due to FLEX design 
implementation, which always returns mouse event target that is at the lowest 
in the hierarchy.  

You most likely know this, but in the interest of the development community, 
take the example of a Canvas with two child nodes with MOUSE_OVER event handler 
among other event handlers,

Node A  (childIndex = 0)
Node B  (childIndex = 1)

If Node A is clicked and dragged via startDrag() to Node B, Node B's MOUSE_OVER 
event fires.  This is workable behavior that I can build on.  

However, if Node B is clicked and dragged via startDrag() to Node A, Node A's 
MOUSE_OVER event DOES NOT fire.  This was my roadblock.  

The simple and elegant solution that I was looking is as follows.  

Canvas(event.currentTarget.parent).setChildIndex(myNode(event.currentTarget), 
0); in the MOUSE_DOWN event handler. 

The above line reorders childIndex and consequently the event target hierarchy 
such that the node that is being dragged around does not prevent other node's 
MOUSE_OVER event from occurring. 

Again, thanks for your input.

- Jae 


- Original Message 
From: Igor Costa [EMAIL PROTECTED]
To: flexcoders@yahoogroups.com
Sent: Thursday, February 22, 2007 7:03:11 PM
Subject: Re: [flexcoders] How I can get the benefit of both startDrag() and 
DragManager.doDrag()?









  



Jae

http://weblogs. macromedia. com/khoyt/ files/rviewer. zip

the source also is avaible you could change.

There's other component on the Exchange that do the same not as Kevin Yot but 
similar.


Regards.


On 2/22/07, jwp2k_uva [EMAIL PROTECTED] com wrote:













  



Hey guys,

  

I'm looking to create objects, i.e. boxes, that I can drag around to

different locations and have the ability to link to each other via

drag and drop operation.  The objective that I'm trying to achieve is

similar to the following example.



http://weblogs. macromedia. com/khoyt/ archives/ 2006/11/flex_ associatio. cfm




The above example would have been perfect, except the boxes cannot be

dragged to different locations.  



At this point, I hit a road block in trying to handle mouse events

directly and I would greatly appreciate your elegant approach.



Thanks!



- Jae  






  



















-- 
 - ---
Igor Costa
www.igorcosta. org
www.igorcosta. com
skype: igorpcosta


  







!--

#ygrp-mlmsg {font-size:13px;font-family:arial,helvetica,clean,sans-serif;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
font-family:Georgia;
}
#ygrp-text p{
margin:0 0 1em 0;
}
#ygrp-tpmsgs{
font-family:Arial;
clear:both;
}
#ygrp-vitnav{
padding-top:10px;
font-family:Verdana;
font-size:77%;
margin:0;
}
#ygrp-vitnav a{
padding:0 1px;
}
#ygrp-actbar{
clear:both;
margin:25px 0;
white-space:nowrap;
color:#666;
text-align:right;
}
#ygrp-actbar .left{
float:left;
white-space:nowrap;
}
.bld{font-weight:bold;}
#ygrp-grft{
font-family:Verdana;
font-size:77%;
padding:15px 0;
}
#ygrp-ft{
font-family:verdana;
font-size:77%;
border-top:1px solid #666;
padding:5px 0;
}
#ygrp-mlmsg #logo{
padding-bottom:10px;
}

#ygrp-vital{
background-color:#e0ecee;
margin-bottom:20px;
padding:2px 0 8px 8px;
}
#ygrp-vital #vithd{
font-size:77%;
font-family:Verdana;
font-weight:bold;
color:#333;
text-transform:uppercase;
}
#ygrp-vital ul{
padding:0;
margin:2px 0;
}
#ygrp-vital ul li{
list-style-type:none;
clear:both;
border:1px solid #e0ecee;
}
#ygrp-vital ul li .ct{
font-weight:bold;
color:#ff7900;
float:right;
width:2em;
text-align:right;
padding-right:.5em;
}
#ygrp-vital ul li .cat{
font-weight:bold;
}
#ygrp-vital a {
text-decoration:none;
}

#ygrp-vital a:hover{
text-decoration:underline;
}

#ygrp-sponsor #hd{
color:#999;
font-size:77%;
}
#ygrp-sponsor #ov{
padding:6px 13px;
background-color:#e0ecee;
margin-bottom:20px;
}
#ygrp-sponsor #ov ul{
padding:0 0 0 8px;
margin:0;
}
#ygrp-sponsor #ov li{
list-style-type:square;
padding:6px 0;
font-size:77%;
}
#ygrp-sponsor #ov li a{
text-decoration:none;
font-size:130%;
}
#ygrp-sponsor #nc {
background-color:#eee;
margin-bottom:20px;
padding:0 8px;
}
#ygrp-sponsor .ad{
padding:8px 0;
}
#ygrp-sponsor .ad #hd1{
font-family:Arial;
font-weight:bold;
color:#628c2a;
font-size:100%;
line-height:122%;
}
#ygrp-sponsor .ad a{
text-decoration:none;
}
#ygrp-sponsor .ad a:hover{
text-decoration:underline;
}
#ygrp-sponsor .ad p{
margin:0;
}