| /* |
| * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved. |
| * |
| * Redistribution and use in source and binary forms, with or |
| * without modification, are permitted provided that the following |
| * conditions are met: |
| * |
| * - Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * - Redistribution in binary form must reproduce the above |
| * copyright notice, this list of conditions and the following |
| * disclaimer in the documentation and/or other materials |
| * provided with the distribution. |
| * |
| * Neither the name of Sun Microsystems, Inc. or the names of |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * This software is provided "AS IS," without a warranty of any |
| * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND |
| * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, |
| * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY |
| * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY |
| * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR |
| * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR |
| * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE |
| * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, |
| * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER |
| * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF |
| * THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS |
| * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. |
| * |
| * You acknowledge that this software is not designed, licensed or |
| * intended for use in the design, construction, operation or |
| * maintenance of any nuclear facility. |
| */ |
| |
| package org.apache.cocoon.faces.samples.components.taglib; |
| |
| |
| import org.apache.cocoon.faces.FacesUtils; |
| import org.apache.cocoon.faces.taglib.UIComponentTag; |
| import org.apache.cocoon.faces.samples.components.components.MapComponent; |
| import org.apache.cocoon.faces.samples.components.renderkit.Util; |
| import org.apache.commons.lang.BooleanUtils; |
| |
| import javax.faces.component.UIComponent; |
| import javax.faces.context.FacesContext; |
| import javax.faces.el.MethodBinding; |
| import javax.faces.el.ValueBinding; |
| import javax.faces.event.ActionEvent; |
| |
| |
| /** |
| * <p>{@link UIComponentTag} for an image map.</p> |
| */ |
| |
| public class MapTag extends UIComponentTag { |
| |
| |
| private String current; |
| |
| |
| public void setCurrent(String current) { |
| this.current = current; |
| } |
| |
| |
| private String actionListener; |
| |
| |
| public void setActionListener(String actionListener) { |
| this.actionListener = actionListener; |
| } |
| |
| |
| private String action; |
| |
| |
| public void setAction(String action) { |
| this.action = action; |
| } |
| |
| |
| private String immediate; |
| |
| |
| public void setImmediate(String immediate) { |
| this.immediate = immediate; |
| } |
| |
| |
| private String styleClass; |
| |
| |
| public void setStyleClass(String styleClass) { |
| this.styleClass = styleClass; |
| } |
| |
| |
| public String getComponentType() { |
| return ("DemoMap"); |
| } |
| |
| |
| public String getRendererType() { |
| return ("DemoMap"); |
| } |
| |
| |
| public void recycle() { |
| super.recycle(); |
| current = null; |
| styleClass = null; |
| actionListener = null; |
| action = null; |
| immediate = null; |
| styleClass = null; |
| } |
| |
| |
| protected void setProperties(UIComponent component) { |
| super.setProperties(component); |
| MapComponent map = (MapComponent) component; |
| // if (current != null) { |
| // map.setCurrent(current); |
| // } |
| if (styleClass != null) { |
| if (FacesUtils.isExpression(styleClass)) { |
| ValueBinding vb = FacesContext.getCurrentInstance() |
| .getApplication(). |
| createValueBinding(styleClass); |
| map.setValueBinding("styleClass", vb); |
| } else { |
| map.getAttributes().put("styleClass", styleClass); |
| } |
| } |
| if (actionListener != null) { |
| if (FacesUtils.isExpression(actionListener)) { |
| Class args[] = {ActionEvent.class}; |
| MethodBinding mb = FacesContext.getCurrentInstance() |
| .getApplication() |
| .createMethodBinding(actionListener, args); |
| map.setActionListener(mb); |
| } else { |
| Object params [] = {actionListener}; |
| throw new javax.faces.FacesException(); |
| } |
| } |
| |
| if (action != null) { |
| if (FacesUtils.isExpression(action)) { |
| MethodBinding vb = FacesContext.getCurrentInstance() |
| .getApplication() |
| .createMethodBinding(action, null); |
| map.setAction(vb); |
| } else { |
| map.setAction(Util.createConstantMethodBinding(action)); |
| } |
| } |
| if (immediate != null) { |
| if (FacesUtils.isExpression(immediate)) { |
| ValueBinding vb = FacesContext.getCurrentInstance() |
| .getApplication(). |
| createValueBinding(immediate); |
| map.setValueBinding("immediate", vb); |
| } else { |
| map.setImmediate(BooleanUtils.toBoolean(immediate)); |
| } |
| } |
| |
| } |
| |
| |
| } |