/** * Copyright 2014-2017 Riccardo Massera (TheCoder4.Eu) and Stephan Rauh (http://www.beyondjava.net). * * This file is part of BootsFaces. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.bootsfaces.component.video; import java.io.IOException; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.render.FacesRenderer; import net.bootsfaces.component.ajax.AJAXRenderer; import net.bootsfaces.render.CoreRenderer; import net.bootsfaces.render.Responsive; import net.bootsfaces.render.Tooltip; /** This class generates the HTML code of <b:video />. */ @FacesRenderer(componentFamily = "net.bootsfaces.component", rendererType = "net.bootsfaces.component.video.Video") public class VideoRenderer extends CoreRenderer { @Override public void decode(FacesContext context, UIComponent component) { Video inputText = (Video) component; decodeBehaviors(context, inputText); String clientId = inputText.getClientId(context); String submittedId = (String) context.getExternalContext().getRequestParameterMap().get("javax.faces.source"); if (clientId.equals(submittedId)) { new AJAXRenderer().decode(context, component, clientId); } else if ((clientId+"_video").equals(submittedId)) { new AJAXRenderer().decode(context, component, clientId+"_video"); } } /** * This methods generates the HTML code of the current b:video. * @param context the FacesContext. * @param component the current b:video. * @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; } Video video = (Video) component; ResponseWriter rw = context.getResponseWriter(); String clientId = video.getClientId(); boolean idHasBeenRendered=false; rw.startElement("div", video); String responsiveStyle = Responsive.getResponsiveStyleClass(video, false); if (null != responsiveStyle && responsiveStyle.trim().length()>0) { rw.writeAttribute("class", responsiveStyle, null); rw.writeAttribute("id", clientId, null); idHasBeenRendered=true; } rw.startElement("video", video); Tooltip.generateTooltip(context, video, rw); rw.writeAttribute("src", video.getSrc(), null); rw.writeAttribute("autoplay", video.isAutoplay(), null); rw.writeAttribute("controls", video.isControls(), null); rw.writeAttribute("loop", video.isLoop(), null); String videoId = clientId; if (idHasBeenRendered) { videoId = clientId + "_video"; } rw.writeAttribute("id", videoId, null); String style = video.getStyle(); if (null != style) { rw.writeAttribute("style", style, null); } String styleClass = video.getStyleClass(); if (null == styleClass) styleClass = ""; else styleClass = " " + styleClass; Tooltip.generateTooltip(context, video, rw); rw.writeAttribute("class", styleClass, "class"); // Render Ajax Capabilities AJAXRenderer.generateBootsFacesAJAXAndJavaScript(FacesContext.getCurrentInstance(), video, rw, false); rw.endElement("video"); if (null != responsiveStyle && responsiveStyle.trim().length()>0) { rw.endElement("div"); } Tooltip.activateTooltips(context, video, videoId); } }