Example usage for org.apache.wicket.markup.repeater.data DataView DataView

List of usage examples for org.apache.wicket.markup.repeater.data DataView DataView

Introduction

In this page you can find the example usage for org.apache.wicket.markup.repeater.data DataView DataView.

Prototype

protected DataView(String id, IDataProvider<T> dataProvider) 

Source Link

Usage

From source file:de.alpharogroup.wicket.data.provider.examples.dataview.SortableDataViewPanel.java

License:Apache License

/**
 * Instantiates a new sortable data view panel.
 *
 * @param id/*w  w  w.j  ava2 s  .  c o  m*/
 *            the id
 */
public SortableDataViewPanel(final String id) {
    super(id);
    final List<Person> persons = PersonDatabaseManager.getInstance().getPersons();

    final SortableFilterPersonDataProvider dataProvider = new SortableFilterPersonDataProvider(persons) {

        private static final long serialVersionUID = 1L;

        @Override
        public List<Person> getData() {
            return PersonDatabaseManager.getInstance().getPersons();
        }
    };

    dataProvider.setSort("firstname", SortOrder.ASCENDING);

    final DataView<Person> dataView = new DataView<Person>("dataView", dataProvider) {
        /**
         * The serialVersionUID.
         */
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final Item<Person> item) {
            item.setDefaultModel(new CompoundPropertyModel<Person>(item.getModel()));
            item.add(new Label("firstname"));
            item.add(new Label("lastname"));
            item.add(new Label("dateOfBirth"));
        }
    };

    dataView.setItemsPerPage(10);
    add(dataView);

    add(new OrderByBorder<String>("orderByFirstname", "firstname", dataProvider));
    add(new OrderByBorder<String>("orderByLastname", "lastname", dataProvider));
    add(new OrderByBorder<String>("orderByDateOfBirth", "dateOfBirth", dataProvider));
    add(new NavigatorLabel("label", dataView));
    add(new PagingNavigator("topNavigator", dataView));
    add(new PagingNavigator("footernavigator", dataView));
}

From source file:de.inren.frontend.health.BmiDefinitionPanel.java

License:Apache License

@Override
protected void onInitialize() {
    super.onInitialize();

    add(new Label("category.label", new StringResourceModel("category.label", BmiDefinitionPanel.this, null)));
    add(new Label("range.label", new StringResourceModel("range.label", BmiDefinitionPanel.this, null)));
    add(new Label("info.label", new StringResourceModel("info.label", BmiDefinitionPanel.this, null)));

    final AttributeAppender center = new AttributeAppender("align", Model.of("center"));
    final AttributeAppender newTab = new AttributeAppender("target", Model.of("_blank"));
    final AttributeAppender border = new AttributeAppender("style", Model.of("border-top: 1px solid #aaa;"));

    add(new DataView<BmiMeaning>("rows", getDataProvider()) {

        @Override/*from   w ww.  j  a v  a  2 s .  c  o m*/
        protected void populateItem(Item<BmiMeaning> item) {
            BmiMeaning bmi = item.getModelObject();
            item.add(new Label("color", "").add(new AttributeAppender("bgcolor", Model.of(bmi.getColor()))));

            item.add(new Label("category",
                    new StringResourceModel(bmi.name() + ".label", BmiDefinitionPanel.this, null)));

            if (bmi.getbMax() != null) {
                if (bmi.getbMin() != 0) {
                    item.add(new Label("range",
                            String.valueOf(bmi.getbMin()) + "-" + String.valueOf(bmi.getbMax())).add(center));
                } else {
                    item.add(new Label("range", String.valueOf(" " + String.valueOf(bmi.getbMax())))
                            .add(center));
                }
            } else {
                item.add(
                        new Label("range", String.valueOf(" " + String.valueOf(bmi.getbMin()))).add(center));
            }

            // Add wiki links
            switch (bmi) {
            case Normal:
                item.add(new ExternalLinkWithMarkup("info",
                        new StringResourceModel(bmi.name() + ".info.url", BmiDefinitionPanel.this, null),
                        new StringResourceModel(bmi.name() + ".info.label", BmiDefinitionPanel.this, null),
                        newTab).add(center));
                break;
            case Severely_Underweight:
                item.add(new ExternalLinkWithMarkup("info",
                        new StringResourceModel(bmi.name() + ".info.url", BmiDefinitionPanel.this, null),
                        new StringResourceModel(bmi.name() + ".info.label", BmiDefinitionPanel.this, null),
                        newTab).add(center));
                break;
            case Overweight:
                item.add(new ExternalLinkWithMarkup("info",
                        new StringResourceModel(bmi.name() + ".info.url", BmiDefinitionPanel.this, null),
                        new StringResourceModel(bmi.name() + ".info.label", BmiDefinitionPanel.this, null),
                        newTab).add(center));
                break;
            case Obese_Class_II:
                item.add(new ExternalLinkWithMarkup("info",
                        new StringResourceModel(bmi.name() + ".info.url", BmiDefinitionPanel.this, null),
                        new StringResourceModel(bmi.name() + ".info.label", BmiDefinitionPanel.this, null),
                        newTab).add(center));
                break;
            default:
                item.add(new Label("info", ""));
            }
            // Add borders to mark the groups
            switch (bmi) {
            case Normal:
                item.add(border);
                break;
            case Overweight:
                item.add(border);
                break;
            case Underweight:
                item.add(border);
                break;
            }
        }
    });
}

From source file:de.javakaffee.msm.bench.ListLightPage.java

License:Apache License

/**
 * Constructor that is invoked when page is invoked without a session.
 * //from w  ww  .  j  av a2 s .  c o  m
 * @param parameters
 *            Page parameters
 */
public ListLightPage(final PageParameters parameters) {

    setStatelessHint(true);

    // Add the simplest type of label
    add(new Label("message",
            "Just a list of lightweight items. They're not stored directly in the session, but only their ids."));

    final int page = parameters.getInt("page", 1) - 1;
    final String sortProperty = parameters.getString("orderby", "firstName");
    final boolean ascending = parameters.getAsBoolean("asc", true);
    final SortableContactDataProvider dp = new SortableContactDataProvider(sortProperty, ascending);

    final DataView<Contact> dataView = new DataView<Contact>("sorting", dp) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final Item<Contact> item) {
            final Contact contact = item.getModelObject();
            item.add(new ActionPanel("actions", item.getModel()));
            item.add(new Label("contactid", String.valueOf(contact.getId())));
            item.add(new Label("firstname", contact.getFirstName()));
            item.add(new Label("lastname", contact.getLastName()));
            item.add(new Label("homephone", contact.getHomePhone()));
            item.add(new Label("cellphone", contact.getCellPhone()));

            item.add(new AttributeModifier("class", true, new AbstractReadOnlyModel<String>() {
                private static final long serialVersionUID = 1L;

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

    dataView.setItemsPerPage(8);

    dataView.setCurrentPage(page);

    add(new MyOrderByBorder("orderById", "id", dp));

    add(new MyOrderByBorder("orderByFirstName", "firstName", dp));

    add(new MyOrderByBorder("orderByLastName", "lastName", dp));

    add(dataView);

    add(new PagingNavigator("navigator", dataView) {
        private static final long serialVersionUID = 1L;

        /*
         * (non-Javadoc)
         * 
         * @see
         * org.apache.wicket.markup.html.navigation.paging.PagingNavigator
         * #newPagingNavigationIncrementLink(java.lang.String,
         * org.apache.wicket.markup.html.navigation.paging.IPageable, int)
         */
        @Override
        protected AbstractLink newPagingNavigationIncrementLink(final String id, final IPageable pageable,
                final int increment) {
            return new PagingNavigationIncrementLink<Void>(id, pageable, increment) {
                private static final long serialVersionUID = 1L;

                /*
                 * (non-Javadoc)
                 * 
                 * @seeorg.apache.wicket.markup.html.navigation.paging.
                 * PagingNavigationIncrementLink#onClick()
                 */
                @Override
                public void onClick() {
                    throw new UnsupportedOperationException("OnClick not supported by bookmarkable link");
                }

                /*
                 * (non-Javadoc)
                 * 
                 * @see org.apache.wicket.markup.html.link.Link#getURL()
                 */
                @Override
                protected CharSequence getURL() {
                    final PageParameters params = new PageParameters();
                    final SortParam sort = dp.getSort();
                    params.add("page", String.valueOf(getPageNumber() + 1));
                    params.add("orderby", sort.getProperty());
                    params.add("asc", String.valueOf(sort.isAscending()));

                    return urlFor(ListLightPage.class, params);
                }

                /*
                 * (non-Javadoc)
                 * 
                 * @see
                 * org.apache.wicket.markup.html.link.Link#getStatelessHint
                 * ()
                 */
                @Override
                protected boolean getStatelessHint() {
                    return true;
                }

            };
        }

        /*
         * (non-Javadoc)
         * 
         * @see
         * org.apache.wicket.markup.html.navigation.paging.PagingNavigator
         * #newPagingNavigationLink(java.lang.String,
         * org.apache.wicket.markup.html.navigation.paging.IPageable, int)
         */
        @Override
        protected AbstractLink newPagingNavigationLink(final String id, final IPageable pageable,
                final int pageNumber) {
            return new MyPagingNavigationLink<Void>(id, pageable, pageNumber, dp);
        }

        /*
         * (non-Javadoc)
         * 
         * @see
         * org.apache.wicket.markup.html.navigation.paging.PagingNavigator
         * #newNavigation
         * (org.apache.wicket.markup.html.navigation.paging.IPageable,
         * org.apache
         * .wicket.markup.html.navigation.paging.IPagingLabelProvider)
         */
        @Override
        protected PagingNavigation newNavigation(final IPageable pageable,
                final IPagingLabelProvider labelProvider) {
            return new PagingNavigation("navigation", pageable, labelProvider) {
                private static final long serialVersionUID = 1L;

                /*
                 * (non-Javadoc)
                 * 
                 * @seeorg.apache.wicket.markup.html.navigation.paging.
                 * PagingNavigation
                 * #newPagingNavigationLink(java.lang.String,
                 * org.apache.wicket
                 * .markup.html.navigation.paging.IPageable, int)
                 */
                @Override
                protected AbstractLink newPagingNavigationLink(final String id, final IPageable pageable,
                        final int pageIndex) {
                    return new MyPagingNavigationLink<Void>(id, pageable, pageIndex, dp);
                }

            };
        }

    });
}

From source file:de.objectcode.pages.Main.java

License:Apache License

public Main(final PageParameters parameters) {
    hotelSearch = ((HotelBookingWebSession) this.getSession()).getHotelSearchingAction();
    hotelBooking = ((HotelBookingWebSession) this.getSession()).getHotelBookingAction();
    //     ((HotelBookingWebSession)this.getSession()).setBookings(
    //           bookingDao.findBookingsByUserId(((HotelBookingWebSession)this.getSession()).getUser().getUsername()));
    bookings = ((HotelBookingWebSession) this.getSession()).getBookings();

    Template body = new Template("body");
    add(body);// w  ww.ja  v a  2s.  co  m
    hotelSearchForm = new HotelSearchForm("searchCriteria");
    body.add(hotelSearchForm);

    messages = new FeedbackPanel("messages", new ContainerFeedbackMessageFilter(this)).setOutputMarkupId(true);
    body.add(messages);

    /*
     * Hotel Search results
     */
    noHotelsFound = new Label("noResults", "No Hotels Found") {
        /**
         * Only display the message if no hotels are found
         * 
         */
        @Override
        public boolean isVisible() {
            return hotelSearch.getHotels().size() == 0;
        }
    };
    body.add(noHotelsFound.setOutputMarkupId(true));
    hotelDataView = new DataView("hotel", new SimpleDataProvider() {
        public Iterator iterator(int from, int count) {
            return hotelSearch.getHotels().subList(from, from + count).iterator();
        }

        public int size() {
            return hotelSearch.getHotels().size();
        }

    }) {
        /**
         * You specify the tr in the html, and populate each one here
         */
        @Override
        protected void populateItem(Item item) {
            final Hotel hotel = (Hotel) item.getModelObject();
            item.add(new Label("hotelName", hotel.getName()));
            item.add(new Label("hotelAddress", hotel.getAddress()));
            item.add(new Label("hotelCityStateCountry",
                    hotel.getCity() + ", " + hotel.getState() + ", " + hotel.getCountry()));
            item.add(new Label("hotelZip", hotel.getZip()));
            item.add(new Link("viewHotel") {

                @Override
                public void onClick() {
                    hotelBooking.selectHotel(hotel);
                    setResponsePage(new de.objectcode.pages.Hotel(new PageParameters()));
                }

            });
        }

    };

    // Set the maximum items per page
    hotelDataView.setItemsPerPage(hotelSearchForm.getPageSize());
    hotelDataView.setOutputMarkupId(true);
    hotels = new WebMarkupContainer("hotels");
    hotels.add(hotelDataView).setOutputMarkupId(true);

    // Add a pager
    hotels.add(new AjaxPagingNavigator("hotelPager", hotelDataView) {
        @Override
        public boolean isVisible() {
            return hotelDataView.isVisible();
        }

    });

    body.add(hotels);

    /*
     * Existing hotel booking
     */
    bookedHotelDataView = new DataView("bookedHotel", new SimpleDataProvider() {
        public Iterator iterator(int from, int count) {
            return bookings.subList(from, from + count).iterator();
        }

        public int size() {
            return bookings.size();
        }

    }) {

        @Override
        protected void populateItem(Item item) {
            final Booking booking = (Booking) item.getModelObject();
            item.add(new Label("hotelName", booking.getHotel().getName()));
            item.add(new Label("hotelAddress", booking.getHotel().getAddress()));
            item.add(new Label("hotelCityStateCountry", booking.getHotel().getCity() + ", "
                    + booking.getHotel().getState() + ", " + booking.getHotel().getState()));
            item.add(new Label("hotelCheckInDate", booking.getCheckinDate().toString()));
            item.add(new Label("hotelCheckOutDate", booking.getCheckoutDate().toString()));
            item.add(new Label("hotelConfirmationNumber", booking.getId().toString()));
            item.add(new Link("cancel") {

                @Override
                public void onClick() {
                    bookingDao.cancelBooking(booking);
                    bookings = bookingDao.findBookingsByUserId(
                            ((HotelBookingWebSession) this.getSession()).getUser().getUsername());

                }

            });
        }

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

    };
    body.add(bookedHotelDataView);
    body.add(new Label("noHotelsBooked", "No Bookings Found") {
        @Override
        public boolean isVisible() {
            return bookings.size() == 0;
        }
    });
}

From source file:de.voolk.marbles.web.pages.admin.auth.ListUserPage.java

License:Open Source License

@SuppressWarnings("serial")
public ListUserPage() {
    action = new WebComponent("action");
    add(action);/*from w  w  w .  ja  v a2s . com*/
    add(new DataView<User>("userList", new UserDataProvider(authentificationService)) {
        @SuppressWarnings("rawtypes")
        private Link removeLink;

        @Override
        @SuppressWarnings("rawtypes")
        protected void populateItem(Item<User> userItem) {
            final User user = userItem.getModelObject();
            removeLink = new Link("remove") {
                @Override
                public void onClick() {
                    selectedUsertoRemove = user;
                    ValueMap info = new ValueMap();
                    info.put("user", user.getName());
                    new ReplacingConfirmationActionPanel(action, new StringResourceModel("remove.confirmation",
                            ListUserPage.this, new Model<ValueMap>(info))) {
                        @Override
                        public void execute() {
                            pageService.removeAllPages(user);
                            authentificationService.removeUser(user.getId());
                            setResponsePage(ListUserPage.this.getClass());
                        }

                        @Override
                        public void cancel() {
                            super.cancel();
                            selectedUsertoRemove = null;
                        }
                    };
                }
            };
            String crossPic = "cross.png";
            if (authentificationService.userHasRole(user, IdentSession.SYSTEM_ROLE)
                    || selectedUsertoRemove != null) {
                removeLink.setEnabled(false);
                crossPic = "cross_gray.png";
            }
            removeLink.add(new Image("crossImg", new ResourceReference(ListUserPage.class, crossPic)));
            userItem.add(removeLink);
            userItem.add(new Label("id", String.valueOf(user.getId())));
            userItem.add(new Label("name", user.getName()));
            userItem.add(new Label("email", user.getEmail()));
        }
    });
}

From source file:eu.uqasar.web.pages.admin.meta.MetaDataEditPanel.java

License:Apache License

private DataView<T> getListing() {
    return new DataView<T>("data", getMetaDataProvider(this.clazz)) {
        @Override//from  ww  w  . j  ava2s  .  c o m
        protected void populateItem(Item<T> item) {
            Check<T> check = new Check<>("check", item.getModel(), checkGroup);
            item.add(check);
            TextField nameField = new TextField("name", new PropertyModel(item.getModel(), "name"));
            item.add(new InputBeanValidationBorder<>("nameValidationBorder", nameField));
            item.add(newIsInUseIndicator("inUse", item.getModelObject()));
        }
    };
}

From source file:eu.uqasar.web.pages.admin.settings.panels.LdapEntityListPanel.java

License:Apache License

@Override
protected void onConfigure() {
    super.onConfigure();
    checkGroup = newCheckGroup();//from w  ww  .  j  a  v a  2 s. c o  m
    checkGroupSelector = new CheckGroupSelector("entityGroupSelector", checkGroup);
    provider.setMaximumNoOfEntities(maxEntitiesToShow);
    dataView = new DataView<Entity>("entities", provider) {
        @Override
        protected void populateItem(Item<Entity> item) {
            Check<Entity> check = new Check<>("check", item.getModel(), checkGroup);
            check.setVisible(isSelectionEnabled());
            item.add(check);
            LdapEntityListPanel.this.populateItem(item, check);
        }
    };
    tableContainer = new WebMarkupContainer("tableContainer");
    tableContainer.addOrReplace(dataView);
    listHeader = new WebMarkupContainer("listHeader");
    listHeader.addOrReplace(checkGroupSelector);
    tableContainer.addOrReplace(listHeader);
    tableContainer.addOrReplace(
            new Label("javascript", headerFixed ? getJavaScript() : "").setEscapeModelStrings(false));
    checkGroup.addOrReplace(tableContainer.setOutputMarkupId(true));
    addOrReplace(checkGroup);

    checkGroupSelector.setVisible(this.selectionEnabled);
    tableContainer.setVisible(dataView.getItemCount() > 0);
    if (!StringUtils.isEmpty(getContainerCSSClass())) {
        tableContainer.add(new AttributeAppender("class", getContainerCSSClass()));
    }
    if (!StringUtils.isEmpty(getContainerCSSClass())) {
        listHeader.add(new AttributeAppender("class", getListHeaderCSSClass()));
    }
}

From source file:eu.uqasar.web.pages.admin.settings.panels.LdapGroupListPanel.java

License:Apache License

private DataView<LdapUser> newGroupMembersListView(LdapGroup group) {
    List<LdapUser> users;/* ww w . j av  a 2 s  . c o  m*/
    try {
        users = group.getMembers();
    } catch (NamingException e) {
        logger.warn(e.getMessage(), e);
        users = new ArrayList<>(0);
    }
    DataView<LdapUser> members = new DataView<LdapUser>("membersList", new LdapGroupUsersProvider(users)) {

        @Override
        protected void populateItem(Item<LdapUser> item) {
            LdapUser user = item.getModelObject();
            WebMarkupContainer container = new WebMarkupContainer("member");
            ExternalLink mail = new ExternalLink("mail", Model.of("mailto:" + user.getMail()),
                    new PropertyModel(user, "mail"));
            Label userName = new Label("username", new PropertyModel(user, "userName"));
            final String fullName = user.getFullName();
            Label fullNameLabel = new Label("fullname", Model.of(fullName));
            fullNameLabel.setVisible(fullName != null);
            container.add(mail);
            container.add(userName);
            container.add(fullNameLabel);
            item.add(container);
        }
    };
    members.setOutputMarkupId(true);
    return members;
}

From source file:eu.uqasar.web.pages.admin.teams.panels.EditTeamPanel.java

License:Apache License

public EditTeamPanel(final String markupId, final StyledFeedbackPanel feedbackPanel, final Team team) {
    super(markupId);
    this.team = team;
    Form<Team> formEdit = new InputValidationForm<>("form.edit", Model.of(team));
    nameField = new TextField<>("name", new PropertyModel<String>(this.team, "name"));
    InputBorder<String> serverValidationBorder = new InputBorder<>("nameValidationBorder", nameField,
            new StringResourceModel("label.name", this, null));
    formEdit.add(serverValidationBorder);
    add(formEdit);//www  . j  ava2 s .  co  m

    Form<TeamMembership> formAdd = new InputValidationForm<>("form.add", Model.of(membership));
    AutoCompleteSettings settings = new AutoCompleteSettings().setPreselect(true).setShowListOnFocusGain(true)
            .setShowListOnEmptyInput(true);
    AutoCompleteTextField<User> userComplete = new AutoCompleteTextField<User>("add.userName",
            new PropertyModel(membership, "user"), User.class, getAutocompleteRenderer(), settings) {

        @Override
        protected Iterator<User> getChoices(String input) {
            return getTeamableUsers(input);
        }

        @Override
        public <User> IConverter<User> getConverter(Class<User> type) {
            return (IConverter<User>) getAutocompleteConverter();
        }
    };

    DropDownChoice<Role> userRole = new DropDownChoice<>("add.userRole", new PropertyModel(membership, "role"),
            Arrays.asList(Role.teamAssignableRoles()));
    userRole.setNullValid(false);
    AjaxSubmitLink addMember = new AjaxSubmitLink("add.member", formAdd) {

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

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            TeamMembership membership = (TeamMembership) form.getModelObject();
            EditTeamPanel.this.team.getMembers().add(membership);
            teamMembersList.setModelObject(EditTeamPanel.this.team);
            target.add(teamMembersList);
        }
    };
    addMember.add(
            new Label("button.add.save", new StringResourceModel("button.add.save", this, Model.of(team))));
    formAdd.add(addMember);
    formAdd.add(userRole);
    formAdd.add(userComplete);
    add(formAdd);

    teamMembersList = new InputValidationForm<>("form.list", Model.of(team));
    DataView<TeamMembership> usersView = new DataView<TeamMembership>("members", getMembershipProvider(team)) {
        @Override
        protected void populateItem(Item<TeamMembership> item) {
            final TeamMembership team = item.getModelObject();
            Check<TeamMembership> check = newDeleteCheck(item);
            List<Role> roles = new ArrayList<>(Arrays.asList(Role.teamAssignableRoles()));
            item.add(check);
            item.add(new Label("td.membername", new PropertyModel<>(team.getUser(), "fullName")));
            DropDownChoice<Role> roleSelector = new DropDownChoice<>("td.role",
                    new PropertyModel<Role>(team, "role"), roles);
            roleSelector.setNullValid(false);
            item.add(roleSelector);
            item.setOutputMarkupId(true);
        }
    };
    teamMembersList.add(teamGroup = newCheckGroup());
    final WebMarkupContainer usersContainer = new WebMarkupContainer("membersContainer");
    teamGroup.add(usersContainer.setOutputMarkupId(true));
    CheckGroupSelector checkGroupSelector = new CheckGroupSelector("memberGroupSelector", teamGroup);
    usersContainer.add(checkGroupSelector);
    usersContainer.add(usersView);
    usersContainer.add(deleteSelectedButton = newDeleteSelectedButton(teamGroup));
    deleteSelectedButton.add(new Label("td.members.actions.batch.remove",
            new StringResourceModel("td.members.actions.batch.remove", this, Model.of(team))));
    add(teamMembersList.setOutputMarkupId(true));

    add(new Label("label.add.title", new StringResourceModel("label.add.title", this, Model.of(team))));
    add(new Label("label.list.title", new StringResourceModel("label.list.title", this, Model.of(team))));
}

From source file:eu.uqasar.web.pages.admin.teams.TeamEditPage.java

License:Apache License

private DataView<TeamMembership> getTeamMembersListing() {
    return new DataView<TeamMembership>("members", getMembershipProvider(team)) {
        @Override//from   w  ww.  java 2  s .  co m
        protected void populateItem(Item<TeamMembership> item) {
            final TeamMembership team = item.getModelObject();
            Check<TeamMembership> check = new Check<>("memberCheck", item.getModel(), teamGroup);
            List<Role> roles = new ArrayList<>(Arrays.asList(Role.teamAssignableRoles()));
            item.add(check);
            BookmarkablePageLink<Object> editMemberLink = new BookmarkablePageLink<>("link.edit.member",
                    UserEditPage.class, new PageParameters().add("id", team.getUser().getId()));
            editMemberLink.add(new Label("td.membername", new PropertyModel<>(team.getUser(), "fullName")));
            item.add(editMemberLink);
            DropDownChoice<Role> roleSelector = new DropDownChoice<>("td.role",
                    new PropertyModel<Role>(team, "role"), roles);
            roleSelector.setNullValid(false);
            item.add(roleSelector);
            item.setOutputMarkupId(true);
        }
    };
}