[flexcoders] Re: Extending Custom Panel with RadioButtons - Help

2009-06-24 Thread Tim Hoff

Hi Wally,

Pretty close, just a few minor tweaks needed:

// add the event parameter
public function changeStartType( event:Event ):void

// change to group
addressRB.group = startLocation;
airportRB.group = startLocation;

protected override function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void
{
  super.updateDisplayList(unscaledWidth, unscaledHeight);

  // gap between label and edges of button
  var margin:int = 4;

   // set the sizes
  addressRB.setActualSize(addressRB.getExplicitOrMeasuredWidth(),
addressRB.getExplicitOrMeasuredHeight());
  airportRB.setActualSize(airportRB.getExplicitOrMeasuredWidth(),
airportRB.getExplicitOrMeasuredHeight());

  // position the buttons in the panel
  addressRB.move(145,5);
  airportRB.move(255,5);
}

-TH

--- In flexcoders@yahoogroups.com, Wally Kolcz wko...@... wrote:



 Using an example from the web I am trying to create a custom Panel
component that had radio buttons in the panel header for a specific
piece of a web site. The panel works and I am getting 2 radio buttons
but no labels for either button and the radioGroup's
 changeStartType() is not being called
 . What am I doing wrong? Here is the AS:

 package com.wallykolcz.views.components
 {

 import edu.umich.body.Maps;
 import flash.events.Event;
 import mx.containers.Panel;
 import mx.controls.Button;
 import mx.controls.RadioButton;
 import mx.controls.RadioButtonGroup;

 public class RadioButtonPanel extends Panel
 {

 //Create Radio Button Group and Buttons
 private var startLocation:RadioButtonGroup = new RadioButtonGroup();
 private var addressRB:RadioButton = new RadioButton();
 private var airportRB:RadioButton = new RadioButton();
 private var maps:Maps;

 //constructor
 public function RadioButtonPanel()
 {
 super();
 }

 public function changeStartType():void {
 if (startLocation.selectedValue == address){
 maps.start_txt.text = Enter Starting Address;
 maps.frmAirport.includeInLayout = false;
 maps.frmAirport.visible = false;
 maps.frmAddress.includeInLayout = true;
 maps.frmAddress.visible = true;
 maps.submit_btn.visible = true;
 }else{
 maps.start_txt.text = Choose Your Airport;
 maps.frmAddress.includeInLayout = false;
 maps.frmAddress.visible = false;
 maps.frmAirport.includeInLayout = true;
 maps.frmAirport.visible = true;
 maps.submit_btn.visible = true;
 }
 }

 protected override function createChildren():void{
 super.createChildren();
 //instantiate new radiobuttons and assign properties
 addressRB.value=address;
 addressRB.label=My Address;
 addressRB.groupName = startLocation;

 airportRB.value=airport;
 airportRB.label=Airport;
 airportRB.groupName=startLocation

 //add event listener for change event and call method
 startLocation.addEventListener(Event.CHANGE, changeStartType);

 //add the buttons to rawChildren
 rawChildren.addChild(addressRB);
 rawChildren.addChild(airportRB);
 }

 protected override function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void{
 super.updateDisplayList(unscaledWidth, unscaledHeight);
 //gap between label and edges of button
 var margin:int = 4;

 //position the buttons in the panel
 addressRB.move(145, 15);
 airportRB.move(255,15)
 }





[flexcoders] Re: Extending Custom Panel with RadioButtons - Help

2009-06-24 Thread arno.manders
Try 
addressRB.setActualSize(addressRB.measuredWidth,addressRB.measuredHeight)
airportRB.setActualSize(addressRB.measuredWidth, addressRB.measuredHeight);

in the updateDisplayList() function

--- In flexcoders@yahoogroups.com, Wally Kolcz wko...@... wrote:

 
 
   Using an example from the web I am trying to 
 create a custom Panel component that had radio buttons in the panel header 
 for a specific piece of a web site. The panel works and I am getting 2 radio 
 buttons but no labels for either button and the radioGroup's 
   changeStartType() is not being called
   . What am I doing wrong? Here is the AS:
 
 package com.wallykolcz.views.components
 {
 
 import edu.umich.body.Maps;
 import flash.events.Event;
 import mx.containers.Panel;
 import mx.controls.Button;
 import mx.controls.RadioButton;
 import mx.controls.RadioButtonGroup;
 
 public class RadioButtonPanel extends Panel
 {
 
 //Create Radio Button Group and Buttons
 private var startLocation:RadioButtonGroup = new RadioButtonGroup();
 private var addressRB:RadioButton = new RadioButton();
 private var airportRB:RadioButton = new RadioButton();
 private var maps:Maps;
 
 //constructor
 public function RadioButtonPanel()
 {
 super();
 }
 
 public function changeStartType():void {
 if (startLocation.selectedValue == address){
 maps.start_txt.text = Enter Starting Address;
 maps.frmAirport.includeInLayout = false;
 maps.frmAirport.visible = false;
 maps.frmAddress.includeInLayout = true;
 maps.frmAddress.visible = true;
 maps.submit_btn.visible = true;
 }else{
 maps.start_txt.text = Choose Your Airport;
 maps.frmAddress.includeInLayout = false;
 maps.frmAddress.visible = false;
 maps.frmAirport.includeInLayout = true;
 maps.frmAirport.visible = true;
 maps.submit_btn.visible = true;
 }
 }
 
 protected override function createChildren():void{
 super.createChildren();
 //instantiate new radiobuttons and assign properties
 addressRB.value=address;
 addressRB.label=My Address;
 addressRB.groupName = startLocation; 
 
 airportRB.value=airport;
 airportRB.label=Airport;
 airportRB.groupName=startLocation
 
 //add event listener for change event and call method
 startLocation.addEventListener(Event.CHANGE, changeStartType);
 
 //add the buttons to rawChildren
 rawChildren.addChild(addressRB);
 rawChildren.addChild(airportRB);
 }
 
 protected override function updateDisplayList(unscaledWidth:Number, 
 unscaledHeight:Number):void{
 super.updateDisplayList(unscaledWidth, unscaledHeight);
 //gap between label and edges of button
 var margin:int = 4;
 
 //position the buttons in the panel
 addressRB.move(145, 15);
 airportRB.move(255,15)
 }





re: [flexcoders] Re: Extending Custom Panel with RadioButtons - Help

2009-06-24 Thread Wally Kolcz

Thanks! The labels are now showing perfectly! 

However, I am getting an error when I attempt to check the radio buttons:
TypeError: Error #1009: Cannot access a property or method of a null object 
reference.
at 
com.wallykolcz.views.components::RadioButtonPanel/changeStartType()[D:\wkolcz\My
 
Documents\Flex3\landingPage\src\com\wallykolcz\views\components\RadioButtonPanel.as:34]

Line 34 (in this case since I chose Airport to make this error) is part of this:

public function changeStartType(e:Event):void {
if (startLocation.selectedValue == address){
maps.start_txt.text = Enter Starting Address;
maps.frmAirport.includeInLayout = false;
maps.frmAirport.visible = false;
maps.frmAddress.includeInLayout = true;
maps.frmAddress.visible = true;
maps.submit_btn.visible = true;
}else{
maps.start_txt.text = Choose Your Airport;
maps.frmAddress.includeInLayout = false;
maps.frmAddress.visible = false;
maps.frmAirport.includeInLayout = true;
maps.frmAirport.visible = true;
maps.submit_btn.visible = true;
}

}

I did import and create a variable for the 'maps' component in which this panel 
is inside. 

import edu.umich.body.Maps;
private var maps:Maps;

Is there something I am missing? 

If you need a visual reference you can see the concept site at 
http://www.med.umich.edu/prmc/landing/helipad



From: Tim Hoff timh...@aol.com
Sent: Wednesday, June 24, 2009 8:04 AM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: Extending Custom Panel with RadioButtons - Help 

Hi Wally,

Pretty close, just a few minor tweaks needed:  


// add the 
event parameter 


public 


function 


 changeStartType( event:Event  ): 


void 


// change to 
group 


addressRB.group = startLocation ; 
airportRB.group = startLocation ; 


protected 


override 


function 


 updateDisplayList(unscaledWidth:Number, 
unscaledHeight:Number): 


void


{


 super 


.updateDisplayList(unscaledWidth, unscaledHeight);


// gap between label and edges 
of button


  var 


 margin:int = 4;

  // set the sizes
   addressRB.setActualSize(addressRB.getExplicitOrMeasuredWidth(), 
addressRB.getExplicitOrMeasuredHeight());
 airportRB.setActualSize(airportRB.getExplicitOrMeasuredWidth(), 
airportRB.getExplicitOrMeasuredHeight()); 


// position the buttons in the 
panel


addressRB.move(145,5 );
  airportRB.move(255,5

[flexcoders] Re: Extending Custom Panel with RadioButtons - Help

2009-06-24 Thread Tim Hoff

You need to add maps as a child in createChildren().

-TH

--- In flexcoders@yahoogroups.com, Wally Kolcz wko...@... wrote:


 Thanks! The labels are now showing perfectly!

 However, I am getting an error when I attempt to check the radio
buttons:
 TypeError: Error #1009: Cannot access a property or method of a null
object reference.
 at
com.wallykolcz.views.components::RadioButtonPanel/changeStartType()[D:\w\
kolcz\My
Documents\Flex3\landingPage\src\com\wallykolcz\views\components\RadioBut\
tonPanel.as:34]

 Line 34 (in this case since I chose Airport to make this error) is
part of this:

 public function changeStartType(e:Event):void {
 if (startLocation.selectedValue == address){
 maps.start_txt.text = Enter Starting Address;
 maps.frmAirport.includeInLayout = false;
 maps.frmAirport.visible = false;
 maps.frmAddress.includeInLayout = true;
 maps.frmAddress.visible = true;
 maps.submit_btn.visible = true;
 }else{
 maps.start_txt.text = Choose Your Airport;
 maps.frmAddress.includeInLayout = false;
 maps.frmAddress.visible = false;
 maps.frmAirport.includeInLayout = true;
 maps.frmAirport.visible = true;
 maps.submit_btn.visible = true;
 }

 }

 I did import and create a variable for the 'maps' component in which
this panel is inside.

 import edu.umich.body.Maps;
 private var maps:Maps;

 Is there something I am missing?

 If you need a visual reference you can see the concept site at
http://www.med.umich.edu/prmc/landing/helipad

 

 From: Tim Hoff timh...@...
 Sent: Wednesday, June 24, 2009 8:04 AM
 To: flexcoders@yahoogroups.com
 Subject: [flexcoders] Re: Extending Custom Panel with RadioButtons -
Help

 Hi Wally,

 Pretty close, just a few minor tweaks needed:

 // add the event parameter

 public

 function

 changeStartType( event:Event ):

 void

 // change to group

 addressRB.group = startLocation ;
 airportRB.group = startLocation ;

 protected

 override

 function

 updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):

 void

 {

 super

 .updateDisplayList(unscaledWidth, unscaledHeight);

 // gap between label and edges of button

 var

 margin:int = 4;

 // set the sizes
 addressRB.setActualSize(addressRB.getExplicitOrMeasuredWidth(),
addressRB.getExplicitOrMeasuredHeight());
 airportRB.setActualSize(airportRB.getExplicitOrMeasuredWidth(),
airportRB.getExplicitOrMeasuredHeight());

 // position the buttons in the panel

 addressRB.move(145,5 );
 airportRB.move(255,5 );
 }

 -TH

 --- In flexcoders@yahoogroups.com, Wally Kolcz wkolcz@ wrote:
 
 
 
  Using an example from the web I am trying to create a custom Panel
component that had radio buttons in the panel header for a specific
piece of a web site. The panel works and I am getting 2 radio buttons
but no labels for either button and the radioGroup's
  changeStartType() is not being called
  . What am I doing wrong? Here is the AS:
 
  package com.wallykolcz.views.components
  {
 
  import edu.umich.body.Maps;
  import flash.events.Event;
  import mx.containers.Panel;
  import mx.controls.Button;
  import mx.controls.RadioButton;
  import mx.controls.RadioButtonGroup;
 
  public class RadioButtonPanel extends Panel
  {
 
  //Create Radio Button Group and Buttons
  private var startLocation:RadioButtonGroup = new RadioButtonGroup();
  private var addressRB:RadioButton = new RadioButton();
  private var airportRB:RadioButton = new RadioButton();
  private var maps:Maps;
 
  //constructor
  public function RadioButtonPanel()
  {
  super();
  }
 
  public function changeStartType():void {
  if (startLocation.selectedValue == address){
  maps.start_txt.text = Enter Starting Address;
  maps.frmAirport.includeInLayout = false;
  maps.frmAirport.visible = false;
  maps.frmAddress.includeInLayout = true;
  maps.frmAddress.visible = true;
  maps.submit_btn.visible = true;
  }else{
  maps.start_txt.text = Choose Your Airport;
  maps.frmAddress.includeInLayout = false;
  maps.frmAddress.visible = false;
  maps.frmAirport.includeInLayout = true;
  maps.frmAirport.visible = true;
  maps.submit_btn.visible = true;
  }
  }
 
  protected override function createChildren():void{
  super.createChildren();
  //instantiate new radiobuttons and assign properties
  addressRB.value=address;
  addressRB.label=My Address;
  addressRB.groupName = startLocation;
 
  airportRB.value=airport;
  airportRB.label=Airport;
  airportRB.groupName=startLocation
 
  //add event listener for change event and call method
  startLocation.addEventListener(Event.CHANGE, changeStartType);
 
  //add the buttons to rawChildren
  rawChildren.addChild(addressRB);
  rawChildren.addChild(airportRB);
  }
 
  protected override function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void{
  super.updateDisplayList(unscaledWidth, unscaledHeight);
  //gap between label and edges of button
  var margin:int = 4;
 
  //position the buttons in the panel
  addressRB.move(145, 15);
  airportRB.move(255,15)
  }
 






re: [flexcoders] Re: Extending Custom Panel with RadioButtons - Help

2009-06-24 Thread Wally Kolcz
How can I do that? maps is the 'page' that this panel is on. I need to control 
the elements that are inside the panel:

wallyk:RadioButtonPanel width=100% height=20% title=Start Address Type: 
paddingLeft=5 includeInLayout=true visible=true  
mx:Label id=start_txt /
mx:Form  id=frmAddress width=100% height=100%
mx:FormItem label=Street Address: fontWeight=bold 
mx:TextInput id=address_txt fontWeight=normal /
/mx:FormItem
mx:FormItem label=City: fontWeight=bold
mx:TextInput id=city_txt fontWeight=normal /
/mx:FormItem
mx:FormItem label=State: fontWeight=bold
mx:TextInput id=state_txt fontWeight=normal maxChars=2 
/
/mx:FormItem
mx:FormItem label=Zip Code: fontWeight=bold
mx:TextInput id=zip_txt fontWeight=normal  maxChars=5/
/mx:FormItem
mx:Button label=Get Directions 
click=showDirections(address_txt.text, city_txt.text, state_txt.text, 
zip_txt.text); /
/mx:Form
mx:Form width=100% id=frmAirport height=100% 
includeInLayout=false visible=false
mx:ComboBox id=addresscbb labelField=label fontWeight=normal
mx:ArrayCollection
mx:Object label=Capital Region International Airport 
address=4100 Capital City Boulevard city=Lansing state=MI 
zipcode=48906/
mx:Object label=Kalamazoo/Battle Creek International 
Airport address=5235 Portage Road city=Kalamazoo state=MI 
zipcode=49002/
mx:Object label=Gerald R. Ford International Airport 
address=5500 44th St SE city=Grand Rapids state=MI zipcode=49512/
mx:Object label=Bishop International Airport 
address=3425 W Bristol Road city=Flint state=MI zipcode=48507/
mx:Object label=Detroit Metropolitan Wayne County 
Airport address=9000 Middlebelt Road city=Romulus state=MI 
zipcode=48174/
mx:Object label=Capital Region International Airport 
address=655 Aviation Drive city=Mason state=MI zipcode=48854/  
  
/mx:ArrayCollection
/mx:ComboBox
/mx:Form
mx:Button label=Map Route id=submit_btn visible=false /
/wallyk:RadioButtonPanel


From: Tim Hoff timh...@aol.com
Sent: Wednesday, June 24, 2009 8:56 AM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: Extending Custom Panel with RadioButtons - Help 

You need to add maps as a child in createChildren().

-TH

--- In flexcoders@yahoogroups.com, Wally Kolcz wko...@... wrote:





 Thanks! The labels are now showing perfectly!



 However, I am getting an error when I attempt to check the radio

buttons:

 TypeError: Error #1009: Cannot access a property or method of a null

object reference.

 at

com.wallykolcz.views.components::RadioButtonPanel/changeStartType()[D:\w\

kolcz\My

Documents\Flex3\landingPage\src\com\wallykolcz\views\components\RadioBut\

tonPanel.as:34]



 Line 34 (in this case since I chose Airport to make this error) is

part of this:



 public function changeStartType(e:Event):void {

 if (startLocation.selectedValue == address){

 maps.start_txt.text = Enter Starting Address;

 maps.frmAirport.includeInLayout = false;

 maps.frmAirport.visible = false;

 maps.frmAddress.includeInLayout = true;

 maps.frmAddress.visible = true;

 maps.submit_btn.visible = true;

 }else{

 maps.start_txt.text = Choose Your Airport;

 maps.frmAddress.includeInLayout = false;

 maps.frmAddress.visible = false;

 maps.frmAirport.includeInLayout = true;

 maps.frmAirport.visible = true;

 maps.submit_btn.visible = true;

 }



 }



 I did import and create a variable for the 'maps' component in which

this panel is inside.



 import edu.umich.body.Maps;

 private var maps:Maps;



 Is there something I am missing?



 If you need a visual reference you can see the concept site at
http://www.med.umich.edu/prmc/landing/helipad



 



 From: Tim Hoff timh...@...

 Sent: Wednesday, June 24, 2009 8:04 AM

 To: flexcoders@yahoogroups.com

 Subject: [flexcoders] Re: Extending Custom Panel with RadioButtons -

Help



 Hi Wally,



 Pretty close, just a few minor tweaks needed:



 // add the event parameter



 public



 function



 changeStartType( event:Event ):



 void



 // change to group



 addressRB.group = startLocation ;

 airportRB.group = startLocation ;



 protected



 override



 function



 updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):



 void



 {



 super



 .updateDisplayList(unscaledWidth, unscaledHeight);



 // gap between label and edges of button



 var



 margin:int = 4;



 // set the sizes

 addressRB.setActualSize(addressRB.getExplicitOrMeasuredWidth(),

addressRB.getExplicitOrMeasuredHeight());

 airportRB.setActualSize(airportRB.getExplicitOrMeasuredWidth

[flexcoders] Re: Extending Custom Panel with RadioButtons - Help

2009-06-24 Thread Tim Hoff

Ok, so take maps out of the RadioButtonPanel AS component and make the
startLocation RadioButtonGroup public.  Next create a Event in the
component, that will be dispatched when the radio buttons are clicked:

After the import statements add:
[Event(name=changeMap,type=flash.events.Event)]

Then in changeStartType(), replace the if statement with:
var event:Event = new Event( changeMap );
dispatchEvent( event );

Now you can listen for the event:
wallyk:RadioButtonPanel changeMap=handleChangeMap( event )/

The event handler would then perform the changes, from outside of the
component:

private function handleChangeMap( event:Event ):void
{
  if (event.currentTarget.startLocation.selectedValue == address){
   start_txt.text = Enter Starting Address;
  }else{
   start_txt.text = Choose Your Airport;
  }
}

It makes sense to do it this way because the content of the panel could
change and you might want to re-use your component..

-TH

--- In flexcoders@yahoogroups.com, Wally Kolcz wko...@... wrote:

 How can I do that? maps is the 'page' that this panel is on. I need to
control the elements that are inside the panel:

 wallyk:RadioButtonPanel width=100% height=20% title=Start
Address Type: paddingLeft=5 includeInLayout=true visible=true 
 mx:Label id=start_txt /
 mx:Form id=frmAddress width=100% height=100%
 mx:FormItem label=Street Address: fontWeight=bold 
 mx:TextInput id=address_txt fontWeight=normal /
 /mx:FormItem
 mx:FormItem label=City: fontWeight=bold
 mx:TextInput id=city_txt fontWeight=normal /
 /mx:FormItem
 mx:FormItem label=State: fontWeight=bold
 mx:TextInput id=state_txt fontWeight=normal maxChars=2 /
 /mx:FormItem
 mx:FormItem label=Zip Code: fontWeight=bold
 mx:TextInput id=zip_txt fontWeight=normal maxChars=5/
 /mx:FormItem
 mx:Button label=Get Directions
click=showDirections(address_txt.text, city_txt.text, state_txt.text,
zip_txt.text); /
 /mx:Form
 mx:Form width=100% id=frmAirport height=100%
includeInLayout=false visible=false
 mx:ComboBox id=addresscbb labelField=label fontWeight=normal
 mx:ArrayCollection
 mx:Object label=Capital Region International Airport address=4100
Capital City Boulevard city=Lansing state=MI zipcode=48906/
 mx:Object label=Kalamazoo/Battle Creek International Airport
address=5235 Portage Road city=Kalamazoo state=MI
zipcode=49002/
 mx:Object label=Gerald R. Ford International Airport address=5500
44th St SE city=Grand Rapids state=MI zipcode=49512/
 mx:Object label=Bishop International Airport address=3425 W
Bristol Road city=Flint state=MI zipcode=48507/
 mx:Object label=Detroit Metropolitan Wayne County Airport
address=9000 Middlebelt Road city=Romulus state=MI
zipcode=48174/
 mx:Object label=Capital Region International Airport address=655
Aviation Drive city=Mason state=MI zipcode=48854/
 /mx:ArrayCollection
 /mx:ComboBox
 /mx:Form
 mx:Button label=Map Route id=submit_btn visible=false /
 /wallyk:RadioButtonPanel

 
 From: Tim Hoff timh...@...
 Sent: Wednesday, June 24, 2009 8:56 AM
 To: flexcoders@yahoogroups.com
 Subject: [flexcoders] Re: Extending Custom Panel with RadioButtons -
Help

 You need to add maps as a child in createChildren().

 -TH

 --- In flexcoders@yahoogroups.com, Wally Kolcz wkolcz@ wrote:

 

 

  Thanks! The labels are now showing perfectly!

 

  However, I am getting an error when I attempt to check the radio

 buttons:

  TypeError: Error #1009: Cannot access a property or method of a null

 object reference.

  at


com.wallykolcz.views.components::RadioButtonPanel/changeStartType()[D:\w\
\

 kolcz\My


Documents\Flex3\landingPage\src\com\wallykolcz\views\components\RadioBut\
\

 tonPanel.as:34]

 

  Line 34 (in this case since I chose Airport to make this error) is

 part of this:

 

  public function changeStartType(e:Event):void {

  if (startLocation.selectedValue == address){

  maps.start_txt.text = Enter Starting Address;

  maps.frmAirport.includeInLayout = false;

  maps.frmAirport.visible = false;

  maps.frmAddress.includeInLayout = true;

  maps.frmAddress.visible = true;

  maps.submit_btn.visible = true;

  }else{

  maps.start_txt.text = Choose Your Airport;

  maps.frmAddress.includeInLayout = false;

  maps.frmAddress.visible = false;

  maps.frmAirport.includeInLayout = true;

  maps.frmAirport.visible = true;

  maps.submit_btn.visible = true;

  }

 

  }

 

  I did import and create a variable for the 'maps' component in which

 this panel is inside.

 

  import edu.umich.body.Maps;

  private var maps:Maps;

 

  Is there something I am missing?

 

  If you need a visual reference you can see the concept site at
 http://www.med.umich.edu/prmc/landing/helipad

 

  

 

  From: Tim Hoff TimHoff@

  Sent: Wednesday, June 24, 2009 8:04 AM

  To: flexcoders@yahoogroups.com

  Subject: [flexcoders] Re: Extending Custom Panel with RadioButtons -

 Help

 

  Hi Wally,

 

  Pretty close, just a few

re: [flexcoders] Re: Extending Custom Panel with RadioButtons - Help

2009-06-24 Thread Wally Kolcz
Thanks that worked like a charm. I had a feeling I wanted to do a dispatched 
event, I just forgot that I then get it in the panel MXML attributes! You're 
the best!


From: Tim Hoff timh...@aol.com
Sent: Wednesday, June 24, 2009 9:54 AM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: Extending Custom Panel with RadioButtons - Help 

Ok, so take maps out of the RadioButtonPanel AS component and make the 
startLocation  RadioButtonGroup public.  Next create a Event in the component, 
that will be dispatched when the radio buttons are clicked:

After the import statements add:
[ Event(name= changeMap,type= flash.events.Event)] 

Then in changeStartType(), replace the if statement with:
var event:Event =  new Event(  changeMap );
dispatchEvent( event );   

   Now you can listen for the event:
wallyk:RadioButtonPanel   changeMap= handleChangeMap( event )   /  

The event handler would then perform the changes, from outside of the component:

private function handleChangeMap( event:Event ): void
{
  if (event.currentTarget.startLocation.selectedValue ==  address
){
   start_txt.text =  Enter Starting Address;
  } else{
   start_txt.text =  Choose Your Airport;
  }
}

It makes sense to do it this way because the content of the panel could change 
and you might want to re-use your component..

-TH

--- In flexcoders@yahoogroups.com, Wally Kolcz wko...@... wrote:

 How can I do that? maps is the 'page' that this panel is on. I need to 
 control the elements that are inside the panel: 
 
 wallyk:RadioButtonPanel width=100% height=20% title=Start Address 
 Type: paddingLeft=5 includeInLayout=true visible=true  
 mx:Label id=start_txt / 
 mx:Form id=frmAddress width=100% height=100% 
 mx:FormItem label=Street Address: fontWeight=bold  
 mx:TextInput id=address_txt fontWeight=normal / 
 /mx:FormItem 
 mx:FormItem label=City: fontWeight=bold 
 mx:TextInput id=city_txt fontWeight=normal / 
 /mx:FormItem 
 mx:FormItem label=State: fontWeight=bold 
 mx:TextInput id=state_txt fontWeight=normal maxChars=2 / 
 /mx:FormItem 
 mx:FormItem label=Zip Code: fontWeight=bold 
 mx:TextInput id=zip_txt fontWeight=normal maxChars=5/ 
 /mx:FormItem 
 mx:Button label=Get Directions click=showDirections(address_txt.text, 
 city_txt.text, state_txt.text, zip_txt.text); / 
 /mx:Form 
 mx:Form width=100% id=frmAirport height=100% includeInLayout=false 
 visible=false 
 mx:ComboBox id=addresscbb labelField=label fontWeight=normal 
 mx:ArrayCollection 
 mx:Object label=Capital Region International Airport address=4100 Capital 
 City Boulevard city=Lansing state=MI zipcode=48906/ 
 mx:Object label=Kalamazoo/Battle Creek International Airport address=5235 
 Portage Road city=Kalamazoo state=MI zipcode=49002/ 
 mx:Object label=Gerald R. Ford International Airport address=5500 44th St 
 SE city=Grand Rapids state=MI zipcode=49512/ 
 mx:Object label=Bishop International Airport address=3425 W Bristol Road 
 city=Flint state=MI zipcode=48507/ 
 mx:Object label=Detroit Metropolitan Wayne County Airport address=9000 
 Middlebelt Road city=Romulus state=MI zipcode=48174/ 
 mx:Object label=Capital Region International Airport address=655 Aviation 
 Drive city=Mason state=MI zipcode=48854/ 
 /mx:ArrayCollection 
 /mx:ComboBox 
 /mx:Form 
 mx:Button label=Map Route id=submit_btn visible=false / 
 /wallyk:RadioButtonPanel 
 
  
 From: Tim Hoff timh...@... 
 Sent: Wednesday, June 24, 2009 8:56 AM 
 To: flexcoders@yahoogroups.com 
 Subject: [flexcoders] Re: Extending Custom Panel with RadioButtons - Help 
 
 You need to add maps as a child in createChildren(). 
 
 -TH 
 
 --- In flexcoders@yahoogroups.com, Wally Kolcz wkolcz@ wrote: 
 
  
 
  
 
  Thanks! The labels are now showing perfectly! 
 
  
 
  However, I am getting an error when I attempt to check the radio 
 
 buttons: 
 
  TypeError: Error #1009: Cannot access a property or method of a null 
 
 object reference. 
 
  at 
 
 com.wallykolcz.views.components::RadioButtonPanel/changeStartType()[D:\w\ 
 
 kolcz\My 
 
 Documents\Flex3\landingPage\src\com\wallykolcz\views\components\RadioBut\ 
 
 tonPanel.as:34] 
 
  
 
  Line 34 (in this case since I chose Airport to make this error) is 
 
 part of this: 
 
  
 
  public function changeStartType(e:Event):void { 
 
  if (startLocation.selectedValue == address){ 
 
  maps.start_txt.text = Enter Starting Address; 
 
  maps.frmAirport.includeInLayout = false; 
 
  maps.frmAirport.visible = false; 
 
  maps.frmAddress.includeInLayout = true; 
 
  maps.frmAddress.visible = true; 
 
  maps.submit_btn.visible = true; 
 
  }else{ 
 
  maps.start_txt.text = Choose Your Airport; 
 
  maps.frmAddress.includeInLayout = false; 
 
  maps.frmAddress.visible = false; 
 
  maps.frmAirport.includeInLayout = true; 
 
  maps.frmAirport.visible = true; 
 
  maps.submit_btn.visible = true