Actually, I was having some trouble using it with a bound
selectedIndex (and it didn't look as though GoogleMate was doing
that), so I made the following changes. Let me know what you think.

Remove override of createNavItem.
Add:

           private var _selectedIndexChanged:Boolean; // Inherited one is 
private

            override protected function clickHandler(event:MouseEvent):void
            {
                        super.clickHandler(event);
                                
                var index:int = getChildIndex(Button(event.currentTarget));

                        updateSelectionHighlighting(index);
            }
        
            private function updateSelectionHighlighting(index:int):void {
                        // enable all
                for (var i:int = 0; i < numChildren; i++)
                        {
                                if (getChildAt(i) is LinkButton)
                                {
                                        enableLink( getChildAt(i) as LinkButton 
);
                                }
                        }
                        
                        // disable clicked link
                        enableLink( getChildAt(index) as LinkButton, false );
            }
        
            /**
             *  enableLink
             */
            public function enableLink( link:LinkButton, enable:Boolean=true 
):void
            {           
                link.enabled = enable;
                link.buttonMode = enable;
                link.mouseEnabled = enable;
                link.focusEnabled = false;
                link.setStyle("textDecoration", (enable ? "underline" : "none") 
);
            }

                override public function set selectedIndex(value:int):void {
                        _selectedIndexChanged = true;
                        super.selectedIndex = value;
                }
                
            override protected function commitProperties():void
            {
                super.commitProperties();
        
                if (_selectedIndexChanged) {
                                _selectedIndexChanged = false;
                                
this.updateSelectionHighlighting(this.selectedIndex);
                }
            }



On Wed, Jun 10, 2009 at 1:44 PM, Tim Hoff<[email protected]> wrote:
>
>
> Cool, here's the implementation:
>
> <controls:GMToggleLinkBar
>
> id="linkBar"
>           labelField="label"
>           tabChildren="false"
>           focusEnabled="false"
>           direction="vertical"
>           selectedIndex="{ model.currentView }"
>           dataProvider="{ model.navigationItems }"
>           itemClick="model.navigateToItem( event )"/>
>
> -TH
>
> --- In [email protected], Richard Rodseth <rrods...@...> wrote:
>>
>> Thanks, Tim. I'll take a look.
>>
>> On Wed, Jun 10, 2009 at 12:12 PM, Tim hofftimh...@... wrote:
>> >
>> >
>> > Hi Richard,
>> >
>> > Here's a ToggleLinkBar control that might suit your needs.   Just set
>> > the
>> > selectedIndex of the control and you're good to go.  I used an underline
>> > for
>> > the non-selected items, but you can take that out if you want.
>> >
>> > http://www.timothyhoff.com/misc/GMToggleLinkBar.as.html
>> >
>> > -TH
>> >
>> > --- In [email protected], Richard Rodseth rrodseth@ wrote:
>> >>
>> >> Does anyone have a good solution to the problems alluded to in the
>> >> comments here:
>> >>
>> >>
>> >>
>> >> http://blog.flexexamples.com/2008/01/20/setting-the-selected-index-of-a-flex-linkbar-control/
>> >>
>> >> and in some threads on FlexCoders.
>> >>
>> >> Namely that the visuals of a LinkBar do not work with a data provider
>> >> that's not a viewstack.
>> >>
>> >> Thanks.
>> >>
>> >
>>
> 

Reply via email to