You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Graeme Knight <gr...@gmail.com> on 2008/11/17 02:40:31 UTC
isEnabled on AjaxSelfUpdatingTimerBehavior.
Hi.
I have looked at removing the timer from a component when a condition is not
true, but according to the forums this is not possible.
Recommended is the use of isEnabled. I have the following code, but
isEnabled doesn't appear to be working.
I'm after a way of allowing a user to start a process by pressing a link,
then as the process continues over several minutes the WebMarkupContainer is
updated (every 5 seconds using an AjaxSelfUpdatingTimerBehavior) and when
the process finishes, stopping the timerbahavior until the link is next
pressed. I think this must be a common thing to do so any information would
be most welcome.
My refresh link that the user presses to render an indicator and a
percentage based on the fact a refresh is occuring:
public final class RefreshLink extends AbstractAjaxFallbackButtonLink
{
private static final long serialVersionUID = 1825145981122180572L;
@Override
public void onClick( AjaxRequestTarget target )
{
// create the refresh process worker
RefreshWorker refreshWorker = new RefreshWorker();
// execute the refresh thread
refreshWorker.refresh( Visit.get() );
// get the page
AccountViewPage page = AccountViewPage.class.cast( getPage() );
// get a reference to the markup container component containing a
refresh indicator and percentage complete
Component container = page.get( RefreshPanel.CONTAINER_ID_PATH );
target.addComponent( container );
}
}
In the panel containing the indicator (shown as the process continues along
with a percentage complete):
:
WebMarkupContainer container = new WebMarkupContainer( CONTAINER );
Image refreshIndicator = new Image( REFRESH_INDICATOR,
IconFactory.getSmallGIF( REFRESH_INDICATOR ) );
AttributeModifier attributeModifier = new
RefreshImageAttributeModifier();
Label percentageCompleteLabel = new Label(
PERCENTAGE_COMPLETE_LABEL, new RefreshLabelReadOnlyModel() );
container.add( percentageLabel );
container.add( refreshIndicator );
container.add( attributeModifier );
container.setOutputMarkupId( true );
container.add( new RefreshTimerBehavior() );
add( refreshButton );
add( container );
:
And the refresh timer:
public final class RefreshTimerBehavior extends
AjaxSelfUpdatingTimerBehavior
{
private static final long serialVersionUID = -6061033495202259806L;
private static final int FIVE_SECONDS = 5;
/**
* @param updateInterval
*/
public RefreshTimerBehavior()
{
super( Duration.seconds( FIVE_SECONDS ) );
}
/*
* (non-Javadoc)
*
* @see
org.apache.wicket.behavior.AbstractBehavior#isEnabled(org.apache.wicket.Component)
*/
@Override
public boolean isEnabled( Component component )
{
boolean isEnabled = false;
if( Visit.get().isRefreshing() )
{
isEnabled = true;
}
return isEnabled;
}
}
Now, isEnabled is getting called, but the base class method onTimer is also
getting called - indicating to me that the value of isEnabled is being
ignored - I was hoping that a return value of false would tell the timer to
stop, but it keeps ticking away every five seconds. I obviously can't remove
the timer behavior but I would like to disable and enable it in the
following conditions:
1) Enable: The timer gets enabled (i.e. isEnabled is true?) on
Visit.get().isRefreshing() equal to 'true'.
2) Disable: The timer gets disabled (i.e. isEnabled is false?) on
Visit.get().isRefreshing() equal to 'false'.
I simply only want the timer to tick when the refreshing process via the
worker is occuring and not otherwise.
I hope this is clear... Any thoughts? This is with 1.3.5 Wicket.
Many thanks for your time, Graeme.
--
View this message in context: http://www.nabble.com/isEnabled-on-AjaxSelfUpdatingTimerBehavior.-tp20532502p20532502.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org