Example usage for org.apache.wicket.extensions.markup.html.repeater.data.table AbstractColumn AbstractColumn

List of usage examples for org.apache.wicket.extensions.markup.html.repeater.data.table AbstractColumn AbstractColumn

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.markup.html.repeater.data.table AbstractColumn AbstractColumn.

Prototype

public AbstractColumn(final IModel<String> displayModel) 

Source Link

Usage

From source file:com.cubeia.backoffice.web.user.UserList.java

License:Open Source License

/**
* Constructor that is invoked when page is invoked without a session.
* 
* @param parameters/*w  ww.j a v  a  2 s.  c o  m*/
*            Page parameters
*/
public UserList(final PageParameters parameters) {
    final Form<?> searchForm = new Form<UserList>("searchForm", new CompoundPropertyModel<UserList>(this));
    final TextField<String> idField = new TextField<String>("userId");
    searchForm.add(idField);
    final TextField<String> userNameField = new TextField<String>("name");
    searchForm.add(userNameField);
    searchForm.add(new Button("clearForm") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit() {
            super.onSubmit();
            idField.clearInput();
            userNameField.clearInput();
        }
    });
    add(searchForm);
    add(new FeedbackPanel("feedback"));

    final UsersDataProvider dataProvider = new UsersDataProvider();
    List<IColumn<User, String>> columns = new ArrayList<IColumn<User, String>>();

    columns.add(new AbstractColumn<User, String>(Model.of("User Id")) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<User>> item, String componentId, IModel<User> model) {
            Long userId = model.getObject().getUserId();
            LabelLinkPanel panel = new LabelLinkPanel(componentId, "" + userId, UserSummary.class,
                    params(UserSummary.PARAM_USER_ID, userId));
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return true;
        }

        @Override
        public String getSortProperty() {
            return UserOrder.ID.name();
        }
    });
    columns.add(new PropertyColumn<User, String>(Model.of("XId"), "externalUserId"));
    columns.add(
            new PropertyColumn<User, String>(Model.of("User name"), UserOrder.USER_NAME.name(), "userName"));
    columns.add(new PropertyColumn<User, String>(Model.of("Status"), UserOrder.STATUS.name(), "status"));
    //        columns.add(new PropertyColumn<User,String>(Model.of("First name"), "userInformation.firstName"));
    //        columns.add(new PropertyColumn<User,String>(Model.of("Last name"), "userInformation.lastName"));
    //        columns.add(new PropertyColumn<User,String>(Model.of("Country"), UserOrder.COUNTRY.name(), "userInformation.country"));
    columns.add(new PropertyColumn<User, String>(Model.of("Ext. Username"), "attributes.externalUsername"));
    columns.add(new PropertyColumn<User, String>(Model.of("Screename"), "attributes.screenname"));

    AjaxFallbackDefaultDataTable<User, String> userTable = new AjaxFallbackDefaultDataTable<User, String>(
            "userTable", columns, dataProvider, 20);
    add(userTable);

    final ModalWindow modal = new ModalWindow("modal");
    modal.setContent(new UserReportPanel(modal.getContentId(), modal));
    modal.setTitle("Generate report");
    modal.setCookieName("modal");
    modal.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
    modal.setInitialWidth(265);
    modal.setInitialHeight(200);

    add(modal);
    add(new AjaxLink<Void>("showReportPanel") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            List<User> users = getUserList(getUserId(), getName(), 0, Integer.MAX_VALUE,
                    dataProvider.getSort().getProperty(), dataProvider.getSort().isAscending()).getUsers();
            HttpServletRequest request = (HttpServletRequest) getRequest().getContainerRequest();
            request.getSession().setAttribute(ReportServlet.REPORTS_COLLECTION_DATA_SOURCE, users);
            modal.show(target);
        }
    });
}

From source file:com.cubeia.backoffice.web.wallet.AccountList.java

License:Open Source License

/**
* Constructor that is invoked when page is invoked without a session.
* 
* @param parameters/*  www  .j  ava2 s . c o m*/
*            Page parameters
*/
public AccountList(final PageParameters parameters) {
    Form<AccountList> searchForm = new Form<AccountList>("searchForm",
            new CompoundPropertyModel<AccountList>(this));
    TextField<Long> idField = new TextField<Long>("userId");
    searchForm.add(idField);
    TextField<Long> userNameField = new TextField<Long>("accountId");
    searchForm.add(userNameField);

    final CheckBoxMultipleChoice<AccountStatus> statusesChoice = new CheckBoxMultipleChoice<AccountStatus>(
            "includeStatuses", Arrays.asList(AccountStatus.values()));
    statusesChoice.setSuffix(" ");
    statusesChoice.add(new IValidator<Collection<AccountStatus>>() {
        private static final long serialVersionUID = 1L;

        @Override
        public void validate(IValidatable<Collection<AccountStatus>> validatable) {
            if (statusesChoice.getInputAsArray() == null) {
                ValidationError error = new ValidationError().setMessage("Select one or more status");
                validatable.error(error);
            }
        }

    });

    searchForm.add(statusesChoice);

    CheckBoxMultipleChoice<AccountType> typesChoice = new CheckBoxMultipleChoice<AccountType>("includeTypes",
            asList(AccountType.values()));
    typesChoice.setSuffix(" ");
    searchForm.add(typesChoice);

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

    ISortableDataProvider<Account, String> dataProvider = new AccountDataProvider();
    ArrayList<IColumn<Account, String>> columns = new ArrayList<IColumn<Account, String>>();

    columns.add(new AbstractColumn<Account, String>(new Model<String>("Account Id")) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<Account>> item, String componentId,
                IModel<Account> model) {
            Account account = model.getObject();
            Long accountId = account.getId();
            LabelLinkPanel panel = new LabelLinkPanel(componentId, "" + accountId,
                    "details for account id " + accountId, AccountDetails.class,
                    params(AccountDetails.PARAM_ACCOUNT_ID, accountId));
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return true;
        }

        @Override
        public String getSortProperty() {
            return AccountsOrder.ID.name();
        }
    });

    columns.add(new AbstractColumn<Account, String>(new Model<String>("User id")) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<Account>> item, String componentId,
                IModel<Account> model) {
            Account account = model.getObject();
            Long userId = account.getUserId();
            Component panel = new LabelLinkPanel(componentId, "" + userId, UserSummary.class,
                    params(UserSummary.PARAM_USER_ID, userId)).setVisible(userId != null);
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return true;
        }

        @Override
        public String getSortProperty() {
            return AccountsOrder.USER_ID.name();
        }
    });

    columns.add(new PropertyColumn<Account, String>(new Model<String>("Account name"),
            AccountsOrder.ACCOUNT_NAME.name(), "information.name"));
    columns.add(new PropertyColumn<Account, String>(new Model<String>("Status"), AccountsOrder.STATUS.name(),
            "status"));
    columns.add(
            new PropertyColumn<Account, String>(new Model<String>("Type"), AccountsOrder.TYPE.name(), "type"));
    columns.add(new PropertyColumn<Account, String>(new Model<String>("Currency"), "currencyCode"));
    columns.add(new DatePropertyColumn<Account, String>(new Model<String>("Creation date"),
            AccountsOrder.CREATION_DATE.name(), "created"));
    columns.add(new DatePropertyColumn<Account, String>(new Model<String>("Close date"),
            AccountsOrder.CLOSE_DATE.name(), "closed"));
    columns.add(new AbstractColumn<Account, String>(new Model<String>("Actions")) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<Account>> item, String componentId,
                IModel<Account> model) {
            Account account = model.getObject();
            Long accountId = account.getId();
            LabelLinkPanel panel = new LabelLinkPanel(componentId, "transactions",
                    "transactions involving account id " + accountId, TransactionList.class,
                    params(TransactionList.PARAM_ACCOUNT_ID, accountId));
            item.add(panel);
        }
    });

    AjaxFallbackDefaultDataTable<Account, String> userTable = new AjaxFallbackDefaultDataTable<Account, String>(
            "accountTable", columns, dataProvider, 20);
    add(userTable);
}

From source file:com.cubeia.games.poker.admin.wicket.pages.history.HandHistory.java

License:Open Source License

private List<IColumn<HistoricHand, String>> createColumns() {
    List<IColumn<HistoricHand, String>> columns = new ArrayList<IColumn<HistoricHand, String>>();

    // Add column with clickable hand ids.
    columns.add(new AbstractColumn<HistoricHand, String>(new Model<String>("Hand id")) {
        private static final long serialVersionUID = 1L;

        @Override/*  w  w  w.  j a  v  a 2  s.com*/
        public void populateItem(Item<ICellPopulator<HistoricHand>> item, String componentId,
                IModel<HistoricHand> model) {
            HistoricHand hand = model.getObject();
            String handId = hand.getId();
            Component panel = new LabelLinkPanel(componentId, "" + handId, ShowHand.class,
                    ParamBuilder.params("handId", handId));
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }

    });
    // columns.add(new PropertyColumn<HistoricHand>(Model.of("Hand id"), "handId.handId"));
    columns.add(new PropertyColumn<HistoricHand, String>(Model.of("Table id"), "table.tableId"));
    columns.add(new PropertyColumn<HistoricHand, String>(Model.of("Table integration id"),
            "table.tableIntegrationId"));
    columns.add(new PropertyColumn<HistoricHand, String>(Model.of("Table name"), "table.tableName"));
    columns.add(new AbstractColumn<HistoricHand, String>(new Model<String>("Start date")) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<HistoricHand>> item, String componentId,
                IModel<HistoricHand> model) {
            HistoricHand hand = model.getObject();
            item.add(new DatePanel(componentId, hand.getStartTime()));
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });
    columns.add(new AbstractColumn<HistoricHand, String>(new Model<String>("End date")) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<HistoricHand>> item, String componentId,
                IModel<HistoricHand> model) {
            HistoricHand hand = model.getObject();
            item.add(new DatePanel(componentId, hand.getEndTime()));
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });
    columns.add(new PropertyColumn<HistoricHand, String>(Model.of("Total rake"), "results.totalRake"));

    return columns;
}

From source file:com.cubeia.games.poker.admin.wicket.pages.tables.ListTables.java

License:Open Source License

/**
 * Constructor that is invoked when page is invoked without a session.
 *
 * @param parameters Page parameters/*from w  w w .  j a  v a 2 s. c  o m*/
 */
@SuppressWarnings({ "serial", "unchecked", "rawtypes" })
public ListTables(final PageParameters parameters) {
    super(parameters);
    SortableDataProviderExtension dataProvider = new SortableDataProviderExtension();
    ArrayList<AbstractColumn<TableConfigTemplate, String>> columns = new ArrayList<AbstractColumn<TableConfigTemplate, String>>();
    columns.add(new AbstractColumn<TableConfigTemplate, String>(new Model<String>("Id")) {

        @Override
        public void populateItem(Item<ICellPopulator<TableConfigTemplate>> item, String componentId,
                IModel<TableConfigTemplate> model) {
            TableConfigTemplate table = model.getObject();
            Component panel = new LabelLinkPanel(componentId, "" + table.getId(), EditTable.class,
                    params("templateId", table.getId()));
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });

    columns.add(new PropertyColumn<TableConfigTemplate, String>(new Model<String>("Name"), "name"));
    columns.add(new PropertyColumn<TableConfigTemplate, String>(new Model<String>("Seats"), "seats"));
    columns.add(new PropertyColumn<TableConfigTemplate, String>(new Model<String>("Ante"), "ante"));
    columns.add(new PropertyColumn<TableConfigTemplate, String>(new Model<String>("Variant"), "variant"));
    columns.add(new PropertyColumn<TableConfigTemplate, String>(new Model<String>("Timing"), "timing.name"));
    columns.add(new PropertyColumn<TableConfigTemplate, String>(new Model<String>("Rake system"),
            "rakeSettings.name"));

    columns.add(new AbstractColumn<TableConfigTemplate, String>(new Model<String>("Delete")) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<TableConfigTemplate>> item, String componentId,
                IModel<TableConfigTemplate> model) {
            TableConfigTemplate table = model.getObject();
            Component panel = new DeleteLinkPanel(componentId, TableConfigTemplate.class, table.getId(),
                    ListTables.class);
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });

    DefaultDataTable table = new DefaultDataTable("tableTable", columns, dataProvider, 20);
    add(table);

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

From source file:com.cubeia.games.poker.admin.wicket.pages.tournaments.blinds.ListBlindsStructures.java

License:Open Source License

@SuppressWarnings({ "rawtypes", "serial", "unchecked" })
public ListBlindsStructures(final PageParameters parameters) {
    super(parameters);
    SortableDataProviderExtension dataProvider = new SortableDataProviderExtension();
    ArrayList<AbstractColumn> columns = new ArrayList<AbstractColumn>();

    columns.add(new AbstractColumn<BlindsStructure, String>(new Model<String>("Id")) {
        @Override/*from  w  w w  .j  ava 2  s .c  o m*/
        public void populateItem(Item<ICellPopulator<BlindsStructure>> item, String componentId,
                IModel<BlindsStructure> model) {
            BlindsStructure blindsStructure = model.getObject();
            Component panel = new LabelLinkPanel(componentId, "" + blindsStructure.getId(),
                    CreateOrEditBlindsStructure.class,
                    ParamBuilder.params("structureId", blindsStructure.getId()));
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });

    columns.add(new PropertyColumn(new Model<String>("Name"), "name"));
    columns.add(new AbstractColumn<BlindsStructure, String>(new Model<String>("Delete")) {

        @Override
        public void populateItem(Item<ICellPopulator<BlindsStructure>> item, String componentId,
                IModel<BlindsStructure> model) {
            BlindsStructure table = model.getObject();
            Component panel = new DeleteLinkPanel(componentId, BlindsStructure.class, table.getId(),
                    ListBlindsStructures.class);
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });

    DefaultDataTable<BlindsStructure, String> table = new DefaultDataTable("blindsStructureTable", columns,
            dataProvider, 20);
    add(table);
}

From source file:com.cubeia.games.poker.admin.wicket.pages.tournaments.history.ShowTournament.java

License:Open Source License

private void addTables(final HistoricTournament tournament) {
    List<IColumn<String, String>> columns = new ArrayList<IColumn<String, String>>();
    columns.add(new AbstractColumn<String, String>(new Model<String>("tableId")) {
        private static final long serialVersionUID = 1L;

        @Override//from w ww  . jav  a  2 s. c o m
        public void populateItem(Item<ICellPopulator<String>> item, String componentId, IModel<String> model) {
            String tableId = model.getObject();
            Component panel = new LabelLinkPanel(componentId, tableId, HandHistory.class,
                    ParamBuilder.params("tableId", tableId));
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }

    });
    add(new AjaxFallbackDefaultDataTable<String, String>("tables", columns,
            new TableProvider(tournament.getTables()), 8));
}

From source file:com.cubeia.games.poker.admin.wicket.pages.tournaments.payouts.ListPayoutStructures.java

License:Open Source License

@SuppressWarnings({ "rawtypes", "unchecked" })
public ListPayoutStructures(final PageParameters parameters) {
    super(parameters);
    SortableDataProviderExtension dataProvider = new SortableDataProviderExtension();
    ArrayList<AbstractColumn> columns = new ArrayList<AbstractColumn>();

    columns.add(new AbstractColumn<PayoutStructure, String>(new Model<String>("Id")) {
        @Override/*from   w  w  w. j av a2s. c o  m*/
        public void populateItem(Item<ICellPopulator<PayoutStructure>> item, String componentId,
                IModel<PayoutStructure> model) {
            PayoutStructure structure = model.getObject();
            Component panel = new LabelLinkPanel(componentId, "" + structure.getId(), ViewPayoutStructure.class,
                    ParamBuilder.params("structureId", structure.getId()));
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });

    columns.add(new PropertyColumn<String, String>(new Model<String>("Name"), "name"));
    columns.add(new AbstractColumn<PayoutStructure, String>(new Model<String>("Delete")) {

        @Override
        public void populateItem(Item<ICellPopulator<PayoutStructure>> item, String componentId,
                IModel<PayoutStructure> model) {
            PayoutStructure table = model.getObject();
            Component panel = new DeleteLinkPanel(componentId, PayoutStructure.class, table.getId(),
                    ListPayoutStructures.class);
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });

    DefaultDataTable<PayoutStructure, String> table = new DefaultDataTable("payouts", columns, dataProvider,
            20);
    add(table);
}

From source file:com.cubeia.games.poker.admin.wicket.pages.tournaments.scheduled.ListTournaments.java

License:Open Source License

/**
 * Constructor that is invoked when page is invoked without a session.
 *
 * @param parameters Page parameters/* w  w w. ja  v a2s  .  c  o m*/
 */
@SuppressWarnings({ "rawtypes", "serial", "unchecked" })
public ListTournaments(final PageParameters parameters) {
    super(parameters);
    SortableDataProviderExtension dataProvider = new SortableDataProviderExtension();
    ArrayList<AbstractColumn> columns = new ArrayList<AbstractColumn>();

    columns.add(new AbstractColumn<ScheduledTournamentConfiguration, String>(new Model<String>("Id")) {
        @Override
        public void populateItem(Item<ICellPopulator<ScheduledTournamentConfiguration>> item,
                String componentId, IModel<ScheduledTournamentConfiguration> model) {
            ScheduledTournamentConfiguration tournament = model.getObject();
            Component panel = new LabelLinkPanel(componentId, "" + tournament.getId(), EditTournament.class,
                    ParamBuilder.params("tournamentId", tournament.getId()));
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });

    columns.add(new PropertyColumn(new Model<String>("Name"), "configuration.name"));
    columns.add(new PropertyColumn(new Model<String>("Seats"), "configuration.seatsPerTable"));
    columns.add(new PropertyColumn(new Model<String>("Min"), "configuration.minPlayers"));
    columns.add(new PropertyColumn(new Model<String>("Max"), "configuration.maxPlayers"));
    columns.add(new PropertyColumn(new Model<String>("Buy-in"), "configuration.buyIn"));
    columns.add(new PropertyColumn(new Model<String>("Fee"), "configuration.fee"));

    columns.add(new AbstractColumn<ScheduledTournamentConfiguration, String>(new Model<String>("Delete")) {

        @Override
        public void populateItem(Item<ICellPopulator<ScheduledTournamentConfiguration>> item,
                String componentId, IModel<ScheduledTournamentConfiguration> model) {
            ScheduledTournamentConfiguration tournament = model.getObject();
            Component panel = new ArchiveLinkPanel(componentId,
                    new TournamentArchiver(tournament.getConfiguration()), tournament, ListTournaments.class);
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });

    DefaultDataTable<ScheduledTournamentConfiguration, String> userTable = new DefaultDataTable(
            "tournamentTable", columns, dataProvider, 20);
    add(userTable);
}

From source file:com.cubeia.games.poker.admin.wicket.pages.tournaments.sitandgo.ListSitAndGoTournaments.java

License:Open Source License

/**
 * Constructor that is invoked when page is invoked without a session.
 *
 * @param parameters Page parameters/*  w w  w. j a  va 2 s.co  m*/
 */
@SuppressWarnings({ "rawtypes", "unchecked", "serial" })
public ListSitAndGoTournaments(final PageParameters parameters) {
    super(parameters);
    SortableDataProviderExtension dataProvider = new SortableDataProviderExtension();
    ArrayList<AbstractColumn> columns = new ArrayList<AbstractColumn>();

    columns.add(new AbstractColumn<SitAndGoConfiguration, String>(new Model<String>("Id")) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<SitAndGoConfiguration>> item, String componentId,
                IModel<SitAndGoConfiguration> model) {
            SitAndGoConfiguration tournament = model.getObject();
            Component panel = new LabelLinkPanel(componentId, "" + tournament.getId(), EditSitAndGo.class,
                    ParamBuilder.params("tournamentId", tournament.getId()));
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });

    columns.add(new PropertyColumn(new Model("Name"), "configuration.name"));
    columns.add(new PropertyColumn(new Model("Seats"), "configuration.seatsPerTable"));
    columns.add(new PropertyColumn(new Model("Min"), "configuration.minPlayers"));
    columns.add(new PropertyColumn(new Model("Max"), "configuration.maxPlayers"));
    columns.add(new PropertyColumn(new Model<String>("Buy-in"), "configuration.buyIn"));
    columns.add(new PropertyColumn(new Model<String>("Fee"), "configuration.fee"));

    columns.add(new AbstractColumn<SitAndGoConfiguration, String>(new Model<String>("Delete")) {

        @Override
        public void populateItem(Item<ICellPopulator<SitAndGoConfiguration>> item, String componentId,
                IModel<SitAndGoConfiguration> model) {
            SitAndGoConfiguration sitAndGo = model.getObject();
            Component panel = new ArchiveLinkPanel(componentId,
                    new TournamentArchiver(sitAndGo.getConfiguration()), sitAndGo,
                    ListSitAndGoTournaments.class);
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return false;
        }
    });

    DefaultDataTable userTable = new DefaultDataTable("tournamentTable", columns, dataProvider, 20);
    add(userTable);
}

From source file:com.cubeia.games.poker.admin.wicket.pages.user.UserList.java

License:Open Source License

/**
* Constructor that is invoked when page is invoked without a session.
* 
* @param parameters/* ww w . j a v  a2 s. com*/
*            Page parameters
*/
public UserList(final PageParameters parameters) {
    super(parameters);
    final Form<?> searchForm = new Form<UserList>("searchForm", new CompoundPropertyModel<UserList>(this));
    final TextField<String> idField = new TextField<String>("userId");
    searchForm.add(idField);
    final TextField<String> userNameField = new TextField<String>("name");
    searchForm.add(userNameField);
    searchForm.add(new Button("clearForm") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit() {
            super.onSubmit();
            idField.clearInput();
            userNameField.clearInput();
        }
    });
    add(searchForm);
    add(new FeedbackPanel("feedback"));

    final UsersDataProvider dataProvider = new UsersDataProvider();
    List<IColumn<User, String>> columns = new ArrayList<IColumn<User, String>>();

    columns.add(new AbstractColumn<User, String>(Model.of("User Id")) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<User>> item, String componentId, IModel<User> model) {
            Long userId = model.getObject().getUserId();
            LabelLinkPanel panel = new LabelLinkPanel(componentId, "" + userId, UserSummary.class,
                    params(UserSummary.PARAM_USER_ID, userId));
            item.add(panel);
        }

        @Override
        public boolean isSortable() {
            return true;
        }

        @Override
        public String getSortProperty() {
            return UserOrder.ID.name();
        }
    });
    columns.add(new PropertyColumn<User, String>(Model.of("XId"), "externalUserId"));
    columns.add(
            new PropertyColumn<User, String>(Model.of("User name"), UserOrder.USER_NAME.name(), "userName"));
    columns.add(new PropertyColumn<User, String>(Model.of("Status"), UserOrder.STATUS.name(), "status"));
    //        columns.add(new PropertyColumn<User,String>(Model.of("First name"), "userInformation.firstName"));
    //        columns.add(new PropertyColumn<User,String>(Model.of("Last name"), "userInformation.lastName"));
    //        columns.add(new PropertyColumn<User,String>(Model.of("Country"), UserOrder.COUNTRY.name(), "userInformation.country"));
    columns.add(new PropertyColumn<User, String>(Model.of("Ext. Username"), "attributes.externalUsername"));
    columns.add(new PropertyColumn<User, String>(Model.of("Screename"), "attributes.screenname"));

    AjaxFallbackDefaultDataTable<User, String> userTable = new AjaxFallbackDefaultDataTable<User, String>(
            "userTable", columns, dataProvider, 20);
    add(userTable);

    final ModalWindow modal = new ModalWindow("modal");
    modal.setContent(new UserReportPanel(modal.getContentId(), modal));
    modal.setTitle("Generate report");
    modal.setCookieName("modal");
    modal.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
    modal.setInitialWidth(265);
    modal.setInitialHeight(200);

    add(modal);
    add(new AjaxLink<Void>("showReportPanel") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            List<User> users = getUserList(getUserId(), getName(), 0, Integer.MAX_VALUE,
                    dataProvider.getSort().getProperty(), dataProvider.getSort().isAscending()).getUsers();
            HttpServletRequest request = (HttpServletRequest) getRequest().getContainerRequest();
            request.getSession().setAttribute(ReportServlet.REPORTS_COLLECTION_DATA_SOURCE, users);
            modal.show(target);
        }
    });
}