[prev in list] [next in list] [prev in thread] [next in thread] 

List:       tapestry-user
Subject:    RE: Rollover-like component to submit forms
From:       Paul Ferraro <pmf8 () columbia ! edu>
Date:       2004-09-30 20:41:28
Message-ID: 415C6F78.2080708 () columbia ! edu
[Download RAW message or body]

A few people asked if I would post this component to the list.  Enjoy...

Paul

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="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.java
=================
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), 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.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>
   <include-script resource-path="RolloverSubmit.js"/>
</script>

RolloverSubmit.js
==================
function setImageSrc(image1, image2) {
   if (image1 && image2 && image1.src && image2.src) {
       image1.src = image2.src
   }
}

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

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic