Based on Hugo's suggestion:
1. The component class...
public abstract class Scroller extends BaseComponent
{
@Parameter(required=true)
public abstract String getElementId();
@Asset("/WEB-INF/Scroller.script")
public abstract IAsset getScriptAsset();
}
2. The script file...
<!DOCTYPE script PUBLIC
"-//Apache Software Foundation//Tapestry Script Specification
3.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
<script>
<input-symbol key="elementId" required="yes"/>
<body>
function findPosX(obj)
{
var curleft = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curleft += obj.offsetLeft
obj = obj.offsetParent;
}
}
else if (obj.x)
curleft += obj.x;
return curleft;
}
function findPosY(obj)
{
var curtop = 0;
if (obj.offsetParent)
{
while (obj.offsetParent)
{
curtop += obj.offsetTop
obj = obj.offsetParent;
}
}
else if (obj.y)
curtop += obj.y;
return curtop;
}
</body>
<initialization>
var element = document.getElementById('${elementId}');
if( element != null )
{
scrollTo(findPosX(element), findPosY(element));
}
</initialization>
</script>
3. The HTML template...
<span jwcid="@If" condition="ognl:elementId != null">
<span jwcid="@Script" scriptAsset="ognl:scriptAsset"
elementId="ognl:elementId"/>
</span>
-----Original Message-----
From: Hugo Palma [mailto:[EMAIL PROTECTED]
Sent: Thursday, July 06, 2006 11:39 AM
To: Tapestry users
Subject: Re: Focus issues...
Have u tried implementing a component to create a javascript that scrolls to
a element in the document by id ?
You can look here http://www.quirksmode.org/js/findpos.html for how to find
the position of an element.
Cheers,
Hugo
On 7/6/06, James Carman <[EMAIL PROTECTED]> wrote:
>
> All,
>
> Does anyone know how to get Tapestry to "stay put" on a screen when you
> submit the form and reshow it? I have a form that is somewhat long. When
> I
> use an event (like selecting something in a drop-down box) that forces a
> form submit to refresh some other parts of the screen, the screen goes
> back
> up to the top. I would like it to just stay where it is (somewhere near
> the
> originating drop-down). Any ideas?
>
> James
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]