Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.primefaces.component.inplace.InplaceRenderer Maven / Gradle / Ivy
/*
* Copyright 2009-2014 PrimeTek.
*
* 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 org.primefaces.component.inplace;
import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import org.primefaces.renderkit.CoreRenderer;
import org.primefaces.util.ComponentUtils;
import org.primefaces.util.HTML;
import org.primefaces.util.WidgetBuilder;
public class InplaceRenderer extends CoreRenderer {
@Override
public void decode(FacesContext context, UIComponent component) {
decodeBehaviors(context, component);
}
@Override
public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
Inplace inplace = (Inplace) component;
encodeMarkup(context, inplace);
encodeScript(context, inplace);
}
protected void encodeMarkup(FacesContext context, Inplace inplace) throws IOException {
ResponseWriter writer = context.getResponseWriter();
String clientId = inplace.getClientId(context);
String widgetVar = inplace.resolveWidgetVar();
String userStyleClass = inplace.getStyleClass();
String userStyle = inplace.getStyle();
String styleClass = userStyleClass == null ? Inplace.CONTAINER_CLASS : Inplace.CONTAINER_CLASS + " " + userStyleClass;
boolean disabled = inplace.isDisabled();
String displayClass = disabled ? Inplace.DISABLED_DISPLAY_CLASS : Inplace.DISPLAY_CLASS;
boolean validationFailed = context.isValidationFailed() && !inplace.isValid();
String displayStyle = validationFailed ? "none" : "inline";
String contentStyle = validationFailed ? "inline" : "none";
UIComponent outputFacet = inplace.getFacet("output");
UIComponent inputFacet = inplace.getFacet("input");
//container
writer.startElement("span", inplace);
writer.writeAttribute("id", clientId, "id");
writer.writeAttribute("class", styleClass, "id");
if(userStyle != null) {
writer.writeAttribute("style", userStyle, "id");
}
writer.writeAttribute(HTML.WIDGET_VAR, widgetVar, null);
//display
writer.startElement("span", null);
writer.writeAttribute("id", clientId + "_display", "id");
writer.writeAttribute("class", displayClass, null);
writer.writeAttribute("style", "display:" + displayStyle, null);
if(outputFacet != null)
outputFacet.encodeAll(context);
else
writer.writeText(getLabelToRender(context, inplace), null);
writer.endElement("span");
//content
if(!inplace.isDisabled()) {
writer.startElement("span", null);
writer.writeAttribute("id", clientId + "_content", "id");
writer.writeAttribute("class", Inplace.CONTENT_CLASS, null);
writer.writeAttribute("style", "display:" + contentStyle, null);
if(inputFacet != null)
inputFacet.encodeAll(context);
else
renderChildren(context, inplace);
if(inplace.isEditor())
encodeEditor(context, inplace);
writer.endElement("span");
}
writer.endElement("span");
}
protected String getLabelToRender(FacesContext context, Inplace inplace) {
String label = inplace.getLabel();
String emptyLabel = inplace.getEmptyLabel();
if(label != null) {
return label;
}
else {
String value = ComponentUtils.getValueToRender(context, inplace.getChildren().get(0));
if(value == null || isValueBlank(value)) {
if(emptyLabel != null)
return emptyLabel;
else
return "";
}
else {
return value;
}
}
}
protected void encodeScript(FacesContext context, Inplace inplace) throws IOException {
ResponseWriter writer = context.getResponseWriter();
String clientId = inplace.getClientId(context);
WidgetBuilder wb = getWidgetBuilder(context);
wb.init("Inplace", inplace.resolveWidgetVar(), clientId)
.attr("effect", inplace.getEffect())
.attr("effectSpeed", inplace.getEffectSpeed())
.attr("event", inplace.getEvent())
.attr("toggleable", inplace.isToggleable(), false)
.attr("disabled", inplace.isDisabled(), false)
.attr("editor", inplace.isEditor(), false);
encodeClientBehaviors(context, inplace);
wb.finish();
}
protected void encodeEditor(FacesContext context, Inplace inplace) throws IOException {
ResponseWriter writer = context.getResponseWriter();
writer.startElement("span", null);
writer.writeAttribute("id", inplace.getClientId(context) + "_editor", null);
writer.writeAttribute("class", Inplace.EDITOR_CLASS, null);
encodeButton(context, inplace.getSaveLabel(), Inplace.SAVE_BUTTON_CLASS, "ui-icon-check");
encodeButton(context, inplace.getCancelLabel(), Inplace.CANCEL_BUTTON_CLASS, "ui-icon-close");
writer.endElement("span");
}
protected void encodeButton(FacesContext context, String title, String styleClass, String icon) throws IOException {
ResponseWriter writer = context.getResponseWriter();
writer.startElement("button", null);
writer.writeAttribute("type", "button", null);
writer.writeAttribute("class", HTML.BUTTON_ICON_ONLY_BUTTON_CLASS + " " + styleClass, null);
writer.writeAttribute("title", title, null);
//icon
writer.startElement("span", null);
writer.writeAttribute("class", HTML.BUTTON_LEFT_ICON_CLASS + " " + icon, null);
writer.endElement("span");
//text
writer.startElement("span", null);
writer.writeAttribute("class", HTML.BUTTON_TEXT_CLASS, null);
writer.write("ui-button");
writer.endElement("span");
writer.endElement("button");
}
@Override
public void encodeChildren(FacesContext context, UIComponent component) throws IOException {
//Do Nothing
}
@Override
public boolean getRendersChildren() {
return true;
}
}