My opinion is that is a lot of code to wade through! 
 

Jason Merrill 
Bank of America 
GT&O L&LD Solutions Design & Development 
eTools & Multimedia 

Bank of America Flash Platform Developer Community 


 


________________________________

        From: [email protected]
[mailto:[EMAIL PROTECTED] On Behalf Of Sherif Abdou
        Sent: Thursday, February 07, 2008 1:36 PM
        To: [email protected]
        Subject: Re: [flexcoders] Re: is this how to use
commitProperties
        
        

        
        so good? bad? any opinions?
        
        
        ----- Original Message ----
        From: Sherif Abdou <[EMAIL PROTECTED]>
        To: [email protected]
        Sent: Wednesday, February 6, 2008 9:53:43 PM
        Subject: Re: [flexcoders] Re: is this how to use
commitProperties
        
        

        
        if anyone cares to check, is this how your suppose to do the
stuff or is it overkill. This is a Tab that contains a Close Button so
if the user clicks on the close Button then the tab gets removed and
depending on the policy that gets picked it reacts.
        package flexlib.controls. tabBarClasses

        {

        import flash.display. DisplayObject;

        import flash.events. Event;

        import flash.events. MouseEvent;

        

        import flexlib.constants. AdvancedTabConst ant;

        import flexlib.interfaces. ICustomComponent Styles;

        

        import mx.controls. Button;

        import mx.controls. tabBarClasses. Tab;

        import mx.core.UIComponent ;

        

        /**

        * The Style For the Close Button that will be used

        */

        [Style(name="tabCloseButtonStyl eName",type="String",
inherit="no")]

        

        /**

        * The Style that is used for the indicator, it will be an image

        */

        [Style(name="indicatorClass", type="String", inherit="no")]

        

        

        public class AdvancedTab extends Tab implements
ICustomComponentSty les

        {

        /**

        * Flag to Know if the Button has been created or not

        */

        private var _closeButtonCreated :Boolean;

        /**

        * The Button that will aid us in closing the Tab AKA removing it
from the scene

        */

        private var closeButton: Button;

        /**

        * The Display Indicator that gets seen between the tabs when we
move them

        */

        private var indicatorDisplay: UIComponent;

        public function AdvancedTab( )

        {

        super();

        //enable Mouse Children so we can Have Interaction with the
Buttons

        //and other Stuff that will be placed on the Tab, by Default it
is false

        //reason is if there is a textField in the Tab then a click may
be dispatched or

        //heard in the textField instead of the Tab itself and sometimes
you dont want that to

        //happen.

        mouseChildren=true;

        

        }

        /**

        * Used to Determine whether or not there was a change in the
Close Policy

        */

        private var _closePolicyChanged :Boolean;

        /**

        * Internal Value for the ClosePolicy so we can react

        * accordingly

        */

        private var _closePolicy: String;

        
[Inspectable(defaultValue="close_always",enumeration="close_always,
close_rollover, close_never, close_selected")]

        public function set closePolicy( value:String) :void{

        if(_closePolicy !=value){

        _closePolicy= value;

        _closePolicyChanged =true;

        invalidatePropertie s();

        dispatchEvent(new Event("closePolicyChanged "));

        }

        }

        [Bindable(event="closePolicyChanged ")]

        public function get closePolicy( ):String{

        return _closePolicy;

        }

        /**

        * Override the CreateChildren so we can create the Close Button,
Only Create Children

        * and nothing else, can't size them or position them

        */

        override protected function createChildren( ):void{

        //call the super method so the other stuff gets constructed like


        //the Button itself and all the other stuff that creates the Tab

        super.createChildren( );

        

        //always check if the Button is not made

        if(!closeButton) {

        //safe now we can create it

        closeButton = new Button();

        //listen for the click event so we know when to close the tab

        closeButton. addEventListener (MouseEvent. CLICK,onCloseBut
tonClickHandler) ;

        //hide the close button

        closeButton. visible=false;

        _closeButtonCreated = true;

        addChild(closeButto n);

        

        }

        /**

        * Used to Display the Indicator, first get the Style as a class

        * then what you would need to do is create the style as a class

        */

        if(!indicatorDisplay) {

        

        indicatorDisplay = new UIComponent( )

        addChild(indicatorD isplay as DisplayObject) ;

        }

        

        //call to set the styles

        setCustomStyles( );

        }

        /**

        * Called On when the User Clicks on the Close Button,

        * all we are going to do is dispatch that the user

        * wants to close the tab and handle in the AdvanedTabBar

        * so it gets removed cleanly

        */

        private function onCloseButtonClickH andler(event: MouseEvent)
:void{

        dispatchEvent(new Event(AdvancedTabCo nstant.CLOSE_ TAB));

        }

        /**

        * Override the measure to set the compenents custom size

        * We set the Close Button Size here and the Indicator??

        */

        override protected function measure():void{

        super.measure();

        if(_closeButtonCreate d){

        closeButton. width = closeButton. height=16;

        _closeButtonCreated =false;

        }

        

        }

        /**

        * The Sizes and Positions the Children

        */

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

        super.updateDisplayList( unscaledWidth, unscaledHeight) ;

        

        //check to see if we have the Button

        if(closeButton. visible){

        closeButton. move(unscaledWid th-closeButton. width,4);

        //change the index of where the button is so we can adjust it

        setChildIndex( closeButton, numChildren- 2);

        }

        

        if(indicatorDisplay) {

        setChildIndex( indicatorDisplay ,numChildren- 1);

        }

        

        }

        

        /**

        * Create the CommitProperties so we determine if there is a need

        * to change the closePolicy Buttons

        */

        override protected function commitProperties( ):void{

        super.commitProperties( );

        if(_closePolicyChange d){

        switch(closePolicy) {

        case AdvancedTabConstant .CLOSE_ALWAYS:

        closeButton. visible=true;

        break;

        case AdvancedTabConstant .CLOSE_NEVER:

        closeButton. visible=false;

        break;

        case AdvancedTabConstant .CLOSE_SELECTED:

        if(selected){

        closeButton. visible=true;

        }else{

        closeButton. visible=false;

        }

        break;

        case AdvancedTabConstant .CLOSE_ROLLOVER:

        if(AdvancedTabConstan t.TAB_ROLLED_ OVER){

        closeButton. visible=true;

        }else{

        closeButton. visible=false;

        }

        }

        invalidateDisplayLi st();

        _closePolicyChanged =false;

        }

        }

        /**

        * Sets The Custom Styles for The Indicator and for the button
after they have been created

        */

        public function setCustomStyles( ):void{

        //Set the Style of the Button here

        closeButton. styleName = getStyle("tabCloseButtonStyl eName");

        //set the Style of the Indicator Button here

        indicatorDisplay.
setStyle("backgroundImage",getStyle("indicatorClass"));

        }

        /**

        * Keep Track of When the User is over the Button

        */

        override protected function rollOverHandler( event:MouseEvent
):void{

        AdvancedTabConstant .TAB_ROLLED_ OVER = true;

        _closePolicyChanged =true;

        invalidatePropertie s();

        super.rollOverHandler( event);

        }

        override protected function rollOutHandler( event:MouseEvent
):void{

        AdvancedTabConstant .TAB_ROLLED_ OVER=false;

        _closePolicyChanged =true;

        invalidatePropertie s();

        super.rollOutHandler( event);

        }

        

        

        

        }

        }



        ----- Original Message ----
        From: ecancil <[EMAIL PROTECTED] com>
        To: [EMAIL PROTECTED] ups.com <http://ups.com/> 
        Sent: Wednesday, February 6, 2008 7:46:45 PM
        Subject: [flexcoders] Re: is this how to use commitProperties
        
        

        it doesnt matter how many times you call invalidate - it will
still
        only do it once - that's the whole point.
        --- In [EMAIL PROTECTED] ups.com
<mailto:flexcoders%40yahoogroups.com> , Sherif Abdou <[EMAIL PROTECTED] ..>
wrote:
        >
        > my bad, i for some reason sent it to flexComponents instead
instead
        of flexcoders so sorry for double post
        > i am just wondering if this is how it usually gets used
        > /**
        > * Used to Determine whether or not there was a change in the
Close
        Policy
        > */
        > private var _closePolicyChanged :Boolean;
        > /**
        > * Internal Value for the ClosePolicy so we can react
        > * accordingly
        > */
        > private var _closePolicy: String;
        > [Inspectable( defaultValue= "close_always" ,enumeration=
"close_always ,
        close_rollover , close_never, close_selected" )]
        > public function set closePolicy( value:String) :void{
        > _closePolicy= value;
        > _closePolicyChanged =true;
        > this.invalidateProp erties();
        > dispatchEvent( new Event("closePolicyC hanged")) ;
        > }
        > [Bindable(event= "closePolicyChan ged")]
        > public function get closePolicy( ):String{
        > return _closePolicy;
        > }
        > 
        > /**
        > * Create the CommitProperties so we determine if there is a
need
        > * to change the closePolicy Buttons
        > */
        > override protected function commitProperties( ):void{
        > super.commitPropert ies();
        > if(_closePolicyChan ged){
        > invalidateDisplayLi st();
        > _closePolicyChanged =false;
        > }
        > }
        > 
        > 
        > 
        ____________ _________ _________ _________ _________ _________ _
        > Be a better friend, newshound, and 
        > know-it-all with Yahoo! Mobile. Try it now. 
        http://mobile. yahoo.com/ ;_ylt=Ahu06i62sR 8HDtDypao8Wcj9tA cJ
<http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAc! J> 
        >
        
        



________________________________

        Be a better friend, newshound, and know-it-all with Yahoo!
Mobile. Try it now.
<http://us.rd.yahoo.com/evt=51733/*http://mobile.yahoo.com/;_ylt=Ahu06i6
2sR8HDtDypao8Wcj9tAcJ>  


________________________________

        Never miss a thing. Make Yahoo your homepage.
<http://us.rd.yahoo.com/evt=51438/*http://www.yahoo.com/r/hs>  

        

         

Reply via email to