Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Adding scrollbars to a modal window

In your WebPage:

Code Block
...

add(new BookmarkablePageLink("myLink", MyPopupPage.class, params).setPopupSettings(PopupSettings.SCROLLBARS));

...

Refreshing page when a modal window is closed

In your WebPage:

Code Block
modalWindow.setWindowClosedCallback(new WindowClosedCallback(){
	private static final long serialVersionUID = 1L;

	@Override
	public void onClose(AjaxRequestTarget target){
		target.addComponent(parentPage);
	}
});

An alternative approach would be to do it on the client side:

Code Block
public class MyPopupCloseLink extends PopupCloseLink {
	@Override
	protected void onComponentTag(ComponentTag tag) {
		super.onComponentTag(tag);
		tag.put("onclick", "window.parent.refresh();");
	}
}

Opening a modal window on page load (no AJAX involved)

If you need to open up a modal window when a page is loaded following extension of ModalWindow class will do the trick.

Code Block
/**
 * @author Ernesto Reinaldo Barreiro 
 */
public class OpenOnLoadModalWindow extends ModalWindow implements
IHeaderContributor {

       private static final long serialVersionUID = 1L;

       /**
        * @param id
        */
       public OpenOnLoadModalWindow(String id) {
               super(id);
       }

       /**
        * @param id
        * @param model
        */
       public OpenOnLoadModalWindow(String id, IModel<?> model) {
               super(id, model);
       }

       /**
        * Adds the JavaScript to initially open modal window.
        */
       public void renderHead(IHeaderResponse response)
       {
               response.renderOnDomReadyJavascript(getWindowOpenJavascript());
       }

       /*
        * (non-Javadoc)
        * @see org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow#makeContentVisible()
        */
       @Override
       protected boolean makeContentVisible()
       {
               return true;
       }
}

The trick boils down to do two things:

-Making sure the contents of the modal window are visible on initial rendering (makeContentVisible())
-Making sure the JavaScript opening the modal window is executed when page is loaded.

// TODO : Add other examples