package various.uicomponents;

import java.io.IOException;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.render.Renderer;

/**
 * Kod klasy renderera który renderuje komponent ComboFieldset w taki sposób,
 * aby później na stronie wynikowej można było go zwijać
 * i rozwijać przy użyciu skryptów JS.
 *
 */
public class ComboFieldsetJSRenderer extends Renderer {

	
	public void encodeBegin(FacesContext context, UIComponent _component)
			throws IOException {
		ComboFieldset component = (ComboFieldset) _component;
		if (!component.isRendered()) {
			return;
		}
		String clientId = component.getClientId(context);
		ResponseWriter writer = context.getResponseWriter();
		writer.startElement("fieldset", component);
		// poniżej kod odpowiedzialny za komunikację ze skryptem JS
		if (component.isRolled())
			writer.writeAttribute("class", "collapsible", null);
		// rozwinięty
		else
			writer.writeAttribute("class", "startClosed", null);
		// zwinięty
		writer.writeAttribute("id", clientId, null);
		writer.startElement("legend", component);
		if (component.getLegend() != null)
			writer.write(component.getLegend());
		writer.endElement("legend");
	}

	
	
	
	@Override
	public void decode(FacesContext context, UIComponent component) {
		super.decode(context, component);
	}




	@Override
	public void encodeChildren(FacesContext arg0, UIComponent arg1)
			throws IOException {
		super.encodeChildren(arg0, arg1);
	}

	@Override
	public void encodeEnd(FacesContext context, UIComponent component)
			throws IOException {
		ResponseWriter writer = context.getResponseWriter();
		writer.endElement("fieldset");
	}

	@Override
	public boolean getRendersChildren() {
		return super.getRendersChildren();
	}

}
