On Friday 18 February 2011, Carlo Alberto Degli Atti wrote:
> Hi,
> 
>  I've looked around but I haven't found any solution, so I post it
> here:
> 
>  how can I make a TextArea that expands its height depending on the
> text inside?
> 
>  Thanks
> 
>  CA
Its good to find someone else who wants this.  I first came across 
fields like this with Lotus Notes, which has had these for years.  They 
are really useful, but very few other systems seem to have them and
to be honest it is one of the things that puts me off browsers - but that
is another story.

I wrote some code which did this while ago, but I do not know if
it still works on a current GWT, and I am absolutely sure it can be
done better.

import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.TextArea;

public class ExpandingTextArea extends TextArea {
        public void onBrowserEvent( Event event) {
                super.onBrowserEvent( event);
                if (getOffsetHeight( ) <= getScrollHeight( getElement( )))      
        
                        setHeight( ( getScrollHeight( getElement( )) + 6)+"px");
                }
        private native int getScrollHeight( Element e) /*-{ 
                return e.scrollHeight;
                }-*/;
        public void rightSize( ) {
                Element el = getElement( );
                int h = getScrollHeight( el);
                setHeight( ( h + 6) + "px");
                }
        };

The fact that it has a magic number in it (6) is just plain wrong, and
I can not for the life of me remember why that number is there.

rightSize needs to be called when laying out a form, just to get started.
Again this can be done better.  It is also possible that somewhere 
along the line the need for getScrollHeight has gone, but I have not
been following the API closely enough to see.

To get the full Notes function, one would also need to set the width of
the area.  This only sets the height.  But that is for another day.

Hope someone can turn this into something that works properly.

David

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to