/**
   * This methods generates the HTML code of the current b:buttonToolbar. <code>encodeBegin</code>
   * generates the start of the component. After the, the JSF framework calls <code>encodeChildren()
   * </code> to generate the HTML code between the beginning and the end of the component. For
   * instance, in the case of a panel component the content of the panel is generated by <code>
   * encodeChildren()</code>. After that, <code>encodeEnd()</code> is called to generate the rest of
   * the HTML code.
   *
   * @param context the FacesContext.
   * @param component the current b:buttonToolbar.
   * @throws IOException thrown if something goes wrong when writing the HTML code.
   */
  @Override
  public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
    if (!component.isRendered()) {
      return;
    }
    ButtonToolbar buttonToolbar = (ButtonToolbar) component;
    ResponseWriter rw = context.getResponseWriter();
    String clientId = buttonToolbar.getClientId();

    // put custom code here
    // Simple demo widget that simply renders every attribute value
    rw.startElement("buttonToolbar", buttonToolbar);
    Tooltip.generateTooltip(context, buttonToolbar, rw);

    rw.writeAttribute("binding", buttonToolbar.getBinding(), "binding");
    rw.writeAttribute("id", buttonToolbar.getId(), "id");
    rw.writeAttribute("rendered", String.valueOf(buttonToolbar.isRendered()), "rendered");
    rw.writeAttribute("tooltip", buttonToolbar.getTooltip(), "tooltip");
    rw.writeAttribute("tooltipDelay", buttonToolbar.getTooltipDelay(), "tooltipDelay");
    rw.writeAttribute("tooltipDelayHide", buttonToolbar.getTooltipDelayHide(), "tooltipDelayHide");
    rw.writeAttribute("tooltipDelayShow", buttonToolbar.getTooltipDelayShow(), "tooltipDelayShow");
    rw.writeAttribute("tooltipPosition", buttonToolbar.getTooltipPosition(), "tooltipPosition");
    rw.writeText("Dummy content of b:buttonToolbar", null);
  }