All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.larmic.butterfaces.component.partrenderer.InnerComponentWrapperPartRenderer Maven / Gradle / Ivy

package de.larmic.butterfaces.component.partrenderer;

import java.io.IOException;

import javax.faces.component.UIInput;
import javax.faces.context.ResponseWriter;

import de.larmic.butterfaces.component.html.HtmlInputComponent;
import de.larmic.butterfaces.component.html.InputComponentFacet;

/**
 * Created by larmic on 27.08.14.
 */
public class InnerComponentWrapperPartRenderer {

    public static final String INPUT_GROUP_ADDON_LEFT = "input-group-addon-left";
    public static final String INPUT_GROUP_ADDON_RIGHT = "input-group-addon-right";
    public static final String INPUT_GROUP_BTN_LEFT = "input-group-btn-left";
    public static final String INPUT_GROUP_BTN_RIGHT = "input-group-btn-right";

    public void renderInnerWrapperBegin(final HtmlInputComponent component,
                                        final ResponseWriter writer) throws IOException {
        this.renderInnerWrapperBegin(component, writer, component.isReadonly());
    }

    public void renderInnerWrapperBegin(final HtmlInputComponent component,
                                        final ResponseWriter writer,
                                        final boolean readonly) throws IOException {
        final UIInput uiComponent = (UIInput) component;

        if (!readonly) {
            writer.startElement("div", uiComponent);
            writer.writeAttribute("class", this.createComponentStyleClass(component), null);
        }
    }

    private String createComponentStyleClass(final HtmlInputComponent component) {
        final StringBuilder componentStyleClass = new StringBuilder();
        componentStyleClass.append(this.createDefaultStyleClass(component));

        if (component.getSupportedFacets().contains(InputComponentFacet.BOOTSTRAP_INPUT_GROUP_ADDON)
                && (component.getFacet(INPUT_GROUP_ADDON_LEFT) != null || component.getFacet(INPUT_GROUP_ADDON_RIGHT) != null)
                || component.getSupportedFacets().contains(InputComponentFacet.BOOTSTRAP_INPUT_GROUP_BTN)
                && (component.getFacet(INPUT_GROUP_BTN_LEFT) != null || component.getFacet(INPUT_GROUP_BTN_RIGHT) != null)
                || component.getSupportedFacets().contains(InputComponentFacet.CALENDAR)) {
            componentStyleClass.append(" input-group");
        }

        return componentStyleClass.toString();
    }

    private String createDefaultStyleClass(HtmlInputComponent component) {
        final StringBuilder defaultStyleClass = new StringBuilder();
        if (component.isHideLabel()) {
            defaultStyleClass.append("butter-component-value-hiddenLabel");
        }else {
           defaultStyleClass.append("butter-component-value");
        }
        return defaultStyleClass.toString();
    }

    public void renderInnerWrapperEnd(final HtmlInputComponent component,
                                      final ResponseWriter writer) throws IOException {
        this.renderInnerWrapperEnd(component, writer, component.isReadonly());
    }

    public void renderInnerWrapperEnd(final HtmlInputComponent component,
                                      final ResponseWriter writer,
                                      final boolean readonly) throws IOException {
        if (!readonly) {
            final UIInput uiComponent = (UIInput) component;

            writer.endElement("div");

            writer.startElement("script", uiComponent);
            writer.writeText("addLabelAttributeToInnerComponent('" + component.getClientId() + "', '"
                    + component.getLabel() + "');", null);
            writer.endElement("script");

        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy