package com.iambookmaster.client.common; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.EventListener; import com.google.gwt.user.client.ui.ComplexPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; public class WidgetsLine extends ComplexPanel { public WidgetsLine() { super(); Element element = DOM.createDiv(); setElement(element); setSize("100%", "100%"); DOM.setStyleAttribute(element, "whiteSpace", "normal"); } public void add(Widget widget) { if (widget instanceof Label) { Label label = (Label)widget; appendInSpan(label,label.getWordWrap()); } else { super.add(widget,getElement()); } } private void appendInSpan(final Widget widget, boolean wordWrap) { Element el = DOM.createSpan(); Element oldEl = widget.getElement(); DOM.setInnerHTML(el, DOM.getInnerHTML(oldEl)); String style = widget.getStyleName(); if (style != null && style.length()>0) { DOM.setElementProperty(el, "className", style); } if (wordWrap) { DOM.setStyleAttribute(el, "whiteSpace", "normal"); } else { DOM.setStyleAttribute(el, "whiteSpace", "nowrap"); } EventListener eventListener = new EventListener() { public void onBrowserEvent(Event event) { widget.onBrowserEvent(event); } }; DOM.setEventListener(el, eventListener); DOM.sinkEvents(el, DOM.getEventsSunk(oldEl)); DOM.appendChild(getElement(), el); } public void add(String text) { addString(getElement(),text); } private native void addString(Element e,String t) /*-{ e.innerHTML=e.innerHTML+t; }-*/; public void addNBSP() { add(" "); } public void clear() { DOM.setInnerHTML(getElement(), ""); } }