That works.
 
I greatly appreciate you taking the time.
 
Thanks,
 
Jack

  _____  

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of valdhor
Sent: Thursday, May 08, 2008 10:11 AM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: Flex 2.01 - Multiline LinkButton



Using ALex Harui's blog post at
http://blogs.adobe.com/aharui/2007/04/multiline_buttons.html I put together
the following in around 30 minutes:

Application:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; layout="absolute"
    creationComplete="onCreationComplete()">
     <mx:Script>
         <![CDATA[
             import customclasses.MultiLineLinkButton;
             
             private var myMultiLineLinkButton:MultiLineLinkButton = new
MultiLineLinkButton();
             [Bindable] [Embed(source="images/smile.png")] public var
myIcon:Class;
             
             public function onCreationComplete():void
             {
                 myMultiLineLinkButton.label = "My multi line label\nfor a
linkbutton";
                 myMultiLineLinkButton.x = 300;
                 myMultiLineLinkButton.y = 300;
                 myMultiLineLinkButton.width = 300;
                 myMultiLineLinkButton.setStyle("icon", myIcon);
                 myMultiLineLinkButton.labelPlacement = "BOTTOM";
                 this.addChild(myMultiLineLinkButton);
             }
         ]]>
     </mx:Script>
</mx:Application>

customclasses.MultiLineLinkButton:
package customclasses
{
    import flash.text.TextLineMetrics;
    import flash.display.DisplayObject;
    import mx.controls.LinkButton;
    import mx.core.IFlexDisplayObject;
    import mx.core.mx_internal;
    import customclasses.NoTruncationUITextField;
    use namespace mx_internal;

    public class MultiLineLinkButton extends LinkButton
    {
        public function MultiLineLinkButton()
        {
            super();
        }
    
        override protected function createChildren():void
        {
            if (!textField)
            {
                textField = new NoTruncationUITextField();
                textField.styleName = this;
                addChild(DisplayObject(textField));
            }
            super.createChildren();
            textField.wordWrap = true;
            textField.multiline = true;
        }    

        override protected function measure():void
        {
            if (!isNaN(explicitWidth))
            {
                var tempIcon:IFlexDisplayObject = getCurrentIcon();
                var w:Number = explicitWidth;
                if (tempIcon)
                    w -= tempIcon.width + getStyle("horizontalGap") +
getStyle("paddingLeft") + getStyle("paddingRight");
                textField.width = w;
            }
            super.measure();
        
        }
    
        override public function measureText(s:String):TextLineMetrics
        {
            textField.text = s;
            var lineMetrics:TextLineMetrics = textField.getLineMetrics(0);
            lineMetrics.width = textField.textWidth + 4;
            lineMetrics.height = textField.textHeight + 4;
            return lineMetrics;
        }
    }
}

customclasses.NoTruncationUITextField:
package customclasses
{
    import mx.core.UITextField;
    
    public class NoTruncationUITextField extends UITextField
    {
    
        public function NoTruncationUITextField()
        {
            super();
        }
    
        override public function truncateToFit(s:String = null):Boolean
        {
            return false;
        }
    }
}

--- In flexcoders@yahoogroups.com, "Jack @ Zingit" <[EMAIL PROTECTED]> wrote:
>
> 
> I have been searching all day for a multiline LinkButton 
> custom component and can not find one.
> 
> I want the label below the icon and allow for two lines
> of centered text beneath the icon.
> 
> Does anyone know of and/or can you direct me to an
> example?
> 
> I will be most appreciative.
> 
> Thanks,
> 
> Jack
>


 

Reply via email to