Package org.xulfaces.renderer.tree

Source Code of org.xulfaces.renderer.tree.TreeCellRenderer

/*
*   xulfaces : bring XUL power to Java
*  
*  Copyright (C) 2005  Olivier SCHMITT
*  This library is free software; you can redistribute it and/or
*  modify it under the terms of the GNU Lesser General Public
*  License as published by the Free Software Foundation; either
*  version 2.1 of the License, or (at your option) any later version.
*
*  This library is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*  Lesser General Public License for more details.
*
*  You should have received a copy of the GNU Lesser General Public
*  License along with this library; if not, write to the Free Software
*  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

package org.xulfaces.renderer.tree;

import java.io.IOException;
import java.util.List;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;

import org.xulfaces.IconProvider;
import org.xulfaces.LabelProvider;
import org.xulfaces.annotation.faces.RENDERER;
import org.xulfaces.component.tree.TreeCellComponent;
import org.xulfaces.component.tree.TreeRowComponent;
import org.xulfaces.renderer.XULRenderer;

/**
* <p>Defines a renderer for treecell component.</p>
*
* @author kito31
* @version $Id: TreeCellRenderer.java,v 1.18 2007/04/09 13:25:49 kito31 Exp $
*/
@RENDERER(kit = "XUL_RENDERKIT", family = "xul.component.family", type = "xul.renderer.TreeCell")
public class TreeCellRenderer extends XULRenderer {

  public void encodeEnd(FacesContext facesContext, UIComponent component) throws IOException {

    ResponseWriter responseWriter = facesContext.getResponseWriter();
    TreeCellComponent treeCellComponent = (TreeCellComponent) component;

    IconProvider iconProvider = treeCellComponent.getIconProvider();
    LabelProvider labelProvider = treeCellComponent.getLabelProvider();

    responseWriter.startElement("treecell", component);
   
    treeCellComponent.setNodeId(computeId(treeCellComponent));
    responseWriter.writeAttribute("id", treeCellComponent.getNodeId(), "id");

    String var = treeCellComponent.getVar();
    Object userObject = facesContext.getExternalContext().getSessionMap().get(var);

    if ( (treeCellComponent.getAttributes().get("label") != null|| (labelProvider != null)){
      // Deal with label
      String label = null;
      if (labelProvider != null) {
        label = labelProvider.getText(userObject, TreeRowComponent.CLOSED);
        treeCellComponent.setLabel(label);
      } else {
        Object value = convertAsString(facesContext, component, getProperty(facesContext, "label", component));
        if (value != null) {
          label = value.toString();
        }
      }

      if (label != null) {
        responseWriter.writeAttribute("label", label, "label");
      }
    }

    if ( (treeCellComponent.getAttributes().get("src") != null) || (iconProvider != null)){
      // Deal with src
      String src = null;
      if (iconProvider != null) {
        src = iconProvider.getIcon(userObject, TreeRowComponent.CLOSED);
      } else {
        src = (String) convertAsString(facesContext, component, getProperty(facesContext, "src", component));
      }
      if (src != null) {
        if (!src.equals("")) {
          responseWriter.writeAttribute("src", src, "src");
        }
      }
    }
    renderAttributes(facesContext, component, (List) component
        .getAttributes().get("annotatedAttributes"));
    responseWriter.endElement("treecell");
  }

  private String computeId(TreeCellComponent treeCellComponent){
    TreeRowComponent treeRowComponent = (TreeRowComponent) treeCellComponent.getParent();
    StringBuffer stringBuffer = new StringBuffer(treeRowComponent.getNodeId());
    stringBuffer.append(":tc:");
    stringBuffer.append(treeCellComponent.getId());
    return stringBuffer.toString();
  }
}
TOP

Related Classes of org.xulfaces.renderer.tree.TreeCellRenderer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.