You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Patrick Casey <pa...@adelphia.net> on 2005/05/15 20:17:04 UTC

Anybody know if there's an off-the-shelf Rollover Image Submit anywhere?

            I'm looking to add a little chrome to my forms and wanted to put
rollovers on my various submit buttons. Right now I'm generating them with
the out of box ImageSubmit component (and they work fine), but as far as I
can tell that component doesn't support rollovers and the Rollover button
doesn't support form submission, so I'm in a bit of a catch-22.

 

            Before I bite the bullet and start using my old javascript
techniques on this, does anybody know if there's a canned tapestry component
that does rollovers on submit buttons?

 

            --- Pat


Re: Anybody know if there's an off-the-shelf Rollover Image Submit anywhere?

Posted by Sohail Aslam <so...@techlogix.com>.
Patrick Casey wrote:
>             I'm looking to add a little chrome to my forms and wanted to put
> rollovers on my various submit buttons. Right now I'm generating them with
> the out of box ImageSubmit component (and they work fine), but as far as I
> can tell that component doesn't support rollovers and the Rollover button
> doesn't support form submission, so I'm in a bit of a catch-22.
> 
>  
> 
>             Before I bite the bullet and start using my old javascript
> techniques on this, does anybody know if there's a canned tapestry component
> that does rollovers on submit buttons?
> 
>  
> 
>             --- Pat
> 
> 

Paul Ferraro posted such a component a while back. Here are the files.

Regards,
Sohail Aslam
sohail AT techlogix.com


====== RolloverSubmit.java ==============

package com.arabiandreams.tapestry.component;

import org.apache.tapestry.form.ImageSubmit;
import org.apache.tapestry.html.Body;
import org.apache.tapestry.IAsset;
import org.apache.tapestry.IScript;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.components.LinkEventType;
import org.apache.tapestry.IResourceLocation;

/**
  *  @author  Paul Ferraro
  */
public abstract class RolloverSubmit
     extends ImageSubmit
{
   public abstract IAsset getFocusImage();

   public abstract IAsset getBlurImage();

   private IScript script;
   protected void renderInformalParameters(IMarkupWriter writer,
                                           IRequestCycle requestCycle)
   {
     IAsset focusImage = this.getFocusImage();
     IAsset blurImage = this.getBlurImage();
     if (!this.isDisabled())
     {
       String focusImageReference = getImageReference(focusImage,
           requestCycle);
       String blurImageReference = getImageReference( (blurImage ==
           null) ? this.getImage() : blurImage, requestCycle);

       writer.attribute(LinkEventType.MOUSE_OVER.getAttributeName(),
                        "setImageSrc(this, " + focusImageReference + ")");
       writer.attribute(LinkEventType.MOUSE_OUT.getAttributeName(),
                        "setImageSrc(this, " + blurImageReference + ")");
       this.script.execute(requestCycle,
                           Body.get(requestCycle), 
java.util.Collections.EMPTY_MAP);
     }
     super.renderInformalParameters(writer, requestCycle);
   }

   private String getImageReference(IAsset asset, IRequestCycle
                                    requestCycle)
   {
     String imageURL = asset.buildURL(requestCycle);
     Body body = Body.get(requestCycle);
     String imageReference = body.getPreloadedImageReference(imageURL);

     return imageReference.split("\\.")[0];
   }

   protected void finishLoad()
   {
     IResourceLocation location =

 
this.getSpecification().getSpecificationLocation().getRelativeLocation(
         "RolloverSubmit.script");

     this.script =
         this.getPage().getEngine().getScriptSource().getScript(location);
   }
}


========= RolloverSubmit.jwc ===================
<?xml version="1.0"?>
<!DOCTYPE component-specification PUBLIC "-//Apache Software
Foundation//Tapestry Specification 3.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">

<component-specification 
class="com.arabiandreams.tapestry.component.RolloverSubmit" 
allow-body="no" allow-informal-parameters="yes">

   <parameter name="name" property-name="nameOverride" 
type="java.lang.String" direction="in">  </parameter>
   <parameter name="disabled" type="boolean" direction="in">  </parameter>
   <parameter name="image" type="org.apache.tapestry.IAsset" 
direction="in" required="yes">  </parameter>
   <parameter name="disabledImage" type="org.apache.tapestry.IAsset" 
direction="in">  </parameter>
   <parameter name="focusImage" type="org.apache.tapestry.IAsset" 
direction="in" required="yes">  </parameter>
   <parameter name="blurImage" type="org.apache.tapestry.IAsset" 
direction="in">  </parameter>
   <parameter name="point" type="java.awt.Point">  </parameter>
   <parameter name="selected" type="java.lang.Object">  </parameter>
   <parameter name="tag" type="java.lang.Object" direction="in"> 
</parameter>
   <parameter name="listener" type="org.apache.tapestry.IActionListener" 
direction="in">  </parameter>

   <reserved-parameter name="type"/>
   <reserved-parameter name="src"/>
   <reserved-parameter name="border"/>
   <reserved-parameter name="onmouseover"/>
   <reserved-parameter name="onmouseout"/>

   <property-specification name="name" type="java.lang.String"/>
   <property-specification name="form" type="org.apache.tapestry.IForm"/>
</component-specification>

======= RolloverSubmit.script =================================
<?xml version="1.0"?>
<!DOCTYPE script PUBLIC
"-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">

<script>

<body>
<![CDATA[
function setImageSrc(image1, image2) {
     if (image1 && image2 && image1.src && image2.src) {
         image1.src = image2.src
     }
}
]]>
</body>

<initialization>
  <!-- nothing -->
</initialization>

<!-- include-script resource-path="script/RolloverSubmit.js"/ -->
</script>


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org