/* @VaadinApache2LicenseForJavaFiles@ */ package com.vaadin.terminal.gwt.client.ui.label; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.PreElement; import com.google.gwt.user.client.ui.Widget; import com.vaadin.terminal.gwt.client.ApplicationConnection; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.Util; import com.vaadin.terminal.gwt.client.ui.AbstractComponentConnector; public class VLabelPaintable extends AbstractComponentConnector { public VLabelPaintable() { } @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { super.updateFromUIDL(uidl, client); getWidget().setConnection(client); if (!isRealUpdate(uidl)) { return; } boolean sinkOnloads = false; final String mode = uidl.getStringAttribute("mode"); if (mode == null || "text".equals(mode)) { getWidget().setText(uidl.getChildString(0)); } else if ("pre".equals(mode)) { PreElement preElement = Document.get().createPreElement(); preElement.setInnerText(uidl.getChildUIDL(0).getChildString(0)); // clear existing content getWidget().setHTML(""); // add preformatted text to dom getWidget().getElement().appendChild(preElement); } else if ("uidl".equals(mode)) { getWidget().setHTML(uidl.getChildrenAsXML()); } else if ("xhtml".equals(mode)) { UIDL content = uidl.getChildUIDL(0).getChildUIDL(0); if (content.getChildCount() > 0) { getWidget().setHTML(content.getChildString(0)); } else { getWidget().setHTML(""); } sinkOnloads = true; } else if ("xml".equals(mode)) { getWidget().setHTML( uidl.getChildUIDL(0).getChildString(0)); } else if ("raw".equals(mode)) { getWidget().setHTML( uidl.getChildUIDL(0).getChildString(0)); sinkOnloads = true; } else { getWidget().setText(""); } if (sinkOnloads) { Util.sinkOnloadForImages(getWidget().getElement()); } } @Override protected Widget createWidget() { return GWT.create(VLabel.class); } @Override public VLabel getWidget() { return (VLabel) super.getWidget(); } }