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

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Patrick Casey
            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

Reply | Threaded
Open this post in threaded view
|

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

Sohail Aslam
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: [hidden email]
For additional commands, e-mail: [hidden email]