Example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow setPageCreator

List of usage examples for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow setPageCreator

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow setPageCreator.

Prototype

public ModalWindow setPageCreator(final PageCreator creator) 

Source Link

Document

Sets the PageCreator instance.

Usage

From source file:org.devgateway.eudevfin.projects.module.components.tabs.ReportingTab.java

private ModalWindow AddModalWindow(PageParameters parameters) {
    final ModalWindow modal = new ModalWindow("modal");
    modal.setCookieName("modal-1");

    final PageParameters myParams = parameters;

    modal.setPageCreator(new ModalWindow.PageCreator() {
        @Override//from w  ww . jav a 2  s. c  om
        public org.apache.wicket.Page createPage() {
            return new ReportsTableModal(myParams, ReportingTab.this.getPage().getPageReference(), modal);
        }
    });
    modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        public void onClose(AjaxRequestTarget target) {
            ReportsTableListPanel newComp = new ReportsTableListPanel(WICKETID_LIST_PANEL,
                    new ProjectReportsListGenerator(NewProjectPage.project.getProjectReports()));
            replace(newComp);
            target.add(newComp);
        }
    });
    modal.setCloseButtonCallback(new ModalWindow.CloseButtonCallback() {
        public boolean onCloseButtonClicked(AjaxRequestTarget target) {
            // Change the passValue variable when modal window is closed.
            //setPassValue("Modal window is closed by user.");
            return true;
        }
    });

    return modal;
}

From source file:org.devgateway.eudevfin.projects.module.components.tabs.ResultsTab.java

private ModalWindow AddModalWindow(PageParameters parameters) {
    final ModalWindow modal = new ModalWindow("modal");
    modal.setCookieName("modal-1");

    final PageParameters myParams = parameters;

    modal.setPageCreator(new ModalWindow.PageCreator() {
        @Override// w  ww .  j a  v  a2s.co  m
        public org.apache.wicket.Page createPage() {
            return new ResultsTableModal(myParams, ResultsTab.this.getPage().getPageReference(), modal);
        }
    });
    modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        public void onClose(AjaxRequestTarget target) {
            ResultsTableListPanel newComp = new ResultsTableListPanel(WICKETID_LIST_PANEL,
                    new ProjectResultsListGenerator(NewProjectPage.project.getProjectResults()));
            replace(newComp);
            target.add(newComp);
        }
    });
    modal.setCloseButtonCallback(new ModalWindow.CloseButtonCallback() {
        public boolean onCloseButtonClicked(AjaxRequestTarget target) {
            // Change the passValue variable when modal window is closed.
            //setPassValue("Modal window is closed by user.");
            return true;
        }
    });

    return modal;
}

From source file:org.devgateway.eudevfin.projects.module.components.tabs.TransactionsTab.java

private ModalWindow AddModalWindow(PageParameters parameters) {
    final ModalWindow modal = new ModalWindow("modal");
    modal.setCookieName("modal-1");

    final PageParameters myParams = parameters;

    modal.setPageCreator(new ModalWindow.PageCreator() {
        @Override//from   w ww.  j ava  2s . c o m
        public org.apache.wicket.Page createPage() {
            //ResultsTab.this.getPage().getPageReference()
            return new TransactionsTableModal(myParams, TransactionsTab.this.getPage().getPageReference(),
                    modal);
        }
    });
    modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        public void onClose(AjaxRequestTarget target) {
            TransactionTableListPanel newComp = new TransactionTableListPanel(WICKETID_LIST_PANEL,
                    new ProjectTransactionsListGenerator(NewProjectPage.project.getProjectTransactions()));
            newComp.add(new AttributeAppender("class", "budget-table"));
            replace(newComp);
            target.add(newComp);
        }
    });
    modal.setCloseButtonCallback(new ModalWindow.CloseButtonCallback() {
        public boolean onCloseButtonClicked(AjaxRequestTarget target) {
            // Change the passValue variable when modal window is closed.
            //setPassValue("Modal window is closed by user.");
            return true;
        }
    });

    return modal;
}

From source file:org.geoserver.wcs.web.demo.WCSRequestBuilder.java

License:Open Source License

public WCSRequestBuilder() {
    // the form//from  ww  w  .j  a  v  a2  s. c  o m
    Form form = new Form("form");
    add(form);

    // the actual request builder component
    builder = new WCSRequestBuilderPanel("requestBuilder", new GetCoverageRequest());
    form.add(builder);

    // the xml popup window
    final ModalWindow xmlWindow = new ModalWindow("xmlWindow");
    add(xmlWindow);
    xmlWindow.setPageCreator(new ModalWindow.PageCreator() {

        public Page createPage() {
            return new PlainCodePage(xmlWindow, responseWindow, getRequestXML());

        }
    });

    // the output response window
    responseWindow = new ModalWindow("responseWindow");
    add(responseWindow);
    responseWindow.setPageMapName("demoResponse");
    responseWindow.setCookieName("demoResponse");

    responseWindow.setPageCreator(new ModalWindow.PageCreator() {

        public Page createPage() {
            DemoRequest request = new DemoRequest(null);
            HttpServletRequest http = ((WebRequest) WCSRequestBuilder.this.getRequest())
                    .getHttpServletRequest();
            String url = ResponseUtils.buildURL(ResponseUtils.baseURL(http), "ows",
                    Collections.singletonMap("strict", "true"), URLType.SERVICE);
            request.setRequestUrl(url);
            request.setRequestBody((String) responseWindow.getDefaultModelObject());
            return new DemoRequestResponse(new Model(request));
        }
    });

    form.add(new AjaxSubmitLink("execute") {

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            responseWindow.setDefaultModel(new Model(getRequestXML()));
            responseWindow.show(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form form) {
            super.onError(target, form);
            target.addComponent(builder.getFeedbackPanel());
        }
    });

    form.add(new AjaxSubmitLink("executeXML") {

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            try {
                getRequestXML();
                xmlWindow.show(target);
            } catch (Exception e) {
                error(e.getMessage());
                target.addComponent(getFeedbackPanel());
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form form) {
            target.addComponent(getFeedbackPanel());
        }
    });
}

From source file:org.geoserver.web.demo.DemoRequestsPage.java

License:Open Source License

private void setUpDemoRequestsForm(final File demoDir) {
    final IModel requestModel = getDefaultModel();

    final Form demoRequestsForm;
    demoRequestsForm = new Form("demoRequestsForm");
    demoRequestsForm.setOutputMarkupId(true);
    demoRequestsForm.setModel(requestModel);
    add(demoRequestsForm);/*www .  j a  v  a2s.co m*/

    final List<String> demoList = getDemoList(demoDir);
    final DropDownChoice demoRequestsList;
    final IModel reqFileNameModel = new PropertyModel(requestModel, "requestFileName");
    demoRequestsList = new DropDownChoice("demoRequestsList", reqFileNameModel, demoList,
            new IChoiceRenderer() {
                public String getIdValue(Object obj, int index) {
                    return String.valueOf(obj);
                }

                public Object getDisplayValue(Object obj) {
                    return obj;
                }
            });
    demoRequestsForm.add(demoRequestsList);

    /*
     * Wanted to use a simpler OnChangeAjaxBehavior but target.addComponent(body) does not make
     * the EditAreaBehavior to update the body contents inside it, but instead puts the plain
     * TextArea contents above the empty xml editor
     */
    demoRequestsList.add(new AjaxFormSubmitBehavior(demoRequestsForm, "onchange") {

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            final String reqFileName = demoRequestsList.getModelValue();
            final String contents;
            String proxyBaseUrl;
            final String baseUrl;
            {
                WebRequest request = (WebRequest) DemoRequestsPage.this.getRequest();
                HttpServletRequest httpServletRequest;
                httpServletRequest = ((WebRequest) request).getHttpServletRequest();
                proxyBaseUrl = GeoServerExtensions.getProperty("PROXY_BASE_URL");
                if (StringUtils.isEmpty(proxyBaseUrl)) {
                    GeoServer gs = getGeoServer();
                    proxyBaseUrl = gs.getGlobal().getSettings().getProxyBaseUrl();
                    if (StringUtils.isEmpty(proxyBaseUrl)) {
                        baseUrl = ResponseUtils.baseURL(httpServletRequest);
                    } else {
                        baseUrl = proxyBaseUrl;
                    }
                } else {
                    baseUrl = proxyBaseUrl;
                }
            }
            try {
                contents = getFileContents(reqFileName);
            } catch (IOException e) {
                LOGGER.log(Level.WARNING, "Can't load demo file " + reqFileName, e);
                throw new WicketRuntimeException("Can't load demo file " + reqFileName, e);
            }

            boolean demoRequestIsHttpGet = reqFileName.endsWith(".url");
            final String service = reqFileName.substring(0, reqFileName.indexOf('_')).toLowerCase();
            if (demoRequestIsHttpGet) {
                String url = ResponseUtils.appendPath(baseUrl, contents);
                urlTextField.setModelObject(url);
                body.setModelObject("");
            } else {
                String serviceUrl = ResponseUtils.appendPath(baseUrl, service);
                urlTextField.setModelObject(serviceUrl);
                body.setModelObject(contents);
            }

            // target.addComponent(urlTextField);
            // target.addComponent(body);
            /*
             * Need to setResponsePage, addComponent causes the EditAreaBehavior to sometimes
             * not updating properly
             */
            setResponsePage(DemoRequestsPage.this);
        }

        @Override
        protected void onError(AjaxRequestTarget target) {
            // nothing to do
        }
    });

    urlTextField = new TextField("url", new PropertyModel(requestModel, "requestUrl"));
    urlTextField.setMarkupId("requestUrl");
    urlTextField.setOutputMarkupId(true);
    demoRequestsForm.add(urlTextField);

    body = new CodeMirrorEditor("body", new PropertyModel(requestModel, "requestBody"));
    // force the id otherwise this blasted thing won't be usable from other forms
    // body.setMarkupId("requestBody");
    // body.setOutputMarkupId(true);
    body.setTextAreaMarkupId("requestBody");
    //body.add(new EditAreaBehavior());
    demoRequestsForm.add(body);

    username = new TextField("username", new PropertyModel(requestModel, "userName"));
    demoRequestsForm.add(username);

    password = new PasswordTextField("password", new PropertyModel(requestModel, "password"));
    password.setRequired(false);
    demoRequestsForm.add(password);

    final ModalWindow responseWindow;

    responseWindow = new ModalWindow("responseWindow");
    add(responseWindow);
    responseWindow.setPageMapName("demoResponse");
    responseWindow.setCookieName("demoResponse");

    responseWindow.setPageCreator(new ModalWindow.PageCreator() {

        public Page createPage() {
            return new DemoRequestResponse(requestModel);
        }
    });

    demoRequestsForm.add(new AjaxSubmitLink("submit", demoRequestsForm) {
        @Override
        public void onSubmit(AjaxRequestTarget target, Form testWfsPostForm) {
            responseWindow.show(target);
        }

        @Override
        protected IAjaxCallDecorator getAjaxCallDecorator() {
            // we need to force EditArea to update the textarea contents (which it hides)
            // before submitting the form, otherwise the contents won't be the ones the user
            // edited
            return new AjaxCallDecorator() {
                @Override
                public CharSequence decorateScript(CharSequence script) {
                    return "document.getElementById('requestBody').value = document.gsEditors.requestBody.getValue();"
                            + script;
                }
            };
        }

    });
}

From source file:org.geoserver.wps.web.WPSRequestBuilder.java

License:Open Source License

public WPSRequestBuilder(String procName) {
    // the form/*from   www  . jav a 2 s. c  om*/
    Form form = new Form("form");
    add(form);

    // the actual request builder component
    ExecuteRequest execRequest = new ExecuteRequest();
    if (procName != null)
        execRequest.processName = procName;

    builder = new WPSRequestBuilderPanel("requestBuilder", execRequest);
    form.add(builder);

    // the xml popup window
    final ModalWindow xmlWindow = new ModalWindow("xmlWindow");
    add(xmlWindow);
    xmlWindow.setPageCreator(new ModalWindow.PageCreator() {

        public Page createPage() {
            return new PlainCodePage(xmlWindow, responseWindow, getRequestXML());
        }
    });

    // the output response window
    responseWindow = new ModalWindow("responseWindow");
    add(responseWindow);
    responseWindow.setPageMapName("demoResponse");
    responseWindow.setCookieName("demoResponse");

    responseWindow.setPageCreator(new ModalWindow.PageCreator() {

        @SuppressWarnings("unchecked")
        public Page createPage() {
            DemoRequest request = new DemoRequest(null);
            HttpServletRequest http = ((WebRequest) WPSRequestBuilder.this.getRequest())
                    .getHttpServletRequest();
            String url = ResponseUtils.buildURL(ResponseUtils.baseURL(http), "ows",
                    Collections.singletonMap("strict", "true"), URLType.SERVICE);
            request.setRequestUrl(url);
            request.setRequestBody((String) responseWindow.getDefaultModelObject());
            request.setUserName(builder.username);
            request.setPassword(builder.password);
            return new DemoRequestResponse(new Model(request));
        }
    });

    form.add(new AjaxSubmitLink("execute") {

        @SuppressWarnings("unchecked")
        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            responseWindow.setDefaultModel(new Model(getRequestXML()));
            responseWindow.show(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form form) {
            super.onError(target, form);
            target.addComponent(builder.getFeedbackPanel());
        }
    });

    form.add(new AjaxSubmitLink("executeXML") {

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            try {
                getRequestXML();
                xmlWindow.show(target);
            } catch (Exception e) {
                error(e.getMessage());
                target.addComponent(getFeedbackPanel());
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form form) {
            target.addComponent(getFeedbackPanel());
        }
    });
}

From source file:org.jnotary.service.web.CRLPanel.java

License:Open Source License

private ModalWindow createModalWindow(final String windowName, final Long crlUrlId) {
    final ModalWindow modalWindow = new ModalWindow(windowName);

    modalWindow.setCookieName(windowName);
    modalWindow.setPageCreator(new ModalWindow.PageCreator() {
        private static final long serialVersionUID = 1L;

        public Page createPage() {
            return new AddEditCrlUrlPage(crlUrlId, modalWindow);
        }/*from  ww  w.  ja va2  s . c o  m*/
    });
    modalWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        private static final long serialVersionUID = 1L;

        public void onClose(AjaxRequestTarget target) {
            wmc.setOutputMarkupId(true);
            initListData();
            target.add(wmc);
        }
    });
    modalWindow.setCloseButtonCallback(new ModalWindow.CloseButtonCallback() {
        private static final long serialVersionUID = 1L;

        public boolean onCloseButtonClicked(AjaxRequestTarget target) {
            return true;
        }
    });

    return modalWindow;
}

From source file:org.syncope.console.pages.BasePage.java

License:Apache License

private void pageSetup() {
    ((SyncopeApplication) getApplication()).setupNavigationPane(this, xmlRolesReader, true, version);

    feedbackPanel = new FeedbackPanel("feedback");
    feedbackPanel.setOutputMarkupId(true);
    add(feedbackPanel);//from w ww  . j a v a 2s. co m

    final String kind = getClass().getSimpleName().toLowerCase();
    final BookmarkablePageLink kindLink = (BookmarkablePageLink) get(kind);
    if (kindLink != null) {
        kindLink.add(new Behavior() {

            private static final long serialVersionUID = 1469628524240283489L;

            @Override
            public void onComponentTag(final Component component, final ComponentTag tag) {

                tag.put("class", kind);
            }
        });

        Component kindIcon = kindLink.get(0);
        if (kindIcon != null) {
            kindIcon.add(new Behavior() {

                private static final long serialVersionUID = 1469628524240283489L;

                @Override
                public void onComponentTag(final Component component, final ComponentTag tag) {

                    tag.put("src",
                            "../.." + SyncopeApplication.IMG_PREFIX + kind + SyncopeApplication.IMG_SUFFIX);
                }
            });
        }
    }

    // Modal window for editing user profile
    final ModalWindow editProfileModalWin = new ModalWindow("editProfileModal");
    editProfileModalWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
    editProfileModalWin.setInitialHeight(EDIT_PROFILE_WIN_HEIGHT);
    editProfileModalWin.setInitialWidth(EDIT_PROFILE_WIN_WIDTH);
    editProfileModalWin.setCookieName("edit-profile-modal");
    add(editProfileModalWin);

    add(new Label("username", SyncopeSession.get().getUserId()));

    Fragment editProfileFrag;
    if ("admin".equals(SyncopeSession.get().getUserId())) {
        editProfileFrag = new Fragment("editProfile", "adminEmptyFrag", this);
    } else {
        final UserTO userTO = SyncopeSession.get().isAuthenticated() ? profileRestClient.readProfile()
                : new UserTO();

        editProfileFrag = new Fragment("editProfile", "editProfileFrag", this);

        AjaxLink editProfileLink = new IndicatingAjaxLink("link") {

            private static final long serialVersionUID = -7978723352517770644L;

            @Override
            public void onClick(final AjaxRequestTarget target) {
                editProfileModalWin.setPageCreator(new ModalWindow.PageCreator() {

                    @Override
                    public Page createPage() {
                        return new UserRequestModalPage(BasePage.this.getPageReference(), editProfileModalWin,
                                userTO);
                    }
                });

                editProfileModalWin.show(target);
            }
        };
        editProfileLink.add(new Label("linkTitle", getString("editProfile")));

        Panel panel = new LinkPanel("editProfile", new ResourceModel("editProfile"));
        panel.add(editProfileLink);
        editProfileFrag.add(panel);
    }
    add(editProfileFrag);
}

From source file:org.syncope.console.pages.Login.java

License:Apache License

public Login(final PageParameters parameters) {
    super(parameters);

    form = new Form("login");

    userIdField = new TextField("userId", new Model());
    userIdField.setMarkupId("userId");
    form.add(userIdField);/*from   w  w w .  ja v a2s  .  com*/

    passwordField = new PasswordTextField("password", new Model());
    passwordField.setMarkupId("password");
    form.add(passwordField);

    languageSelect = new LocaleDropDown("language",
            Arrays.asList(new Locale[] { Locale.ENGLISH, Locale.ITALIAN }));

    form.add(languageSelect);

    Button submitButton = new Button("submit", new Model(getString("submit"))) {

        private static final long serialVersionUID = 429178684321093953L;

        @Override
        public void onSubmit() {
            String[] entitlements = authenticate(userIdField.getRawInput(), passwordField.getRawInput());

            if (entitlements == null) {
                error(getString("login-error"));
            } else {
                SyncopeSession.get().setUserId(userIdField.getRawInput());
                SyncopeSession.get().setEntitlements(entitlements);
                SyncopeSession.get().setCoreVersion(getCoreVersion());

                setResponsePage(WelcomePage.class, parameters);
            }
        }
    };

    submitButton.setDefaultFormProcessing(false);
    form.add(submitButton);

    add(form);
    add(new FeedbackPanel("feedback"));

    // Modal window for self registration
    final ModalWindow editProfileModalWin = new ModalWindow("selfRegModal");
    editProfileModalWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
    editProfileModalWin.setInitialHeight(SELF_REG_WIN_HEIGHT);
    editProfileModalWin.setInitialWidth(SELF_REG_WIN_WIDTH);
    editProfileModalWin.setCookieName("self-reg-modal");
    add(editProfileModalWin);

    Fragment selfRegFrag;
    if (isSelfRegistrationAllowed()) {
        selfRegFrag = new Fragment("selfRegistration", "selfRegAllowed", this);

        AjaxLink selfRegLink = new IndicatingAjaxLink("link") {

            private static final long serialVersionUID = -7978723352517770644L;

            @Override
            public void onClick(final AjaxRequestTarget target) {
                editProfileModalWin.setPageCreator(new ModalWindow.PageCreator() {

                    private static final long serialVersionUID = -7834632442532690940L;

                    @Override
                    public Page createPage() {
                        return new UserRequestModalPage(Login.this.getPageReference(), editProfileModalWin,
                                new UserTO());
                    }
                });

                editProfileModalWin.show(target);
            }
        };
        selfRegLink.add(new Label("linkTitle", getString("selfRegistration")));

        Panel panel = new LinkPanel("selfRegistration", new ResourceModel("selfRegistration"));
        panel.add(selfRegLink);
        selfRegFrag.add(panel);
    } else {
        selfRegFrag = new Fragment("selfRegistration", "selfRegNotAllowed", this);
    }
    add(selfRegFrag);
}

From source file:org.syncope.console.pages.panels.PoliciesPanel.java

License:Apache License

public PoliciesPanel(final String id, final PolicyType policyType) {
    super(id);//from w  ww .j  a va  2s  .  c  o  m

    this.policyType = policyType;

    // Modal window for editing user attributes
    final ModalWindow mwindow = new ModalWindow("editModalWin");
    mwindow.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
    mwindow.setInitialHeight(MODAL_WIN_HEIGHT);
    mwindow.setInitialWidth(MODAL_WIN_WIDTH);
    mwindow.setCookieName("policy-modal");
    add(mwindow);

    // Container for user list
    final WebMarkupContainer container = new WebMarkupContainer("container");
    container.setOutputMarkupId(true);
    add(container);

    setWindowClosedCallback(mwindow, container);

    final List<IColumn> columns = new ArrayList<IColumn>();

    columns.add(new PropertyColumn(new ResourceModel("id"), "id", "id"));

    columns.add(new PropertyColumn(new ResourceModel("description"), "description", "description"));

    columns.add(new AbstractColumn<PolicyTO>(new ResourceModel("type")) {

        private static final long serialVersionUID = 8263694778917279290L;

        @Override
        public void populateItem(final Item<ICellPopulator<PolicyTO>> cellItem, final String componentId,
                final IModel<PolicyTO> model) {

            cellItem.add(new Label(componentId, getString(model.getObject().getType().name())));
        }
    });

    columns.add(new AbstractColumn<PolicyTO>(new ResourceModel("actions", "")) {

        private static final long serialVersionUID = 2054811145491901166L;

        @Override
        public String getCssClass() {
            return "action";
        }

        @Override
        public void populateItem(final Item<ICellPopulator<PolicyTO>> cellItem, final String componentId,
                final IModel<PolicyTO> model) {

            final PolicyTO accountPolicyTO = model.getObject();

            final ActionLinksPanel panel = new ActionLinksPanel(componentId, model);

            panel.add(new ActionLink() {

                private static final long serialVersionUID = -3722207913631435501L;

                @Override
                public void onClick(final AjaxRequestTarget target) {

                    mwindow.setPageCreator(new ModalWindow.PageCreator() {

                        private static final long serialVersionUID = -7834632442532690940L;

                        @Override
                        public Page createPage() {
                            final PolicyModalPage page = new PolicyModalPage(mwindow, accountPolicyTO);
                            return page;
                        }
                    });

                    mwindow.show(target);
                }
            }, ActionLink.ActionType.EDIT, "Policies", "read");

            panel.add(new ActionLink() {

                private static final long serialVersionUID = -3722207913631435501L;

                @Override
                public void onClick(final AjaxRequestTarget target) {
                    try {

                        policyRestClient.delete(accountPolicyTO.getId());
                        info(getString("operation_succeded"));

                    } catch (SyncopeClientCompositeErrorException e) {
                        error(getString("operation_error"));

                        LOG.error("While deleting resource {}({})",
                                new Object[] { accountPolicyTO.getId(), accountPolicyTO.getDescription() }, e);
                    }

                    target.add(container);
                    target.add(getPage().get("feedback"));
                }
            }, ActionLink.ActionType.DELETE, "Policies", "delete");

            cellItem.add(panel);
        }
    });

    final AjaxFallbackDefaultDataTable table = new AjaxFallbackDefaultDataTable("datatable", columns,
            new PolicyDataProvider(), paginatorRows);

    container.add(table);

    final IndicatingAjaxLink createButton = new IndicatingAjaxLink("createLink") {

        private static final long serialVersionUID = -7978723352517770644L;

        @Override
        public void onClick(final AjaxRequestTarget target) {

            mwindow.setPageCreator(new ModalWindow.PageCreator() {

                private static final long serialVersionUID = -7834632442532690940L;

                @Override
                public Page createPage() {
                    final PolicyModalPage page = new PolicyModalPage(mwindow, getPolicyTOInstance(policyType));
                    return page;
                }
            });

            mwindow.show(target);
        }
    };

    add(createButton);

    MetaDataRoleAuthorizationStrategy.authorize(createButton, ENABLE,
            xmlRolesReader.getAllAllowedRoles("Policies", "create"));

    final Form paginatorForm = new Form("PaginatorForm");

    final DropDownChoice rowsChooser = new DropDownChoice("rowsChooser",
            new PropertyModel(this, "paginatorRows"), prefMan.getPaginatorChoices());

    rowsChooser.add(new AjaxFormComponentUpdatingBehavior("onchange") {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            prefMan.set(getWebRequest(), (WebResponse) getResponse(), Constants.PREF_POLICY_PAGINATOR_ROWS,
                    String.valueOf(paginatorRows));
            table.setItemsPerPage(paginatorRows);

            target.add(container);
        }
    });

    paginatorForm.add(rowsChooser);
    add(paginatorForm);
}