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

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

Introduction

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

Prototype

public ModalWindow(final String id) 

Source Link

Document

Creates a new modal window component.

Usage

From source file:org.apache.directory.fortress.web.panel.RoleAdminDetailPanel.java

License:Apache License

private void addUserOUSearchModal() {
    final ModalWindow userousModalWindow;
    add(userousModalWindow = new ModalWindow("useroumodal"));
    final OUSearchModalPanel userouSearchModalPanel = new OUSearchModalPanel(userousModalWindow.getContentId(),
            userousModalWindow, true);// w w w  . j  a v  a 2 s.c o m
    userousModalWindow.setContent(userouSearchModalPanel);
    userousModalWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override
        public void onClose(AjaxRequestTarget target) {
            OrgUnit ou = userouSearchModalPanel.getSelection();
            if (ou != null) {
                userouSelection = ou.getName();
                AdminRole adminRole = (AdminRole) getDefaultModelObject();
                adminRole.setOsU(userouSelection);
                target.add(userouCB);
            }
        }
    });

    add(new AjaxButton(GlobalIds.USEROU_SEARCH) {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            String msg = "clicked on user OU search";
            msg += userouSelection != null ? ": " + userouSelection : "";
            userouSearchModalPanel.setSearchVal(userouSelection);
            LOG.debug(msg);
            target.prependJavaScript(GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE);
            userousModalWindow.show(target);
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);
            AjaxCallListener ajaxCallListener = new AjaxCallListener() {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;

                @Override
                public CharSequence getFailureHandler(Component component) {
                    return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
                }
            };
            attributes.getAjaxCallListeners().add(ajaxCallListener);
        }
    });

    userousModalWindow.setTitle("User Organization Selection Modal");
    userousModalWindow.setInitialWidth(450);
    userousModalWindow.setInitialHeight(450);
    userousModalWindow.setCookieName("permou-modal");

    add(new AjaxButton("userou.delete") {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            String msg = "clicked on userous.delete";
            if (StringUtils.isNotEmpty(userouSelection)) {
                msg += " selection:" + userouSelection;
                AdminRole adminRole = (AdminRole) form.getModel().getObject();
                if (adminRole.getOsUSet() != null) {
                    adminRole.getOsUSet().remove(userouSelection);
                    userous.remove(userouSelection);
                    userouSelection = "";
                    target.add(userouCB);
                    msg += ", was removed from local, commit to persist changes on server";
                } else {
                    msg += ", no action taken because org unit does not have parent set";
                }
            } else {
                msg += ", no action taken because parents selection is empty";
            }
            LOG.debug(msg);
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);
            AjaxCallListener ajaxCallListener = new AjaxCallListener() {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;

                @Override
                public CharSequence getFailureHandler(Component component) {
                    return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
                }
            };
            attributes.getAjaxCallListeners().add(ajaxCallListener);
        }
    });
}

From source file:org.apache.directory.fortress.web.panel.RoleAdminDetailPanel.java

License:Apache License

private void addBeginRoleSearchModal() {
    final ModalWindow beginRoleModalWindow;
    add(beginRoleModalWindow = new ModalWindow("beginrolesmodal"));
    final RoleSearchModalPanel beginRoleSearchModalPanel = new RoleSearchModalPanel(
            beginRoleModalWindow.getContentId(), beginRoleModalWindow, false);
    beginRoleModalWindow.setContent(beginRoleSearchModalPanel);
    beginRoleModalWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override/*from w w  w.  j  a va 2  s  . c  om*/
        public void onClose(AjaxRequestTarget target) {
            UserRole userRole = beginRoleSearchModalPanel.getRoleSelection();
            if (userRole != null) {
                AdminRole adminRole = (AdminRole) getDefaultModelObject();
                adminRole.setBeginRange(userRole.getName());
                target.add(beginRangeTF);
            }
        }
    });

    add(new AjaxButton(GlobalIds.BEGIN_RANGE_SEARCH) {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            AdminRole adminRole = (AdminRole) form.getModel().getObject();
            beginRoleSearchModalPanel.setRoleSearchVal(adminRole.getBeginRange());
            target.prependJavaScript(GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE);
            beginRoleModalWindow.show(target);
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);
            AjaxCallListener ajaxCallListener = new AjaxCallListener() {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;

                @Override
                public CharSequence getFailureHandler(Component component) {
                    return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
                }
            };
            attributes.getAjaxCallListeners().add(ajaxCallListener);
        }
    });

    beginRoleModalWindow.setTitle("Begin Range Role Selection Modal");
    beginRoleModalWindow.setInitialWidth(700);
    beginRoleModalWindow.setInitialHeight(450);
    beginRoleModalWindow.setCookieName(ROLE_ASSIGN_MODAL);
}

From source file:org.apache.directory.fortress.web.panel.RoleAdminDetailPanel.java

License:Apache License

private void addEndRoleSearchModal() {
    final ModalWindow endRoleModalWindow;
    add(endRoleModalWindow = new ModalWindow("endrolesmodal"));
    final RoleSearchModalPanel endRoleSearchModalPanel = new RoleSearchModalPanel(
            endRoleModalWindow.getContentId(), endRoleModalWindow, false);
    endRoleModalWindow.setContent(endRoleSearchModalPanel);
    endRoleModalWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override// ww  w . ja v a 2 s .  c om
        public void onClose(AjaxRequestTarget target) {
            UserRole userRole = endRoleSearchModalPanel.getRoleSelection();
            if (userRole != null) {
                AdminRole adminRole = (AdminRole) getDefaultModelObject();
                adminRole.setEndRange(userRole.getName());
                target.add(endRangeTF);
            }
        }
    });

    add(new AjaxButton(GlobalIds.END_RANGE_SEARCH) {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            AdminRole adminRole = (AdminRole) form.getModel().getObject();
            endRoleSearchModalPanel.setRoleSearchVal(adminRole.getBeginRange());
            endRoleSearchModalPanel.setParentSearch(true);
            target.prependJavaScript(GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE);
            endRoleModalWindow.show(target);
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);
            AjaxCallListener ajaxCallListener = new AjaxCallListener() {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;

                @Override
                public CharSequence getFailureHandler(Component component) {
                    return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
                }
            };
            attributes.getAjaxCallListeners().add(ajaxCallListener);
        }
    });

    endRoleModalWindow.setTitle("End Range Role Selection Modal");
    endRoleModalWindow.setInitialWidth(700);
    endRoleModalWindow.setInitialHeight(450);
    endRoleModalWindow.setCookieName(ROLE_ASSIGN_MODAL);
}

From source file:org.apache.directory.fortress.web.panel.SDListPanel.java

License:Apache License

private void addRoleSearchModal(Radio roleRb) {
    final ModalWindow rolesModalWindow;
    listForm.add(rolesModalWindow = new ModalWindow("rolesearchmodal"));
    final RoleSearchModalPanel roleSearchModalPanel = new RoleSearchModalPanel(rolesModalWindow.getContentId(),
            rolesModalWindow, false);/*from w  w w  .j  ava2  s.c o m*/
    rolesModalWindow.setContent(roleSearchModalPanel);
    rolesModalWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override
        public void onClose(AjaxRequestTarget target) {
            UserRole roleConstraint = roleSearchModalPanel.getRoleSelection();
            if (roleConstraint != null) {
                log.debug("modal selected:" + roleConstraint.getName());
                searchVal = roleConstraint.getName();
                selectedRadioButton = ROLES;
                target.add(radioGroup);
            }
        }
    });

    roleRb.add(new SecureIndicatingAjaxLink("roleAssignLinkLbl", GlobalIds.REVIEW_MGR, "findRoles") {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        public void onClick(AjaxRequestTarget target) {
            String msg = "clicked on roles search";
            msg += "roleSelection: " + searchVal;
            roleSearchModalPanel.setRoleSearchVal(searchVal);
            log.debug(msg);
            target.prependJavaScript(GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE);
            rolesModalWindow.show(target);
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);
            AjaxCallListener ajaxCallListener = new AjaxCallListener() {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;

                @Override
                public CharSequence getFailureHandler(Component component) {
                    return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
                }
            };
            attributes.getAjaxCallListeners().add(ajaxCallListener);
        }
    });

    rolesModalWindow.setTitle("Role Search Modal");
    rolesModalWindow.setInitialWidth(700);
    rolesModalWindow.setInitialHeight(450);
    rolesModalWindow.setCookieName("role-assign-modal");
}

From source file:org.apache.directory.fortress.web.panel.UserListPanel.java

License:Apache License

private void addRoleSearchModal(Radio roleRb) {
    final ModalWindow rolesModalWindow;
    userformsearchfields.add(rolesModalWindow = new ModalWindow("rolesearchmodal"));
    final RoleSearchModalPanel roleSearchModalPanel = new RoleSearchModalPanel(rolesModalWindow.getContentId(),
            rolesModalWindow, false);/*from   w  ww.  jav  a 2 s .  c  om*/
    rolesModalWindow.setContent(roleSearchModalPanel);
    rolesModalWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override
        public void onClose(AjaxRequestTarget target) {
            UserRole roleConstraint = roleSearchModalPanel.getRoleSelection();
            if (roleConstraint != null) {
                LOG.debug("modal selected:" + roleConstraint.getName());
                searchData.setField1(roleConstraint.getName());
                selectedRadioButton = ROLES;
                enableRoleSearch();
                target.add(searchFields);
                target.add(radioGroup);
            }
        }
    });

    roleRb.add(new SecureIndicatingAjaxLink("roleAssignLinkLbl", GlobalIds.REVIEW_MGR, GlobalIds.FIND_ROLES) {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        public void onClick(AjaxRequestTarget target) {
            roleSearchModalPanel.setRoleSearchVal(searchData.getField1());
            roleSearchModalPanel.setAdmin(false);
            target.prependJavaScript(GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE);
            rolesModalWindow.show(target);
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);
            AjaxCallListener ajaxCallListener = new AjaxCallListener() {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;

                @Override
                public CharSequence getFailureHandler(Component component) {
                    return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
                }
            };
            attributes.getAjaxCallListeners().add(ajaxCallListener);
        }
    });
    rolesModalWindow.setTitle("RBAC Role Search Modal");
    rolesModalWindow.setInitialWidth(700);
    rolesModalWindow.setInitialHeight(450);
    rolesModalWindow.setCookieName("role-assign-modal");
}

From source file:org.apache.directory.fortress.web.panel.UserListPanel.java

License:Apache License

private void addAdminRoleSearchModal(Radio adminRoleRb) {
    final ModalWindow adminRolesModalWindow;
    userformsearchfields.add(adminRolesModalWindow = new ModalWindow("adminrolesearchmodal"));
    final RoleSearchModalPanel adminRoleSearchModalPanel = new RoleSearchModalPanel(
            adminRolesModalWindow.getContentId(), adminRolesModalWindow, true);
    adminRolesModalWindow.setContent(adminRoleSearchModalPanel);
    adminRolesModalWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override/*from www .  j a v a 2 s  . co  m*/
        public void onClose(AjaxRequestTarget target) {
            UserRole roleConstraint = adminRoleSearchModalPanel.getRoleSelection();
            if (roleConstraint != null) {
                searchData.setField1(roleConstraint.getName());
                selectedRadioButton = ADMIN_ROLES;
                enableAdminSearch();
                target.add(searchFields);
                target.add(radioGroup);
            }
        }
    });

    adminRoleRb.add(new SecureIndicatingAjaxLink("adminRoleAssignLinkLbl", GlobalIds.DEL_REVIEW_MGR,
            GlobalIds.FIND_ROLES) {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        public void onClick(AjaxRequestTarget target) {
            String msg = "clicked on admin roles search";
            msg += "adminRoleSelection: " + searchData.getField1();
            adminRoleSearchModalPanel.setRoleSearchVal(searchData.getField1());
            adminRoleSearchModalPanel.setAdmin(true);
            LOG.debug(msg);
            target.prependJavaScript(GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE);
            adminRolesModalWindow.show(target);
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);
            AjaxCallListener ajaxCallListener = new AjaxCallListener() {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;

                @Override
                public CharSequence getFailureHandler(Component component) {
                    return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
                }
            };
            attributes.getAjaxCallListeners().add(ajaxCallListener);
        }
    });
    adminRolesModalWindow.setTitle("Admin Role Search Modal");
    adminRolesModalWindow.setInitialWidth(700);
    adminRolesModalWindow.setInitialHeight(450);
    adminRolesModalWindow.setCookieName("role-assign-modal");
}

From source file:org.apache.directory.fortress.web.panel.UserListPanel.java

License:Apache License

private void addOUSearchModal(Radio ouRb) {
    final ModalWindow ousModalWindow;
    userformsearchfields.add(ousModalWindow = new ModalWindow("ousearchmodal"));
    final OUSearchModalPanel ouSearchModalPanel = new OUSearchModalPanel(ousModalWindow.getContentId(),
            ousModalWindow, true);//from   ww w  .  java  2  s  .c om
    ousModalWindow.setContent(ouSearchModalPanel);
    ousModalWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override
        public void onClose(AjaxRequestTarget target) {
            OrgUnit ou = ouSearchModalPanel.getSelection();
            if (ou != null) {
                searchData.setField1(ou.getName());
            }
            selectedRadioButton = OUS;
            enableOuSearch();
            target.add(searchFields);
            target.add(radioGroup);
        }
    });
    ouRb.add(new SecureIndicatingAjaxLink("ouAssignLinkLbl", GlobalIds.DEL_REVIEW_MGR, "searchOU") {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        public void onClick(AjaxRequestTarget target) {
            ouSearchModalPanel.setSearchVal(searchData.getField1());
            target.prependJavaScript(GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE);
            ousModalWindow.show(target);
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);
            AjaxCallListener ajaxCallListener = new AjaxCallListener() {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;

                @Override
                public CharSequence getFailureHandler(Component component) {
                    return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
                }
            };
            attributes.getAjaxCallListeners().add(ajaxCallListener);
        }
    });

    ousModalWindow.setTitle("User Organizational Unit Search Modal");
    ousModalWindow.setInitialWidth(450);
    ousModalWindow.setInitialHeight(450);
    ousModalWindow.setCookieName("userou-modal");
}

From source file:org.apache.directory.fortress.web.panel.UserListPanel.java

License:Apache License

private void addPermSearchModal(Radio permRb) {
    final ModalWindow permsModalWindow;
    userformsearchfields.add(permsModalWindow = new ModalWindow("permsearchmodal"));
    final PermSearchModalPanel permSearchModalPanel = new PermSearchModalPanel(permsModalWindow.getContentId(),
            permsModalWindow, false);//from  w  w w. ja va  2 s .  com
    permsModalWindow.setContent(permSearchModalPanel);
    permsModalWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        @Override
        public void onClose(AjaxRequestTarget target) {
            Permission permSelection = permSearchModalPanel.getSelection();
            if (permSelection != null) {
                searchData.setField1(permSelection.getObjName());
                searchData.setField2(permSelection.getOpName());
            }
            selectedRadioButton = PERMS;
            enablePermSearch();
            target.add(searchFields);
            target.add(radioGroup);
        }
    });
    permRb.add(new SecureIndicatingAjaxLink("permLinkLbl", GlobalIds.REVIEW_MGR, GlobalIds.FIND_PERMISSIONS) {
        /** Default serialVersionUID */
        private static final long serialVersionUID = 1L;

        public void onClick(AjaxRequestTarget target) {
            String msg = "clicked on perms search";
            msg += "permSelection: " + permission;
            String objectSearchVal = "";
            if (StringUtils.isNotEmpty(searchData.getField1())) {
                objectSearchVal = searchData.getField1();
            }
            permSearchModalPanel.setSearchVal(objectSearchVal);
            LOG.debug(msg);
            target.prependJavaScript(GlobalIds.WICKET_WINDOW_UNLOAD_CONFIRMATION_FALSE);
            permsModalWindow.show(target);
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);
            AjaxCallListener ajaxCallListener = new AjaxCallListener() {
                /** Default serialVersionUID */
                private static final long serialVersionUID = 1L;

                @Override
                public CharSequence getFailureHandler(Component component) {
                    return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
                }
            };
            attributes.getAjaxCallListeners().add(ajaxCallListener);
        }
    });
    permsModalWindow.setTitle("Permission Search Modal");
    permsModalWindow.setInitialWidth(650);
    permsModalWindow.setInitialHeight(450);
    permsModalWindow.setCookieName("perm-search-modal");
}

From source file:org.apache.jetspeed.portlets.rpad.RPADEditor.java

License:Apache License

public RPADEditor() {
    final PortletDeployer deployer = new JetspeedPortletDeployer();
    IModel getRepo = new LoadableDetachableModel() {

        protected Object load() {
            return getRepo();
        }//from  w w w. j a va 2  s  .  c om
    };
    final WebMarkupContainer tableGroup = new WebMarkupContainer("tableGroup");
    final ModalWindow metaDataModalWindow = new ModalWindow("modalwindow");
    final PageableListView listview = new PageableListView("repositories", getRepo, 10) {
        @Override
        protected void populateItem(final ListItem item) {
            final Repository repo = (Repository) item.getModelObject();
            item.add(new Label("name", repo.getName()));
            item.add(new Label("url", repo.getConfigPath()));
            item.add(new AjaxLink("edit", item.getModel()) {

                @Override
                public void onClick(AjaxRequestTarget target) {
                    metaDataModalWindow.setContent(
                            new RepositoryPanel(metaDataModalWindow.getContentId(), repo, tableGroup));
                    metaDataModalWindow.show(target);
                }
            });
            item.add(new AjaxLink("remove", item.getModel()) {

                @Override
                public void onClick(AjaxRequestTarget target) {
                    try {
                        getPortletRequest().getPreferences().reset(repo.getName());
                        getRepositoryManager()
                                .reload(RemotePortletAppDeployer.getReposList(getPortletRequest()));
                        target.addComponent(tableGroup);
                    } catch (ReadOnlyException e) {
                        logger.error("The preference is read-only: {}", repo.getName());
                    }
                }
            });
        }
    };
    listview.setOutputMarkupId(true);

    tableGroup.setOutputMarkupId(true);
    tableGroup.add(new PagingNavigator("navigator", listview));
    tableGroup.add(listview);
    add(metaDataModalWindow);
    add(tableGroup);
    add(new AjaxLink("newRepo") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            metaDataModalWindow.setContent(new RepositoryPanel(metaDataModalWindow.getContentId(),
                    new SimpleRepository("", ""), tableGroup));
            metaDataModalWindow.show(target);
        }
    });
}

From source file:org.apache.syncope.client.console.pages.ApprovalModalPage.java

License:Apache License

public ApprovalModalPage(final PageReference pageRef, final ModalWindow window, final WorkflowFormTO formTO) {
    super();//from  w  w  w  . j av  a2s . co  m

    IModel<List<WorkflowFormPropertyTO>> formProps = new LoadableDetachableModel<List<WorkflowFormPropertyTO>>() {

        private static final long serialVersionUID = 3169142472626817508L;

        @Override
        protected List<WorkflowFormPropertyTO> load() {
            return formTO.getProperties();
        }
    };

    final ListView<WorkflowFormPropertyTO> propView = new AltListView<WorkflowFormPropertyTO>("propView",
            formProps) {

        private static final long serialVersionUID = 9101744072914090143L;

        @Override
        @SuppressWarnings({ "unchecked", "rawtypes" })
        protected void populateItem(final ListItem<WorkflowFormPropertyTO> item) {
            final WorkflowFormPropertyTO prop = item.getModelObject();

            Label label = new Label("key", prop.getName() == null ? prop.getId() : prop.getName());
            item.add(label);

            FieldPanel field;
            switch (prop.getType()) {
            case Boolean:
                field = new AjaxDropDownChoicePanel("value", label.getDefaultModelObjectAsString(),
                        new Model<Boolean>(Boolean.valueOf(prop.getValue())))
                                .setChoices(Arrays.asList(new String[] { "Yes", "No" }));
                break;

            case Date:
                SimpleDateFormat df = StringUtils.isNotBlank(prop.getDatePattern())
                        ? new SimpleDateFormat(prop.getDatePattern())
                        : new SimpleDateFormat();
                Date parsedDate = null;
                if (StringUtils.isNotBlank(prop.getValue())) {
                    try {
                        parsedDate = df.parse(prop.getValue());
                    } catch (ParseException e) {
                        LOG.error("Unparsable date: {}", prop.getValue(), e);
                    }
                }

                field = new DateTimeFieldPanel("value", label.getDefaultModelObjectAsString(),
                        new Model<Date>(parsedDate), df.toLocalizedPattern());
                break;

            case Enum:
                MapChoiceRenderer<String, String> enumCR = new MapChoiceRenderer<String, String>(
                        prop.getEnumValues());

                field = new AjaxDropDownChoicePanel("value", label.getDefaultModelObjectAsString(),
                        new Model(prop.getValue())).setChoiceRenderer(enumCR).setChoices(new Model() {

                            private static final long serialVersionUID = -858521070366432018L;

                            @Override
                            public Serializable getObject() {
                                return new ArrayList<String>(prop.getEnumValues().keySet());
                            }
                        });
                break;

            case Long:
                field = new SpinnerFieldPanel<Long>("value", label.getDefaultModelObjectAsString(), Long.class,
                        new Model<Long>(NumberUtils.toLong(prop.getValue())), null, null);
                break;

            case String:
            default:
                field = new AjaxTextFieldPanel("value", PARENT_PATH, new Model<String>(prop.getValue()));
                break;
            }

            field.setReadOnly(!prop.isWritable());
            if (prop.isRequired()) {
                field.addRequiredLabel();
            }

            item.add(field);
        }
    };

    final AjaxButton userDetails = new IndicatingAjaxButton("userDetails",
            new Model<String>(getString("userDetails"))) {

        private static final long serialVersionUID = -4804368561204623354L;

        @Override
        protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
            editUserWin.setPageCreator(new ModalWindow.PageCreator() {

                private static final long serialVersionUID = -7834632442532690940L;

                @Override
                public Page createPage() {
                    return new ViewUserModalPage(ApprovalModalPage.this.getPageReference(), editUserWin,
                            userRestClient.read(formTO.getUserKey())) {

                        private static final long serialVersionUID = -2819994749866481607L;

                        @Override
                        protected void closeAction(final AjaxRequestTarget target, final Form form) {
                            setResponsePage(ApprovalModalPage.this);
                        }
                    };
                }
            });

            editUserWin.show(target);
        }
    };
    MetaDataRoleAuthorizationStrategy.authorize(userDetails, ENABLE,
            xmlRolesReader.getEntitlement("Users", "read"));

    final AjaxButton submit = new IndicatingAjaxButton(APPLY, new Model<String>(getString(SUBMIT))) {

        private static final long serialVersionUID = -958724007591692537L;

        @Override
        protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {

            Map<String, WorkflowFormPropertyTO> props = formTO.getPropertyMap();

            for (int i = 0; i < propView.size(); i++) {
                @SuppressWarnings("unchecked")
                ListItem<WorkflowFormPropertyTO> item = (ListItem<WorkflowFormPropertyTO>) propView.get(i);
                String input = ((FieldPanel) item.get("value")).getField().getInput();

                if (!props.containsKey(item.getModelObject().getId())) {
                    props.put(item.getModelObject().getId(), new WorkflowFormPropertyTO());
                }

                if (item.getModelObject().isWritable()) {
                    switch (item.getModelObject().getType()) {
                    case Boolean:
                        props.get(item.getModelObject().getId()).setValue(String.valueOf("0".equals(input)));
                        break;

                    case Date:
                    case Enum:
                    case String:
                    case Long:
                    default:
                        props.get(item.getModelObject().getId()).setValue(input);
                        break;
                    }
                }
            }

            formTO.getProperties().clear();
            formTO.getProperties().addAll(props.values());
            try {
                restClient.submitForm(formTO);

                ((Todo) pageRef.getPage()).setModalResult(true);
                window.close(target);
            } catch (SyncopeClientException e) {
                error(getString(Constants.ERROR) + ": " + e.getMessage());
                LOG.error("While submitting form {}", formTO, e);
                feedbackPanel.refresh(target);
            }
        }

        @Override
        protected void onError(final AjaxRequestTarget target, final Form<?> form) {
            feedbackPanel.refresh(target);
        }
    };

    final AjaxButton cancel = new IndicatingAjaxButton(CANCEL, new ResourceModel(CANCEL)) {

        private static final long serialVersionUID = -958724007591692537L;

        @Override
        protected void onSubmit(final AjaxRequestTarget target, final Form form) {
            window.close(target);
        }

        @Override
        protected void onError(final AjaxRequestTarget target, final Form form) {
            // nothing
        }
    };

    cancel.setDefaultFormProcessing(false);

    Form form = new Form(FORM);
    form.add(propView);
    form.add(userDetails);
    form.add(submit);
    form.add(cancel);

    MetaDataRoleAuthorizationStrategy.authorize(form, ENABLE,
            xmlRolesReader.getEntitlement("Approval", SUBMIT));

    editUserWin = new ModalWindow("editUserWin");
    editUserWin.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
    editUserWin.setInitialHeight(USER_WIN_HEIGHT);
    editUserWin.setInitialWidth(USER_WIN_WIDTH);
    editUserWin.setCookieName("edit-user-modal");
    add(editUserWin);

    add(form);
}