Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2010, Red Hat, Inc. and individual contributors
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This 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 software 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 software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.richfaces.renderkit;
 
 import static com.google.common.base.Strings.isNullOrEmpty;
 import static org.richfaces.renderkit.TreeRendererBase.getToggleTypeOrDefault;
 
 import java.util.Map;
 
 import  javax.faces.context.FacesContext;
 
 import  org.ajax4jsf.javascript.JSFunction;
 import  org.ajax4jsf.javascript.JSReference;
 import  org.ajax4jsf.javascript.ScriptStringBase;
 import  org.ajax4jsf.javascript.ScriptUtils;

Author(s):
Nick Belaevski
 
 public final class TreeRenderingContext {
     private static final String ATTRIBUTE_NAME = TreeRenderingContext.class.getName() + ":ATTRIBUTE_NAME";
     private static final ComponentAttribute ONTOGGLE_ATTRIBUTE = new ComponentAttribute("ontoggle").setEventNames("toggle");
     private static final ComponentAttribute ONNODETOGGLE_ATTRIBUTE = new ComponentAttribute("onnodetoggle")
         .setEventNames("nodetoggle");
     private static final ComponentAttribute ONBEFORETOGGLE_ATTRIBUTE = new ComponentAttribute("onbeforetoggle")
         .setEventNames("beforetoggle");
     private static final ComponentAttribute ONBEFORENODETOGGLE_ATTRIBUTE = new ComponentAttribute("onbeforenodetoggle")
         .setEventNames("beforenodetoggle");
 
     public static final class Handlers extends ScriptStringBase {
         private String toggleHandler;
         private String nodeToggleHandler;
         private String beforeToggleHandler;
         private String beforeNodeToggleHandler;
 
         protected Object chain(String firstHandlerString secondHandler) {
             if (isNullOrEmpty(firstHandler) && isNullOrEmpty(secondHandler)) {
                 return null;
             }
 
             if (isNullOrEmpty(firstHandler)) {
                 return secondHandler;
             }
 
             if (isNullOrEmpty(secondHandler)) {
                 return firstHandler;
             }
 
             return new JSFunction("return jsf.util.chain", JSReference.THIS, JSReference.EVENT, firstHandlersecondHandler)
                 .toScript();
         }
 
         public void setToggleHandler(String toggleHandler) {
             this. = toggleHandler;
         }
 
         public String getToggleHandler() {
             return ;
         }
 
         public void setNodeToggleHandler(String nodeToggleHandler) {
             this. = nodeToggleHandler;
         }
 
         public String getNodeToggleHandler() {
             return ;
         }
 
         public void setBeforeToggleHandler(String beforeToggleHandler) {
             this. = beforeToggleHandler;
         }
 
         public String getBeforeToggleHandler() {
             return ;
        }
        public void setBeforeNodeToggleHandler(String beforeNodeToggleHandler) {
            this. = beforeNodeToggleHandler;
        }
        public String getBeforeNodeToggleHandler() {
            return ;
        }
        public void appendScript(Appendable targetthrows IOException {
            Object chainedToggleHandler = chain();
            Object chainedBeforeToggleHandler = chain();
            if (chainedToggleHandler != null || chainedBeforeToggleHandler != null) {
                Map<StringObjectmap = new HashMap<StringObject>(2);
                if (chainedToggleHandler != null) {
                    map.put("th"chainedToggleHandler);
                }
                if (chainedBeforeToggleHandler != null) {
                    map.put("bth"chainedBeforeToggleHandler);
                }
                ScriptUtils.appendScript(targetmap);
            } else {
                ScriptUtils.appendScript(targetnull);
            }
        }
    }
    private FacesContext context;
    private AbstractTree tree;
    private String baseClientId;
    private Map<StringHandlershandlersMap = new HashMap<StringHandlers>();
    private Handlers handlers;
    private TreeRenderingContext(FacesContext contextAbstractTree tree) {
        super();
        this. = context;
        this. = tree;
        this. = tree.getClientId(context);
    }
    public static TreeRenderingContext create(FacesContext contextAbstractTree tree) {
        TreeRenderingContext renderingContext = new TreeRenderingContext(contexttree);
        context.getAttributes().put(renderingContext);
        return renderingContext;
    }
    public static TreeRenderingContext get(FacesContext context) {
        return (TreeRenderingContextcontext.getAttributes().get();
    }
    public static void delete(FacesContext context) {
        context.getAttributes().remove();
    }
    private Handlers getOrCreateHandlers(String relativeClientId) {
        if ( == null) {
             = new Handlers();
            .put(relativeClientId);
        }
        return ;
    }
    public void addHandlers(AbstractTreeNode treeNode) {
         = null;
        String clientId = treeNode.getClientId();
        String relativeClientId = clientId.substring(.length());
        if (getToggleTypeOrDefault() != .) {
            String toggleHandler = (String) RenderKitUtils.getAttributeAndBehaviorsValue(treeNode);
            if (!isNullOrEmpty(toggleHandler)) {
                getOrCreateHandlers(relativeClientId).setToggleHandler(toggleHandler);
            }
            String beforeToggleHandler = (String) RenderKitUtils.getAttributeAndBehaviorsValue(treeNode,
                );
            if (!isNullOrEmpty(beforeToggleHandler)) {
                getOrCreateHandlers(relativeClientId).setBeforeToggleHandler(beforeToggleHandler);
            }
            String nodeToggleHandler = (String) RenderKitUtils.getAttributeAndBehaviorsValue(,
                );
            if (!isNullOrEmpty(nodeToggleHandler)) {
                getOrCreateHandlers(relativeClientId).setNodeToggleHandler(nodeToggleHandler);
            }
            String beforeNodeToggleHandler = (String) RenderKitUtils.getAttributeAndBehaviorsValue(,
                );
            if (!isNullOrEmpty(beforeNodeToggleHandler)) {
                getOrCreateHandlers(relativeClientId).setBeforeNodeToggleHandler(beforeNodeToggleHandler);
            }
        }
    }
    public Object getHandlers() {
        return ;
    }
New to GrepCode? Check out our FAQ X