code: @Override
  	public void doRender(final WComponent component, final WebXmlRenderContext renderContext) {
  		WPanel panel = (WPanel) component;
  		XmlStringBuilder xml = renderContext.getWriter();
  		ColumnLayout layout = (ColumnLayout) panel.getLayout();
  		int childCount = panel.getChildCount();
  		Size hgap = layout.getHorizontalGap();
  		String hgapString = hgap == null ? null : hgap.toString();
  		Size vgap = layout.getVerticalGap();
  		String vgapString = vgap == null ? null : vgap.toString();
  		int cols = layout.getColumnCount();
  
  		xml.appendTagOpen("ui:columnlayout");
  		xml.appendOptionalAttribute("hgap", hgapString);
  		xml.appendOptionalAttribute("vgap", vgapString);
  		xml.appendClose();
  
  		// Column Definitions
  		for (int col = 0; col < cols; col++) {
  			xml.appendTagOpen("ui:column");
  			int width = layout.getColumnWidth(col);
  			xml.appendOptionalAttribute("width", width > 0, width);
  
  			switch (layout.getColumnAlignment(col)) {
  				case LEFT:
  					// left is assumed if omitted
  					break;
  
  				case RIGHT:
  					xml.appendAttribute("align", "right");
  					break;
  
  				case CENTER:
  					xml.appendAttribute("align", "center");
  					break;
  
  				default:
  					throw new IllegalArgumentException("Invalid alignment: " + layout.
  							getColumnAlignment(col));
  			}
  
  			xml.appendEnd();
  		}
  
  		for (int i = 0; i < childCount; i++) {
  			xml.appendTag("ui:cell");
  			WComponent child = panel.getChildAt(i);
  			child.paint(renderContext);
  			xml.appendEndTag("ui:cell");
  		}
  
  		xml.appendEndTag("ui:columnlayout");
  	}
docs: Paints the given WPanel's children.
  
  @param component the container to paint.
  @param renderContext the RenderContext to paint to.