| /* |
| * 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.components; |
| |
| |
| import org.apache.cocoon.faces.samples.components.model.ImageArea; |
| |
| import javax.faces.component.UIOutput; |
| import javax.faces.context.FacesContext; |
| |
| /** |
| * <p>{@link AreaComponent} is a JavaServer Faces component that represents |
| * a particular hotspot in a client-side image map defined by our parent |
| * {@link MapComponent}. The <code>valueRef</code> property (if present) |
| * must point at a JavaBean of type <code>org.apache.cocoon.faces.samples.components.model.ImageArea</code>; |
| * if not present, an <code>ImageArea</code> instance will be synthesized |
| * from the values of the <code>alt</code>, <code>coords</code>, and |
| * <code>shape</code> properties, and assigned to the <code>value</code> |
| * property.</p> |
| */ |
| |
| public class AreaComponent extends UIOutput { |
| |
| |
| // ------------------------------------------------------ Instance Variables |
| |
| |
| private String alt = null; |
| private String coords = null; |
| private String shape = null; |
| private String targetImage = null; |
| |
| |
| |
| // -------------------------------------------------------------- Properties |
| |
| |
| /** |
| * <p>Return the alternate text for our synthesized {@link ImageArea}.</p> |
| */ |
| public String getAlt() { |
| return (this.alt); |
| } |
| |
| |
| /** |
| * <p>Set the alternate text for our synthesized {@link ImageArea}.</p> |
| * |
| * @param alt The new alternate text |
| */ |
| public void setAlt(String alt) { |
| this.alt = alt; |
| } |
| |
| |
| /** |
| * <p>Return the hotspot coordinates for our synthesized {@link ImageArea}. |
| * </p> |
| */ |
| public String getCoords() { |
| return (this.coords); |
| } |
| |
| |
| /** |
| * <p>Set the hotspot coordinates for our synthesized {@link ImageArea}.</p> |
| * |
| * @param coords The new coordinates |
| */ |
| public void setCoords(String coords) { |
| this.coords = coords; |
| } |
| |
| |
| /** |
| * <p>Return the shape for our synthesized {@link ImageArea}.</p> |
| */ |
| public String getShape() { |
| return (this.shape); |
| } |
| |
| |
| /** |
| * <p>Set the shape for our synthesized {@link ImageArea}.</p> |
| * |
| * @param shape The new shape (default, rect, circle, poly) |
| */ |
| public void setShape(String shape) { |
| this.shape = shape; |
| } |
| |
| |
| /** |
| * <p>Set the image that is the target of this <code>AreaComponent</code>.</p> |
| * |
| * @return the target image of this area component. |
| */ |
| public String getTargetImage() { |
| return targetImage; |
| } |
| |
| |
| /** |
| * <p>Set the image that is the target of this <code>AreaComponent</code>.</p> |
| * |
| * @param targetImage the ID of the target of this <code>AreaComponent</code> |
| */ |
| public void setTargetImage(String targetImage) { |
| this.targetImage = targetImage; |
| } |
| |
| |
| /** |
| * <p>Return the component family for this component.</p> |
| */ |
| public String getFamily() { |
| |
| return ("Area"); |
| |
| } |
| |
| // -------------------------------------------------------- UIOutput Methods |
| |
| |
| /** |
| * <p>Synthesize and return an {@link ImageArea} bean for this hotspot, |
| * if there is no <code>valueRef</code> property on this component.</p> |
| */ |
| public Object getValue() { |
| |
| if (super.getValue() == null) { |
| setValue(new ImageArea(getAlt(), getCoords(), getShape())); |
| } |
| return (super.getValue()); |
| |
| } |
| |
| |
| // ----------------------------------------------------- StateHolder Methods |
| |
| |
| /** |
| * <p>Return the state to be saved for this component.</p> |
| * |
| * @param context <code>FacesContext</code> for the current request |
| */ |
| |
| public Object saveState(FacesContext context) { |
| Object values[] = new Object[5]; |
| values[0] = super.saveState(context); |
| values[1] = alt; |
| values[2] = coords; |
| values[3] = shape; |
| values[4] = targetImage; |
| return (values); |
| } |
| |
| |
| /** |
| * <p>Restore the state for this component.</p> |
| * |
| * @param context <code>FacesContext</code> for the current request |
| * @param state State to be restored |
| */ |
| public void restoreState(FacesContext context, Object state) { |
| Object values[] = (Object[]) state; |
| super.restoreState(context, values[0]); |
| alt = (String) values[1]; |
| coords = (String) values[2]; |
| shape = (String) values[3]; |
| targetImage = (String) values[4]; |
| } |
| |
| |
| } |