Hi Graeme,
I don't know if what follows is the best way...   but when I export a file
on my applications sometimes I want to display a progress bar to give users
some feed back... I have done the following:


public abstract class DefaultExportPanel extends Panel {

/**
 *
 */
private static final long serialVersionUID = 1L;

private AbstractExportDialogButton button;
 private WebMarkupContainer progress;
 /**
 * @param id
 */
public DefaultExportPanel(String id, AbstractExportDialogButton button) {
super(id);
this.button = button;
setOutputMarkupId(true);
}
 @Override
protected void onBeforeRender() {
if(!this.button.getExportTask().isFinished()) {
for(Object behavior : getBehaviors()) {
if(behavior instanceof AjaxSelfUpdatingTimerBehavior) {
remove((AjaxSelfUpdatingTimerBehavior)behavior);
}
}
add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(2)));
progress = new ProgressReportPanel("progress",
DefaultExportPanel.this.button.getExportTask().getProgressReporter());
addOrReplace(progress);
 } else {
for(Object behavior : getBehaviors()) {
if(behavior instanceof AjaxSelfUpdatingTimerBehavior) {
remove((AjaxSelfUpdatingTimerBehavior)behavior);
}
}
add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(100)));
progress = new DownLoadExportPanel("progress",
this.button.getExportTask().getFile()) {
 private static final long serialVersionUID = 1L;

@Override
public String getContentType() {
return DefaultExportPanel.this.getContentType();
}
 @Override
public String getMessage() {
return DefaultExportPanel.this.getDowloadMessage();
}
};
progress.setOutputMarkupId(true);
addOrReplace(progress);
}
super.onBeforeRender();
}
 public abstract String getContentType();
 public abstract String getDowloadMessage();

}

and the corresponding markup:

<html xmlns:wicket>
<wicket:panel>
    <table width="100%" align="center" cellpadding="0" cellspacing="0">

        <tr>
            <td align="center">
                <div wicket:id="progress"></div>
             </td>
         </tr>
         </table>
</wicket:panel>
</html>

The part:

add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(100)));
progress = new DownLoadExportPanel("progress",
this.button.getExportTask().getFile()) {
 private static final long serialVersionUID = 1L;

@Override
public String getContentType() {
return DefaultExportPanel.this.getContentType();
}
 @Override
public String getMessage() {
return DefaultExportPanel.this.getDowloadMessage();
}
};
progress.setOutputMarkupId(true);

after removing the behaviors I had to add it because otherwise I would get
an exception when using  IE... I know this works, or is working  for me with
the snapshot of 1.4.X  branch I use, but I'm not sure if its the best way to
achieve this...

Best,

Ernesto

On Sun, Nov 16, 2008 at 10:54 PM, Graeme Knight <[EMAIL PROTECTED]>wrote:

>
> Oh. I'm wondering: https://issues.apache.org/jira/browse/WICKET-1525
>
> Perhaps there is another way?
>
>
> Graeme Knight wrote:
> >
> > Maybe I'm trying to do something silly. Is there an alternative?
> >
> >
> > Graeme Knight wrote:
> >>
> >> Hi.
> >>
> >> What's the best way of achieving this effect:
> >>
> >> 1) Button is pressed to start a process.
> >> 2) Updating of various panels contained within a WebMarkupContainer
> >> occurs on a 5 second period.
> >> 3) Process stops and updating of WebMarkupContainer also stops.
> >>
> >> I understand the use of AjaxSelfUpdatingTimerBehavior - this really is a
> >> question of the best way to add/remove from the WebMarkupContainer on
> >> demand, or enable/disable on demand.
> >>
> >> Any thoughts most welcome.
> >>
> >> Rgds, Graeme.
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Adding-Removing-a-AjaxSelfUpdatingTimerBehavior...-tp20520576p20530559.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to