Thanks Ryan,

First pass this has worked well for me. Appreciate your detailed instructions. 
Maybe these can be added to the open issue history itself for other folks till 
the issue gets closed.

I assume you have to be developer to make changes to the change history.

-ed

> From: [EMAIL PROTECTED]
> Subject: Re: modal window question - opening a modal window on page load
> Date: Sun, 9 Sep 2007 22:24:03 -0700
> To: [email protected]
> 
> There is an open issue about this: http://issues.apache.org/jira/ 
> browse/WICKET-12
> Read the discussion for some background and possible solutions.
> 
> I needed to do the same thing on a couple of pages. First, I tried  
> using getWindowOpenJavascript() on the modal window (called via  
> reflection as it's a private method) to get the needed JS, but I  
> think I ran into a few issues which I've now forgotten (private  
> 'shown' variable wasn't set?).
> 
> What I ended up doing was to use JavaScript to call the onclick()  
> method of a link that opens the modal window from my page's onload  
> function. Since the modal window is a JavaScript construct anyway I  
> don't think using JS for the "auto-open" behavior is weird.
> 
> 
> The following model ensures that a component is "clicked" only one  
> time, when the page is initially loaded (probably a common use case).  
> If you want to open the modal window on every page load, just check  
> out the JavaScript and the basic concept. This is written for Wicket  
> 1.2 but a similar approach should work for 1.3.
> 
> public class ClickOnceOnLoadModel extends AbstractReadOnlyModel {
>    private final Component component;
>    private boolean clicked = false;
> 
>     public ClickOnceOnLoadModel(Component component) {
>      this.component = component;
>    }
> 
>    @Override
>    public Object getObject(Component cmp) {
>      if ( !this.clicked ) {
>        this.clicked = true;
>        return getClickJs();
>      }
>      return null;
>    }
> 
>    private String getClickJs() {
>      StringBuilder sb = new StringBuilder( 64 );
>      sb.append( "var e=document.getElementById('" );
>      sb.append( this.component.getMarkupId() );
>      sb.append( "');e.onclick();" );
>      return sb.toString();
>    }
> }
> 
> 
> You would use it like this:
> 
> // Page constructor
> public MyPage() {
>       getBodyContainer().addOnLoadModifier(
>            new ClickOnceOnLoadModel( modalWindowOpeningLink ), null );
> }
> 
> 
> This of course requires a link on your page that opens the same modal  
> window you want to open automatically. If you really don't want such  
> a link, you could always hide it with CSS.
> 
> If there are more elegant solutions (and I'm sure there are), you'll  
> probably hear about them soon...
> 
> -Ryan
> 
> On Sep 9, 2007, at 8:04 PM, Ed _ wrote:
> 
> >
> > I want to bring up a modal window when I load a page, ie without  
> > clicking a link. I want to use it to prompt the user to enter some  
> > data on the home page before he can proceed. So somehow I have to  
> > enable the show function, how do I do that.
> >
> > I tried to do something as follows -
> >
> >             FormPanel form =  new FormPanel(modal.getContentId(),  
> > StoreBasePath, strId, title);
> >             form.setOutputMarkupId(true);
> >             modal.setContent(form);
> >             modal.setTitle("This is modal window with panel  
> > content.");
> >             modal.setCookieName("modalform");
> >             AjaxRequestTarget target = new AjaxRequestTarget();
> >             modal.show(target);
> >
> > java.lang.IllegalStateException: No Page found for component  
> > [MarkupContainer [Component id = ModalWindow, page = <No Page>,  
> > path = FormPanel:ModalWindow.ModalWindow]]
> >      at wicket.Component.getPage(Component.java:1037)
> >      at wicket.RequestCycle.urlFor(RequestCycle.java:655)
> >      at wicket.Component.urlFor(Component.java:2307)
> >      at wicket.behavior.AbstractAjaxBehavior.getCallbackUrl 
> > (AbstractAjaxBehavior.java:143)
> >      at wicket.ajax.AbstractDefaultAjaxBehavior.getCallbackScript 
> > (AbstractDefaultAjaxBehavior.java:131)
> >
> >
> > is there a way to do this.
> >
> > thanks
> >
> > _________________________________________________________________
> > Gear up for Halo® 3 with free downloads and an exclusive offer.  
> > It’s our way of saying thanks for using Windows Live™.
> > http://gethalo3gear.com?ocid=SeptemberWLHalo3_WLHMTxt_2
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

_________________________________________________________________
Gear up for Halo® 3 with free downloads and an exclusive offer. It’s our way of 
saying thanks for using Windows Live™.
http://gethalo3gear.com?ocid=SeptemberWLHalo3_WLHMTxt_2

Reply via email to