code: private void paintTableActions(final WTable table, final WebXmlRenderContext renderContext) {
  		XmlStringBuilder xml = renderContext.getWriter();
  		List<WButton> tableActions = table.getActions();
  
  		if (!tableActions.isEmpty()) {
  			boolean hasActions = false;
  
  			for (WButton button : tableActions) {
  				if (!button.isVisible()) {
  					continue;
  				}
  
  				if (!hasActions) {
  					hasActions = true;
  					xml.appendTag("ui:actions");
  				}
  
  				xml.appendTag("ui:action");
  
  				List<WTable.ActionConstraint> constraints = table.getActionConstraints(button);
  
  				if (constraints != null) {
  					for (WTable.ActionConstraint constraint : constraints) {
  						int minRows = constraint.getMinSelectedRowCount();
  						int maxRows = constraint.getMaxSelectedRowCount();
  						String message = constraint.getMessage();
  						String type = constraint.isError() ? "error" : "warning";
  
  						xml.appendTagOpen("ui:condition");
  						xml.appendOptionalAttribute("minSelectedRows", minRows > 0, minRows);
  						xml.appendOptionalAttribute("maxSelectedRows", maxRows > 0, maxRows);
  						xml.appendAttribute("selectedOnOther", this.selectedOnOther);
  						xml.appendAttribute("type", type);
  						xml.appendAttribute("message", I18nUtilities.format(null, message));
  						xml.appendEnd();
  					}
  				}
  
  				button.paint(renderContext);
  
  				xml.appendEndTag("ui:action");
  			}
  
  			if (hasActions) {
  				xml.appendEndTag("ui:actions");
  			}
  		}
  	}
docs: Paints the table actions of the table.
  
  @param table the table to paint the table actions for.
  @param renderContext the RenderContext to paint to.