/* * Licensed Materials - Property of Perforce Software, Inc. * © Copyright Perforce Software, Inc. 2014, 2021 * © Copyright IBM Corp. 2009, 2014 * © Copyright ILOG 1996, 2009 * All Rights Reserved. * * Note to U.S. Government Users Restricted Rights: * The Software and Documentation were developed at private expense and * are "Commercial Items" as that term is defined at 48 CFR 2.101, * consisting of "Commercial Computer Software" and * "Commercial Computer Software Documentation", as such terms are * used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4, * as applicable. */ package demo.editing.faces; import java.beans.Beans; import java.io.IOException; import java.io.Writer; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import ilog.views.faces.component.IlvViewHelper; import ilog.views.faces.dhtml.renderkit.IlvDHTMLDecoder; import ilog.views.faces.dhtml.renderkit.IlvDHTMLRenderer; import ilog.views.faces.dhtml.renderkit.IlvDHTMLResponseWriter; import ilog.views.faces.dhtml.renderkit.IlvDHTMLUtil; import ilog.views.faces.dhtml.renderkit.IlvDependencyManager; import ilog.views.faces.dhtml.renderkit.IlvScriptDescriptor; import ilog.views.faces.dhtml.renderkit.IlvScriptManager; import ilog.views.util.IlvLocaleUtil; /** * The editable property sheet renderer. This renderer renders an HTML place * holder, the import the needed JavaScript file and the declaration of the * JavaScript instance that will dynamically generate the property sheet on the * client when an object is selected by the selection manager. */ public class PropertySheetRenderer extends IlvDHTMLRenderer { /** * Returns the type of this renderer. * * @return The type of this renderer. */ public static String getRendererType() { return "ilog.faces.PropertySheet"; } /** * Script files that must be included in the response before the rendering * JavaScript code can be generated by this renderer. */ public final static IlvScriptDescriptor scriptDescriptor = new IlvScriptDescriptor("ViewHelper", IlvDHTMLRenderer.scriptDescriptor) { Override public void addScriptsToLoad(IlvScriptManager scriptManager, Writer writer) { scriptManager.addLocaleScript(IlvLocaleUtil.getCurrentLocale(), "/data/GanttPropertySheet-messages.js"); scriptManager.addScript("/data/GanttPropertySheet.js"); } }; /** * Script files that must be included in the response before the rendering * JavaScript code can be generated by this renderer. */ Override public IlvScriptDescriptor getScriptDescriptor() { return scriptDescriptor; } /** * Implementation of the "Apply Values from Request" phase of the JSF life * cycle. Decodes from the request the update data for this component, and * updates the component according to this data. */ Override public void decode(FacesContext context, UIComponent component) { super.decode(context, component); IlvDHTMLDecoder decoder = new IlvDHTMLDecoder(getParameterMap(context, component), component); decoder.decodeDependencyProperty(VIEW_ID); } /** * {@inheritDoc} */ Override protected void resolveDependencies(UIComponent component, IlvDependencyManager dependencyManager) { IlvViewHelper vh = (IlvViewHelper) component; resolveDependency(component, VIEW, vh.getViewId(), dependencyManager); resolveVBDependency(component, VIEW, VIEW_ID, dependencyManager); } /** * {@inheritDoc} */ Override protected void emitJSSetProperties(FacesContext ctx, UIComponent component) throws IOException { super.emitJSSetProperties(ctx, component); IlvDHTMLResponseWriter writer = new IlvDHTMLResponseWriter(ctx, component); writer.writeJSDependencyProperty(VIEW); writer.writeJSStringProperty("component"); } /** * {@inheritDoc} */ Override protected void emitJSCreation(FacesContext facesContext, UIComponent component) throws IOException { IlvDHTMLResponseWriter writer = new IlvDHTMLResponseWriter(facesContext, component); String id = IlvDHTMLUtil.getJSRef(component); String tableId = id + "_table"; String[] params = { tableId }; writer.writeJSProxyCreation("PropertySheet", params); } /** * {@inheritDoc} */ Override public void encodeEnd(FacesContext context, UIComponent component) throws IOException { super.encodeEnd(context, component); IlvDHTMLResponseWriter writer = new IlvDHTMLResponseWriter(context, component); super.encodeEnd(context, component); if (!Beans.isDesignTime()) { emitScriptsLoad(writer.getSupport()); String id = IlvDHTMLUtil.getJSRef(component); String tableId = id + "_table"; ResponseWriter out = context.getResponseWriter(); out.startElement("span", component); out.writeAttribute("id", tableId, null); out.endElement("span"); writer.startScriptSection(); emitJSCreation(context, component); emitJSSetProperties(context, component); emitOnLoadHandler(context, component); emitResolvedDependencies(writer.getSupport(), component); writer.endScriptSection(); } } }