[flexcoders] Using an Alert when handling another event?

2009-02-23 Thread lanekelly5
I'm using a SuperTabNavigator control from the flexlib package.  When 
the user clicks on the close button for a tab it fires the tabClose 
event.  I have specified a handler for this in the mxml for the 
SuperTabNavigator component:

tabClose=confirmTabDelete(event);

In the confirmTabDelete function I would like to pop up an Alert with 
YES | NO buttons.  According to the SuperTabNavigator docs I can 
cancel the delete action by calling event.preventDefault() within the 
confirmTabDelete function.  My problem is that the Alert box uses its 
own handler function for the YES/NO button clicks.  I'm not sure how 
that handler function can reference the event object to call 
preventDefault().

private function confirmTabDelete(event:SuperTabEvent):void {
   Alert.show(Are you sure you want to delete this tab?, Confirm 
delete, Alert.YES | Alert.NO, this, alertListener, null, Alert.NO);

}

private function alertListener(eventObj:CloseEvent):void {
   if (eventObj.detail==Alert.NO) {
   //Now what?  How to call preventDefault() on the event object 
in confirmTabDelete?
   }
}

Is the secret in the this which is being used as the parent for the 
Alert?  

Any help would be great.


}



Re: [flexcoders] Using an Alert when handling another event?

2009-02-23 Thread Laurent Cozic
You need to use preventDefault() in the confirmTabDelete function and then 
display the Alert box. Then when the user clicks ok, close the tab 
programmatically. I'm not familiar with SuperTabNavigator but normally this 
kind of events are only dispatched as a result of a user action, so when you 
close the tab programmatically the second time, this will really close it 
without going through the event handler.



private function confirmTabDelete( event:SuperTabEv ent):void {

   Alert.show( Are you sure you want to delete this tab?, Confirm 

delete, Alert.YES | Alert.NO, this, alertListener, null, Alert.NO);

event.preventDefault(); // Prevent default here

}



private function alertListener( eventObj: CloseEvent) :void {

   if (eventObj.detail= =Alert.NO) {
closeTab(); // Really close the tab here

   }

}

--
Laurent Cozic

Flash, Flex and Web Application development
http://pogopixels.com

--- On Sat, 2/21/09, lanekelly5 lkel...@gmail.com wrote:
From: lanekelly5 lkel...@gmail.com
Subject: [flexcoders] Using an Alert when handling another event?
To: flexcoders@yahoogroups.com
Date: Saturday, February 21, 2009, 10:18 PM












I'm using a SuperTabNavigator control from the flexlib package.  
When 

the user clicks on the close button for a tab it fires the tabClose 

event.  I have specified a handler for this in the mxml for the 

SuperTabNavigator component:



tabClose=confirmTa bDelete(event) ;



In the confirmTabDelete function I would like to pop up an Alert with 

YES | NO buttons.  According to the SuperTabNavigator docs I can 

cancel the delete action by calling event.preventDefaul t() within the 

confirmTabDelete function.  My problem is that the Alert box uses its 

own handler function for the YES/NO button clicks.  I'm not sure how 

that handler function can reference the event object to call 

preventDefault( ).



private function confirmTabDelete( event:SuperTabEv ent):void {

   Alert.show( Are you sure you want to delete this tab?, Confirm 

delete, Alert.YES | Alert.NO, this, alertListener, null, Alert.NO);



}



private function alertListener( eventObj: CloseEvent) :void {

   if (eventObj.detail= =Alert.NO) {

   //Now what?  How to call preventDefault( ) on the event object 

in confirmTabDelete?

   }

}



Is the secret in the this which is being used as the parent for the 

Alert?  



Any help would be great.



}