Package org.xulfaces.renderer

Source Code of org.xulfaces.renderer.CommandRenderer

/*
*   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;

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

import javax.faces.component.ActionSource;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.event.ActionEvent;

import org.xulfaces.annotation.faces.RENDERER;

/**
*
* @author kito31
* @version $Id: CommandRenderer.java,v 1.9 2007/06/10 19:45:35 kito31 Exp $
*/
@RENDERER(kit="XUL_RENDERKIT",family="xul.component.family",type="xul.renderer.Command")
public class CommandRenderer extends XULRenderer {
 
  @Override
  public void decode(FacesContext facesContext, UIComponent component) {

    String id = (String) isSubmitted(facesContext, "action");
    if (component.getClientId(facesContext).equals(id)) {
      component.queueEvent(new ActionEvent(component));
    }
  }

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

    ResponseWriter responseWriter = facesContext.getResponseWriter();
    responseWriter.startElement("command",component);
    responseWriter.writeAttribute("id",component.getClientId(facesContext), "id");
    renderAttributes(facesContext,component,(List) component.getAttributes().get("annotatedAttributes"));

    // Render oncommand attribute by calling triggerAction
    if(component.getAttributes().get("oncommand") == null){
      ActionSource actionSource = (ActionSource) component;
      if(actionSource.getAction() != null){
        StringBuffer script = new StringBuffer();
        if(component.getAttributes().get("asynchronous") != null){
          Boolean asynchronous = (Boolean) component.getAttributes().get("asynchronous");
          if(asynchronous.booleanValue()){
            script.append("triggerAsynchronousAction('");
          }
          else {
            script.append("triggerAction('");
          }
        }
        else {
          script.append("triggerAsynchronousAction('")
        }       
        script.append(component.getClientId(facesContext));
        script.append("')");
        responseWriter.writeAttribute("oncommand",script.toString(), "oncommand")
      }     
    }
    responseWriter.endElement("command");
  }

}
TOP

Related Classes of org.xulfaces.renderer.CommandRenderer

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.