Package org.richfaces.component

Source Code of org.richfaces.component.UISimpleTogglePanel

/**
* License Agreement.
*
*  JBoss RichFaces - Ajax4jsf Component Library
*
* Copyright (C) 2007  Exadel, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 as published by the Free Software Foundation.
*
* 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 Street, Fifth Floor, Boston, MA 02110-1301  USA
*/

package org.richfaces.component;

import java.util.Iterator;

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

import org.ajax4jsf.component.AjaxActionComponent;
import org.ajax4jsf.component.AjaxComponent;
import org.ajax4jsf.event.AjaxSource;

import com.sun.org.apache.xpath.internal.operations.Bool;

/**
* JSF component class
*/
public abstract class UISimpleTogglePanel extends AjaxActionComponent implements AjaxComponent, AjaxSource, ActionSource
//public abstract class UISimpleTogglePanel extends  UIInput implements AjaxComponent, AjaxSource, ActionSource
{

  public static final String COMPONENT_FAMILY = "javax.faces.Command";
    public static final String SERVER_SWITCH_TYPE = "server";
    public static final String CLIENT_SWITCH_TYPE = "client";
    public static final String AJAX_SWITCH_TYPE = "ajax";
    public static final boolean COLLAPSED = false;
    public static final boolean EXPANDED = true;
   
    private transient Boolean openedSet = null;

    private transient Boolean wasOpened = null;

    protected boolean isWasOpened() {
      if (wasOpened == null) {
        if (CLIENT_SWITCH_TYPE.equals(getSwitchType())) {
          wasOpened = Boolean.TRUE;
        } else {
            wasOpened = isOpened();
        }
      }
     
      return wasOpened;
    }
   
    public abstract void setSwitchType(String switchType);

    public abstract String getSwitchType();

    public void setOpened(boolean opened) {
      setValue(new Boolean(opened).toString());
    }

    public boolean isOpened() {
      Object value = getValue();
      if (value instanceof Boolean) {
        return ((Boolean)value).booleanValue();
      } else if (value instanceof String) {
      String s = (String) value;
      return Boolean.parseBoolean(s);
    }
      return true;
    }

    public boolean getRendersChildren() {
        return true;
    }

    /**
     * @throws NullPointerException {@inheritDoc}
     */
    public void processDecodes(FacesContext context) {

        if (context == null) {
            throw new NullPointerException();
        }

        // Skip processing if our rendered flag is false
        if (!isRendered()) {
            return;
        }

        if (isWasOpened()) {
            // Process all facets and children of this component
            Iterator<UIComponent> kids = getFacetsAndChildren();
            while (kids.hasNext()) {
                UIComponent kid = kids.next();
                kid.processDecodes(context);
            }
        }
       
        // Process this component itself
        try {
            decode(context);
        } catch (RuntimeException e) {
            context.renderResponse();
            throw e;
        }

    }


    /**
     * @throws NullPointerException {@inheritDoc}
     */
    public void processValidators(FacesContext context) {

        if (context == null) {
            throw new NullPointerException();
        }

        // Skip processing if our rendered flag is false
        if (!isRendered()) {
            return;
        }

        if (isWasOpened()) {
          // Process all the facets and children of this component
          Iterator<UIComponent> kids = getFacetsAndChildren();
          while (kids.hasNext()) {
              UIComponent kid = kids.next();
              kid.processValidators(context);
          }
        }
    }


    /**
     * @throws NullPointerException {@inheritDoc}
     */
    public void processUpdates(FacesContext context) {

        if (context == null) {
            throw new NullPointerException();
        }

        // Skip processing if our rendered flag is false
        if (!isRendered()) {
            return;
        }
       
        updateModel();

        if (isWasOpened()) {
          // Process all facets and children of this component
          Iterator<UIComponent> kids = getFacetsAndChildren();
          while (kids.hasNext()) {
              UIComponent kid = kids.next();
              kid.processUpdates(context);
          }
        }
    }
   
    private void updateModel () {
      if (openedSet != null) {
        setOpened(openedSet);
      }
    }

  /**
   * @return the openedSet
   */
  public boolean isOpenedSet() {
    return openedSet;
  }

  /**
   * @param openedSet the openedSet to set
   */
  public void setOpenedSet(boolean openedSet) {
    this.openedSet = openedSet;
  }
   
/*
* public void setValueBinding(String arg0, ValueBinding arg1) { if
* ("opened".equals(arg0)) super.setValueBinding("value", arg1);
* super.setValueBinding(arg0, arg1); }
*
* public ValueBinding getValueBinding(String arg0) { if ("opened".equals(arg0))
* return super.getValueBinding("value"); return super.getValueBinding(arg0); }
*/   
    //public void broadcast(FacesEvent facesEvent) throws AbortProcessingException {
    //   super.broadcast(facesEvent);
    //    FacesContext facesContext = FacesContext.getCurrentInstance();
    //    if (AjaxRendererUtils.isAjaxRequest(facesContext) && this.getSwitchType().equals(AJAX_SWITCH_TYPE)) {
    //        AjaxRendererUtils.addRegionByName(facesContext,
    //                this,
    //                this.getId());
    //    }
    //}
}
TOP

Related Classes of org.richfaces.component.UISimpleTogglePanel

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.