I have created a LabelTextBox widget that emits pretty streamlined
HTML/DOM like the following:

<div class="LabelTextBox">
<label class="esf-Label" for="gwt-uid-44">ESF Name</label>
<input id="gwt-uid-44" class="gwt-TextBox required" type="text"
tabindex="0"/>
</div>

The LabelTextBox uses a FlowPanel which results in the <div> with the
specified class to style it.

It emits a <label> tag (using the Label widget I posted earlier) with
the 'for' being the id of the <input> tag, and if none is set, uses a
unique gwt-generated id.

And it emits a <input> using a regular TextBox widget.

Then I use CSS styling based on prior recommendation in this list to
allow them to be stacked or otherwise controlled, as well as the
default width of these input fields:

.LabelTextBox {
        float: left;
        width: 225px;
}
.LabelTextBox label {
         float: left;
         width: 225px;
         margin-left: 1px;
}
.LabelTextBox .gwt-TextBox {
         float: left;
         width: 225px;
}

If anybody is interested, here's the code I wrote for it (and I have a
similar one for LabelTextArea):

package com.esignforms.open.gwt.client.widget;

import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.TextBox;

/**
 * A <label> and <input type="text"> that essentially is a TextBox,
with an added Label, but one that emits a <label> tag instead of
 * the GWT Label.
 */
public class LabelTextBox
        extends Composite
{
        com.esignforms.open.gwt.client.widget.Label label;
        TextBox textBox;
        FlowPanel panel;

        public LabelTextBox(String labelText)
        {
                this(labelText,false);
        }
        public LabelTextBox(String labelText, boolean labelIsHtml)
        {
                this(labelText,labelIsHtml,"LabelTextBox");
        }
        public LabelTextBox(String labelText, boolean labelIsHtml, String
className)
        {
                label = new com.esignforms.open.gwt.client.widget.Label();
                if ( labelIsHtml )
                        label.setHTML(labelText);
                else
                        label.setText(labelText);

                textBox = new TextBox();

                panel = new FlowPanel();
                panel.setStyleName(className);

                String uid = DOM.createUniqueId();
                setId(uid);

                panel.add(label);
                panel.add(textBox);

                initWidget(panel);
        }

        public void setId(String id)
        {
                label.setHtmlFor(id);
                textBox.getElement().setId(id);
        }

        public com.esignforms.open.gwt.client.widget.Label getLabel()
        {
                return label;
        }

        public TextBox getTextBox()
        {
                return textBox;
        }

        public boolean isEnabled()
        {
                return textBox.isEnabled();
        }
        public void setEnabled(boolean v)
        {
                textBox.setEnabled(v);
        }

        public String getValue()
        {
                return textBox.getValue();
        }
        public void setValue(String v)
        {
                textBox.setValue(v);
        }

        public void addStyleName(String v)
        {
                textBox.addStyleName(v);
        }
}

--

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-tool...@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