Example usage for org.apache.wicket.markup.html.form FormComponentLabel add

List of usage examples for org.apache.wicket.markup.html.form FormComponentLabel add

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.form FormComponentLabel add.

Prototype

public MarkupContainer add(final Component... children) 

Source Link

Document

Adds the child component(s) to this container.

Usage

From source file:dk.teachus.frontend.components.form.SelectPupilsPanel.java

License:Apache License

public SelectPupilsPanel(String id, IModel<? extends Collection<Pupil>> model) {
    super(id, model);

    selectGroup = new CheckGroup<Pupil>("selectGroup", getModel());
    selectGroup.setRenderBodyOnly(false);
    add(selectGroup);/*www . j a  v  a2s . c  o  m*/

    // Header
    selectGroup.add(new CheckGroupSelector("selectAll"));
    selectGroup.add(new Label("name", TeachUsSession.get().getString("General.pupil")));

    // Check list model
    IModel<List<Pupil>> pupilsModel = new LoadableDetachableModel<List<Pupil>>() {
        private static final long serialVersionUID = 1L;

        @Override
        protected List<Pupil> load() {
            List<Pupil> pupils = loadPupils();
            return pupils;
        }
    };

    selectGroup.add(new ListView<Pupil>("pupils", pupilsModel) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final ListItem<Pupil> item) {
            item.add(AttributeModifier.replace("class", new AbstractReadOnlyModel<String>() {
                private static final long serialVersionUID = 1L;

                @Override
                public String getObject() {
                    return (item.getIndex() + 1) % 2 == 0 ? "even" : "odd";
                }
            }));

            Check<Pupil> check = new Check<Pupil>("select", item.getModel());
            item.add(check);
            FormComponentLabel label = new FormComponentLabel("label", check);
            item.add(label);
            label.add(new Label("name", new PropertyModel<String>(item.getModel(), "name"))
                    .setRenderBodyOnly(true));
        }
    });
}

From source file:org.apache.isis.viewer.wicket.ui.components.widgets.valuechoices.ValueChoices.java

License:Apache License

protected FormComponentLabel createFormComponentLabel() {
    final String name = getModel().getName();
    valueField.setLabel(Model.of(name));

    final FormComponentLabel labelIfRegular = new FormComponentLabel(ID_SCALAR_IF_REGULAR, valueField);

    final String describedAs = getModel().getDescribedAs();
    if (describedAs != null) {
        labelIfRegular.add(new AttributeModifier("title", Model.of(describedAs)));
    }//  w ww. j  a va  2  s  .  c om

    final Label scalarName = new Label(ID_SCALAR_NAME, getRendering().getLabelCaption(valueField));
    labelIfRegular.add(scalarName);
    labelIfRegular.add(valueField);

    // scalarNameAndValue.add(dropDownChoicesForValueMementos);

    return labelIfRegular;
}

From source file:org.obiba.onyx.quartz.core.wicket.layout.impl.standard.QuestionCategoryCheckBoxPanel.java

License:Open Source License

/**
 * Constructor./*from  ww w  .  ja va2 s  . com*/
 * 
 * @param id
 * @param questionModel
 * @param questionCategoryModel
 * @param selectionsModel check group selections model
 * @param radioLabelVisible
 */
@SuppressWarnings("serial")
public QuestionCategoryCheckBoxPanel(String id, IModel<Question> questionModel,
        IModel<QuestionCategory> questionCategoryModel,
        IModel<Collection<IModel<QuestionCategory>>> selectionsModel, boolean radioLabelVisible) {
    super(id, questionModel, questionCategoryModel);
    setOutputMarkupId(true);

    // previous answer or default selection
    QuestionCategory questionCategory = (QuestionCategory) getDefaultModelObject();
    QuestionCategoryCheckBoxModel selectionModel = new QuestionCategoryCheckBoxModel(selectionsModel,
            questionCategoryModel);

    if (!activeQuestionnaireAdministrationService.isQuestionnaireDevelopmentMode()) {
        CategoryAnswer previousAnswer = activeQuestionnaireAdministrationService
                .findAnswer(questionModel.getObject(), questionCategory);
        if (previousAnswer != null)
            selectionModel.select();
    }

    checkbox = new CheckBox("checkbox", selectionModel);
    checkbox.setLabel(new QuestionnaireStringResourceModel(questionCategoryModel, "label"));

    // persist selection on change event
    // and make sure there is no active open field previously selected
    if (!activeQuestionnaireAdministrationService.isQuestionnaireDevelopmentMode()) {
        checkbox.add(new AjaxEventBehavior("onchange") {

            @Override
            protected void onEvent(AjaxRequestTarget target) {
                // toggle selection
                // note: call for setModelObject to ensure modelChanged trigger is properly called
                checkbox.setModelObject(!getSelectionModel().isSelected());

                if (getSelectionModel().isSelected()) {
                    activeQuestionnaireAdministrationService.answer(getQuestion(), getQuestionCategory(),
                            getQuestionCategory().getCategory().getOpenAnswerDefinition(), null);
                } else {
                    activeQuestionnaireAdministrationService.deleteAnswer(getQuestion(), getQuestionCategory());
                }
                if (getOpenField() != null) {
                    if (!getSelectionModel().isSelected()) {
                        resetOpenAnswerDefinitionPanels(target, getOpenField(), getQuestionCategoryModel());
                        updateFeedbackPanel(target);
                    }
                }

                fireQuestionCategorySelection(target, getQuestionModel(), getQuestionCategoryModel(),
                        getSelectionModel().isSelected());
            }

        });
    }

    FormComponentLabel checkboxLabel = new FormComponentLabel("categoryLabel", checkbox);
    add(checkboxLabel);
    checkboxLabel.add(checkbox);
    checkboxLabel.add(new Label("label", checkbox.getLabel()).setRenderBodyOnly(true)
            .setVisible(radioLabelVisible).setEscapeModelStrings(false));

    if (questionCategory.getCategory().getOpenAnswerDefinition() != null) {
        // there is an open field
        openField = newOpenAnswerDefinitionPanel("open");
        add(openField);

        checkbox.add(new AttributeAppender("class", new Model<String>("checkbox-open"), " "));
        checkboxLabel.add(new AttributeModifier("class", new Model<String>("label-open")));

    } else {
        // no open answer
        add(new EmptyPanel("open").setVisible(false));
    }
}

From source file:org.obiba.onyx.quartz.core.wicket.layout.impl.standard.QuestionCategoryRadioPanel.java

License:Open Source License

/**
 * Constructor./*w  w w. ja v  a2 s. c  o  m*/
 * 
 * @param id
 * @param questionModel
 * @param questionCategoryModel
 * @param radioLabelVisible
 */
@SuppressWarnings("serial")
public QuestionCategoryRadioPanel(String id, IModel<Question> questionModel,
        IModel<QuestionCategory> questionCategoryModel, RadioGroup<QuestionCategory> radioGroup,
        boolean radioLabelVisible) {
    super(id, questionModel, questionCategoryModel);
    this.radioGroup = radioGroup;

    // previous answer or default selection
    QuestionCategory questionCategory = (QuestionCategory) questionCategoryModel.getObject();
    Question question = (Question) questionModel.getObject();

    Radio<QuestionCategory> radio = new Radio<QuestionCategory>("radio", questionCategoryModel);
    radio.setLabel(new QuestionnaireStringResourceModel(questionCategoryModel, "label"));
    // persist selection on change event
    // and make sure there is no active open field previously selected
    if (!activeQuestionnaireAdministrationService.isQuestionnaireDevelopmentMode()) {
        radio.add(new AjaxEventBehavior("onchange") {

            @Override
            protected void onEvent(AjaxRequestTarget target) {

                // make the radio group active for the selection
                QuestionCategoryRadioPanel.this.radioGroup.setModel(getQuestionCategoryModel());

                // exclusive choice, only one answer per question
                activeQuestionnaireAdministrationService.deleteAnswers(getQuestion());
                activeQuestionnaireAdministrationService.answer(getQuestion(), getQuestionCategory());

                // make sure a previously selected open field is not asked for
                resetOpenAnswerDefinitionPanels(target, QuestionCategoryRadioPanel.this.radioGroup,
                        getQuestionCategoryModel());

                updateFeedbackPanel(target);

                fireQuestionCategorySelection(target, getQuestionModel(), getQuestionCategoryModel(), true);
            }

        });
    }

    FormComponentLabel radioLabel = new FormComponentLabel("categoryLabel", radio);
    add(radioLabel);
    radioLabel.add(radio);
    radioLabel.add(new Label("label", radio.getLabel()).setRenderBodyOnly(true).setVisible(radioLabelVisible)
            .setEscapeModelStrings(false));

    if (questionCategory.getCategory().getOpenAnswerDefinition() != null) {
        // there is an open field
        openField = newOpenAnswerDefinitionPanel("open");
        add(openField);

        // make radio associated to open answer optionally visible using css styling
        radio.add(new AttributeAppender("class", new Model<String>("radio-open"), " "));
        radioLabel.add(new AttributeModifier("class", new Model<String>("label-open")));

    } else {
        // no open answer
        add(new EmptyPanel("open").setVisible(false));
    }

    // previous answer or default selection
    if (!activeQuestionnaireAdministrationService.isQuestionnaireDevelopmentMode()) {
        CategoryAnswer previousAnswer = activeQuestionnaireAdministrationService.findAnswer(question,
                questionCategory);

        if (previousAnswer != null) {
            radioGroup.setModel(questionCategoryModel);
        }
    }

}

From source file:org.sakaiproject.delegatedaccess.tool.pages.SearchAccessPage.java

License:Educational Community License

private void main() {
    disableLink(searchAccessLink);//from   w w w.ja v a2  s  . c om

    final AbstractReadOnlyModel resultModel = new AbstractReadOnlyModel<String>() {

        @Override
        public String getObject() {
            if (firstLoad) {
                return "";
            } else {
                if (provider.getData().size() == 0) {
                    if (searchTypeEid.equals(selectedSearchType)) {
                        if (eid == null || "".equals(eid.trim())) {
                            return new StringResourceModel("noEidEntered", null).getObject();
                        } else {
                            User u = getUser();
                            if (u == null) {
                                return new StringResourceModel("eidDoesNotExist", null).getObject();
                            } else {
                                return new StringResourceModel("noResultsUser", null).getObject();
                            }
                        }
                    } else {
                        return new StringResourceModel("noResultsHierarchy", null).getObject();
                    }
                } else {
                    return "";
                }
            }
        }

    };
    add(new Label("resultInfo", resultModel) {
        @Override
        public boolean isVisible() {
            return !"".equals(resultModel.getObject());
        }
    });

    //create form
    final Form<?> form = new Form("form") {
        protected void onSubmit() {
            super.onSubmit();
            firstLoad = false;
            if (provider != null) {
                provider.detachManually();
            }
        }
    };
    form.setOutputMarkupId(true);

    //search by label:
    form.add(new Label("searchByLabel", new StringResourceModel("searchByLabel", null)));

    //setup radio buttons for search type:
    final RadioGroup group = new RadioGroup("searchGroup",
            new PropertyModel<String>(this, "selectedSearchType"));

    final Radio hierarchyRadio = new Radio("searchByHierarchy", new Model<String>(searchTypeHierarchy));
    FormComponentLabel hierarchyLabel = new FormComponentLabel("searchByHierarchyLabel", hierarchyRadio);
    hierarchyLabel.add(
            new Label("searchByHierarchyLabelText", new StringResourceModel("searchByHierarchyLabel", null)));
    group.add(hierarchyRadio);
    group.add(hierarchyLabel);
    group.add(hierarchyRadio.add(new AjaxEventBehavior("onchange") {
        @Override
        protected void onEvent(AjaxRequestTarget arg0) {
            selectedSearchType = searchTypeHierarchy;
        }
    }));

    Radio eidRadio = new Radio("searchByEid", new Model<String>(searchTypeEid));
    FormComponentLabel eidRadioLabel = new FormComponentLabel("searchByEidLabel", eidRadio);
    eidRadioLabel.add(new Label("searchByEidLabelText", new StringResourceModel("searchByEidLabel", null)));
    group.add(eidRadio);
    group.add(eidRadioLabel);
    group.add(eidRadio.add(new AjaxEventBehavior("onchange") {
        @Override
        protected void onEvent(AjaxRequestTarget arg0) {
            selectedSearchType = searchTypeEid;
        }
    }));

    form.add(group);

    //input for hierarchy fields:
    WebMarkupContainer hierarchyDiv = new WebMarkupContainer("hierarchyFields") {
        @Override
        protected void onComponentTag(ComponentTag tag) {
            if (!selectedSearchType.equals(searchTypeHierarchy)) {
                //set to hidden
                tag.put("style", "display:none");
            }
        }
    };
    final Comparator<SelectOption> optionComparator = new SelectOptionComparator();
    if (hierarchySelectOptions == null || hierarchySelectOptions.size() == 0) {
        hierarchySelectOptions = new HashMap<String, List<SelectOption>>();
        HierarchyNodeSerialized rootNode = projectLogic.getRootNodeId();
        nodeSelects = new HashMap<String, SelectOption>();
        nodeSelectOrder = new ArrayList<String>();
        if (rootNode != null && rootNode.id != null && !"".equals(rootNode.id)) {
            Set<HierarchyNodeSerialized> nodes = projectLogic.getDirectNodes(rootNode.id);
            List<SelectOption> options = new ArrayList<SelectOption>();
            if (nodes != null) {
                for (HierarchyNodeSerialized node : nodes) {
                    options.add(new SelectOption(node.description, node.id));
                }
            }
            Collections.sort(options, optionComparator);
            hierarchySelectOptions.put(rootNode.id, options);

            //since nothing is selected, set the node selection to null
            nodeSelects.put(rootNode.id, null);
            //add the root node as the first selection            
            nodeSelectOrder.add(rootNode.id);
        }
    }
    final ChoiceRenderer choiceRenderer = new ChoiceRenderer("label", "value");
    DataView dropdowns = new DataView("hierarchyDropdowns", new IDataProvider<String>() {

        @Override
        public void detach() {

        }

        @Override
        public Iterator<? extends String> iterator(int first, int count) {
            return nodeSelectOrder.subList(first, first + count).iterator();
        }

        @Override
        public IModel<String> model(final String arg0) {
            return new AbstractReadOnlyModel<String>() {
                private static final long serialVersionUID = 1L;

                @Override
                public String getObject() {
                    return arg0;
                }
            };
        }

        @Override
        public int size() {
            return nodeSelectOrder.size();
        }

    }) {

        @Override
        protected void populateItem(Item item) {
            final String itemNodeId = item.getModelObject().toString();
            final DropDownChoice choice = new DropDownChoice("hierarchyLevel", new NodeSelectModel(itemNodeId),
                    hierarchySelectOptions.get(itemNodeId), choiceRenderer);
            //keeps the null option (choose one) after a user selects an option
            choice.setNullValid(true);
            choice.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                protected void onUpdate(AjaxRequestTarget target) {
                    List<String> newOrder = new ArrayList<String>();
                    for (String nodeId : nodeSelectOrder) {
                        newOrder.add(nodeId);
                        if (nodeId.equals(itemNodeId)) {
                            break;
                        }
                    }
                    if (choice.getModelObject() != null
                            && !"".equals(((SelectOption) choice.getModelObject()).getValue())) {
                        String value = ((SelectOption) choice.getModelObject()).getValue();
                        //check if options list exist for newly selected node
                        if (!hierarchySelectOptions.containsKey(value)) {
                            Set<HierarchyNodeSerialized> nodes = projectLogic.getDirectNodes(value);
                            List<SelectOption> options = new ArrayList<SelectOption>();
                            if (nodes != null) {
                                for (HierarchyNodeSerialized node : nodes) {
                                    options.add(new SelectOption(node.description, node.id));
                                }
                                Collections.sort(options, optionComparator);
                            }
                            hierarchySelectOptions.put(value, options);
                        }
                        //check to see if there are any additional direct children, or if
                        //this is the last node
                        if (hierarchySelectOptions.containsKey(value)
                                && hierarchySelectOptions.get(value).size() > 0) {
                            //update node select order
                            newOrder.add(value);
                        }
                    }
                    nodeSelectOrder = newOrder;
                    //refresh everything:
                    target.addComponent(form);
                }
            });
            item.add(choice);
        }

    };
    hierarchyDiv.add(dropdowns);

    //include lower perms checkbox:
    CheckBox checkbox = new CheckBox("includeLowerPerms", new PropertyModel(this, "includeLowerPerms"));
    FormComponentLabel checkboxLabel = new FormComponentLabel("includeLowerPermsLabel", checkbox);
    checkboxLabel.add(
            new Label("includeLowerPermsLabelText", new StringResourceModel("includeLowerPermsLabel", null)));
    hierarchyDiv.add(checkboxLabel);
    hierarchyDiv.add(checkbox);

    form.add(hierarchyDiv);

    //input for eid fields:
    WebMarkupContainer eidDiv = new WebMarkupContainer("eidFields") {
        @Override
        protected void onComponentTag(ComponentTag tag) {
            if (!selectedSearchType.equals(searchTypeEid)) {
                //set to hidden
                tag.put("style", "display:none");
            }
        }
    };
    final PropertyModel<String> eidModel = new PropertyModel<String>(this, "eid");
    TextField<String> eidText = new TextField<String>("eid", eidModel);
    eidDiv.add(eidText);

    form.add(eidDiv);

    add(form);

    //Display Results:

    //Headers:
    Link<Void> userIdSort = new Link<Void>("userIdSortLink") {
        private static final long serialVersionUID = 1L;

        public void onClick() {
            changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_EID);
        }

        @Override
        public boolean isVisible() {
            return provider.size() > 0 && searchTypeHierarchy.equals(selectedSearchType);
        }
    };
    add(userIdSort);
    Link<Void> nameSort = new Link<Void>("nameSortLink") {
        private static final long serialVersionUID = 1L;

        public void onClick() {
            changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_SORT_NAME);
        }

        @Override
        public boolean isVisible() {
            return provider.size() > 0 && searchTypeHierarchy.equals(selectedSearchType);
        }
    };
    add(nameSort);
    Link<Void> typeSort = new Link<Void>("typeSortLink") {
        private static final long serialVersionUID = 1L;

        public void onClick() {
            changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_TYPE);
        }

        @Override
        public boolean isVisible() {
            return provider.size() > 0;
        }
    };
    add(typeSort);
    Link<Void> levelSort = new Link<Void>("levelSortLink") {
        private static final long serialVersionUID = 1L;

        public void onClick() {
            changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_LEVEL);
        }

        @Override
        public boolean isVisible() {
            return provider.size() > 0;
        }
    };
    add(levelSort);
    Link<Void> accessSort = new Link<Void>("accessSortLink") {
        private static final long serialVersionUID = 1L;

        public void onClick() {
            changeOrder(DelegatedAccessConstants.SEARCH_COMPARE_ACCESS);
        }
    };
    add(accessSort);
    Label restrictedToolsHeader = new Label("restrictedToolsHeader",
            new StringResourceModel("restrictedToolsHeader", null)) {
        @Override
        public boolean isVisible() {
            return provider.size() > 0;
        }
    };
    add(restrictedToolsHeader);
    Label hierarchyHeader = new Label("hierarchyHeader", new StringResourceModel("hierarchyHeader", null)) {
        @Override
        public boolean isVisible() {
            return provider.size() > 0;
        }
    };
    add(hierarchyHeader);

    //Display user (if available)
    final AbstractReadOnlyModel userModel = new AbstractReadOnlyModel() {
        @Override
        public Object getObject() {
            if (searchTypeEid.equals(selectedSearchType) && eid != null && !"".equals(eid.trim())) {
                User u = getUser();
                if (u != null) {
                    return u.getDisplayName();
                }
            }
            return "";
        }
    };
    Label userName = new Label("userName", userModel) {
        @Override
        public boolean isVisible() {
            return searchTypeEid.equals(selectedSearchType) && eid != null && !"".equals(eid)
                    && !"".equals(userModel.getObject());
        }
    };
    add(userName);

    add(new Link("editUserLink") {
        private static final long serialVersionUID = 1L;

        public void onClick() {
            User u = getUser();
            if (u != null) {
                setResponsePage(new UserEditPage(u.getId(), u.getDisplayName()));
            }
        }
    });

    Link removeAllPermsLink = new Link("removeAllPerms") {
        private static final long serialVersionUID = 1L;

        public void onClick() {
            User u = getUser();
            if (u != null) {
                projectLogic.removeAllPermsForUser(u.getId());
                provider.detachManually();
            }
        }

        @Override
        public boolean isVisible() {
            return sakaiProxy.isSuperUser();
        }
    };
    String confirm = new StringResourceModel("confirmRemoveAll", null).getObject();
    removeAllPermsLink.add(new SimpleAttributeModifier("onclick", "return confirm('" + confirm + "');"));
    add(removeAllPermsLink);

    //tool id=>title map:
    final Map<String, String> toolTitleMap = new HashMap<String, String>();
    final List<ListOptionSerialized> blankRestrictedTools = projectLogic.getEntireToolsList();
    for (ListOptionSerialized opt : blankRestrictedTools) {
        toolTitleMap.put(opt.getId(), opt.getName());
    }

    //Data
    String[] tmpHierarchy = sakaiProxy
            .getServerConfigurationStrings(DelegatedAccessConstants.HIERARCHY_SITE_PROPERTIES);
    if (tmpHierarchy == null || tmpHierarchy.length == 0) {
        tmpHierarchy = DelegatedAccessConstants.DEFAULT_HIERARCHY;
    }
    final String[] hierarchy = new String[tmpHierarchy.length + 1];
    //include the root as part of the hierarchy:
    hierarchy[0] = sakaiProxy.getRootName();
    for (int i = 1; i < hierarchy.length; i++) {
        hierarchy[i] = tmpHierarchy[i - 1];
    }
    provider = new AccessSearchResultDataProvider();
    dataView = new DataView<AccessSearchResult>("searchResult", provider) {
        @Override
        public void populateItem(final Item item) {
            final AccessSearchResult searchResult = (AccessSearchResult) item.getModelObject();
            item.add(new Label("userId", searchResult.getEid()) {
                @Override
                public boolean isVisible() {
                    return searchTypeHierarchy.equals(selectedSearchType);
                }
            });
            item.add(new Label("name", searchResult.getSortName()));
            item.add(new Label("type", new StringResourceModel("accessType" + searchResult.getType(), null)));
            String level = "";
            if (hierarchy != null && searchResult.getLevel() < hierarchy.length) {
                level = hierarchy[searchResult.getLevel()];
            } else {
                level = new StringResourceModel("site", null).getObject();
            }
            item.add(new Label("level", level));
            AbstractReadOnlyModel<String> accessModel = new AbstractReadOnlyModel<String>() {
                @Override
                public String getObject() {
                    String returnVal = "";
                    if (searchResult.getAccess() != null && searchResult.getAccess().length == 2) {
                        returnVal = searchResult.getAccess()[0] + ":" + searchResult.getAccess()[1];
                        if (":".equals(returnVal)) {
                            returnVal = "";
                        }
                    }
                    return returnVal;
                }
            };
            item.add(new Label("access", accessModel));
            item.add(new ListView<String>("restrictedTools", searchResult.getRestrictedTools()) {

                @Override
                protected void populateItem(ListItem<String> arg0) {
                    String toolTitle = arg0.getDefaultModelObject().toString();
                    if (toolTitleMap.containsKey(toolTitle)) {
                        toolTitle = toolTitleMap.get(toolTitle);
                    }
                    arg0.add(new Label("restrictedTool", toolTitle));
                }
            });
            item.add(new ListView<String>("hierarchy", searchResult.getHierarchyNodes()) {

                @Override
                protected void populateItem(ListItem<String> arg0) {
                    String hierarchyStr = "|-";
                    for (String hierarchyLevel : searchResult.getHierarchyNodes()) {
                        if (hierarchyLevel.equals(arg0.getDefaultModelObject())) {
                            break;
                        }
                        hierarchyStr += "-";
                    }
                    hierarchyStr += arg0.getDefaultModelObject();
                    arg0.add(new Label("hierarchyTitle", hierarchyStr));
                }

            });
            Link<Void> viewLink = new Link("view") {
                private static final long serialVersionUID = 1L;

                public void onClick() {
                    setResponsePage(new SearchAccessPage(false, searchResult.getEid()));
                }

                @Override
                public boolean isVisible() {
                    return searchTypeHierarchy.equals(selectedSearchType);
                }
            };
            item.add(viewLink);
            Link<Void> userIdLink = new Link("edit") {
                private static final long serialVersionUID = 1L;

                public void onClick() {
                    setResponsePage(new UserEditPage(searchResult.getId(), searchResult.getDisplayName()));
                }

                @Override
                public boolean isVisible() {
                    return searchTypeHierarchy.equals(selectedSearchType);
                }
            };
            item.add(userIdLink);
            Link<Void> removeLink = new Link("remove") {
                @Override
                public void onClick() {
                    projectLogic.removeAccess(searchResult.getNodeId(), searchResult.getId(),
                            searchResult.getType());
                    provider.detachManually();
                }

                @Override
                public boolean isVisible() {
                    return searchResult.isCanEdit();
                }
            };
            String confirm = new StringResourceModel("confirmRemove", null).getObject();
            removeLink.add(new SimpleAttributeModifier("onclick", "return confirm('" + confirm + "');"));
            item.add(removeLink);

            //add css class
            if (rowIndex == 100) {
                rowIndex = 0;
            }
            item.add(new AttributeAppender("class", true, new Model<String>(rowIndex % 2 == 0 ? "even" : "odd"),
                    ";"));
            rowIndex++;
        }

        @Override
        public boolean isVisible() {
            return provider.size() > 0;
        }

        @Override
        protected void onComponentTag(ComponentTag arg0) {

        }

    };
    dataView.setOutputMarkupId(true);
    dataView.setItemReuseStrategy(new DefaultItemReuseStrategy());
    dataView.setItemsPerPage(DelegatedAccessConstants.SEARCH_RESULTS_PAGE_SIZE);
    add(dataView);
    //Navigation
    //add a pager to our table, only visible if we have more than SEARCH_RESULTS_PAGE_SIZE items
    add(new PagingNavigator("navigatorTop", dataView) {

        @Override
        public boolean isVisible() {
            if (provider.size() > DelegatedAccessConstants.SEARCH_RESULTS_PAGE_SIZE) {
                return true;
            }
            return false;
        }

        @Override
        public void onBeforeRender() {
            super.onBeforeRender();

            //clear the feedback panel messages
            clearFeedback(feedbackPanel);
        }
    });
    add(new PagingNavigator("navigatorBottom", dataView) {

        @Override
        public boolean isVisible() {
            if (provider.size() > DelegatedAccessConstants.SEARCH_RESULTS_PAGE_SIZE) {
                return true;
            }
            return false;
        }

        @Override
        public void onBeforeRender() {
            super.onBeforeRender();

            //clear the feedback panel messages
            clearFeedback(feedbackPanel);
        }
    });

}