001: /**********************************************************************************
002: * $URL: https://source.sakaiproject.org/svn/osp/tags/sakai_2-4-1/jsf/widgets/src/java/org/theospi/jsf/renderer/SplitSectionRenderer.java $
003: * $Id: SplitSectionRenderer.java 15703 2006-10-05 18:16:51Z chmaurer@iupui.edu $
004: ***********************************************************************************
005: *
006: * Copyright (c) 2005, 2006 The Sakai Foundation.
007: *
008: * Licensed under the Educational Community License, Version 1.0 (the "License");
009: * you may not use this file except in compliance with the License.
010: * You may obtain a copy of the License at
011: *
012: * http://www.opensource.org/licenses/ecl1.php
013: *
014: * Unless required by applicable law or agreed to in writing, software
015: * distributed under the License is distributed on an "AS IS" BASIS,
016: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: * See the License for the specific language governing permissions and
018: * limitations under the License.
019: *
020: **********************************************************************************/package org.theospi.jsf.renderer;
021:
022: import java.io.IOException;
023:
024: import javax.faces.component.UIComponent;
025: import javax.faces.component.UIOutput;
026: import javax.faces.context.FacesContext;
027: import javax.faces.context.ResponseWriter;
028: import javax.faces.render.Renderer;
029:
030: import org.sakaiproject.jsf.util.RendererUtil;
031: import org.theospi.jsf.component.SplitAreaComponent;
032: import org.theospi.jsf.util.OspxTagHelper;
033:
034: public class SplitSectionRenderer extends Renderer {
035: public boolean supportsComponentType(UIComponent component) {
036: return (component instanceof UIOutput);
037: }
038:
039: /**
040: * This renders html for the beginning of the tag.
041: *
042: * @param context
043: * @param component
044: * @throws IOException
045: */
046: public void encodeBegin(FacesContext context, UIComponent component)
047: throws IOException {
048: if (!component.isRendered()) {
049: return;
050: }
051:
052: ResponseWriter writer = context.getResponseWriter();
053:
054: String cssclass = (String) RendererUtil.getAttribute(context,
055: component, "cssclass");
056: String valign = (String) RendererUtil.getAttribute(context,
057: component, "valign");
058: String align = (String) RendererUtil.getAttribute(context,
059: component, "align");
060: String size = (String) RendererUtil.getAttribute(context,
061: component, "size");
062: String id = (String) RendererUtil.getAttribute(context,
063: component, "id");
064:
065: UIComponent parent = component.getParent();
066:
067: if (parent == null || !(parent instanceof SplitAreaComponent)) {
068: return;
069: }
070:
071: String directionStr = (String) RendererUtil.getAttribute(
072: context, parent, "direction");
073:
074: boolean vertical = OspxTagHelper.isVertical(directionStr);
075:
076: if (vertical)
077: writer.write("<tr>");
078: writer.write("<td");
079:
080: RendererUtil.writeAttr(writer, "class", cssclass);
081: RendererUtil.writeAttr(writer, "id", id);
082: RendererUtil.writeAttr(writer, "align", align);
083: RendererUtil.writeAttr(writer, "valign", valign);
084:
085: if (vertical)
086: RendererUtil.writeAttr(writer, "height", size);
087: else
088: RendererUtil.writeAttr(writer, "width", size);
089:
090: writer.write(">");
091:
092: }
093:
094: /**
095: * @param context FacesContext for the request we are processing
096: * @param component UIComponent to be rendered
097: * @exception IOException if an input/output error occurs while rendering
098: * @exception NullPointerException if <code>context</code> or <code>component</code> is null
099: */
100: public void encodeEnd(FacesContext context, UIComponent component)
101: throws IOException {
102: if (!component.isRendered()) {
103: return;
104: }
105:
106: ResponseWriter writer = context.getResponseWriter();
107:
108: String directionStr = (String) RendererUtil.getAttribute(
109: context, component.getParent(), "direction");
110:
111: writer.write("</td>");
112: if (OspxTagHelper.isVertical(directionStr))
113: writer.write("</tr>");
114: }
115: }
|