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, final S sortProperty) 

Source Link

Usage

From source file:com.bestbuy.bbym.ise.drp.admin.hotlinks.HotlinkTablePanel.java

License:Apache License

public HotlinkTablePanel(FeedbackPanel feedbackPanel, String id) {
    super(id);//from w w  w.j a v a  2  s  . co  m

    this.feedbackPanel = feedbackPanel;
    hotlinkTablePanel = this;

    try {
        hotlinkTableProvider = new HotlinkTableDataProvider(
                hotlinkService.getHotlinkListByUserId(getDailyRhythmPortalSession().getDrpUser().getUserId()));
    } catch (ServiceException e) {
        String message = "An unexpected exception occured while attempting to get user hotlinks";
        processException(message, e, new PageParameters());
    }

    final List<IColumn<Hotlink>> columns = new ArrayList<IColumn<Hotlink>>();
    columns.add(new PropertyColumn<Hotlink>(new ResourceModel("hotlinkTablePanel.name.column"), "urlAlias",
            "urlAlias"));
    columns.add(new PropertyColumn<Hotlink>(new ResourceModel("hotlinkTablePanel.value.column"), "url", "url"));
    columns.add(new AbstractColumn<Hotlink>(new ResourceModel("hotlinkTablePanel.action.column"), "id") {

        private static final long serialVersionUID = 1L;

        @SuppressWarnings("rawtypes")
        @Override
        public void populateItem(Item cellItem, String componentId, IModel rowModel) {
            Hotlink row = (Hotlink) rowModel.getObject();
            cellItem.add(new HotlinkTablePanel.EditLinkPanel(componentId, rowModel, row));
        }
    });
    columns.add(new AbstractColumn<Hotlink>(new ResourceModel("hotlinkTablePanel.order.column"), "id") {

        private static final long serialVersionUID = 1L;

        @SuppressWarnings("rawtypes")
        @Override
        public void populateItem(Item cellItem, String componentId, IModel rowModel) {
            Hotlink row = (Hotlink) rowModel.getObject();
            cellItem.add(new HotlinkTablePanel.UpDownLinkPanel(componentId, rowModel, row));
        }
    });

    final DefaultDataTable<Hotlink> hotLinkTable = new DefaultDataTable<Hotlink>("hotlinkTable", columns,
            hotlinkTableProvider, 10);
    add(hotLinkTable);
}

From source file:com.evolveum.midpoint.web.page.admin.configuration.PageDebugList.java

License:Apache License

private List<IColumn> initColumns(final Class<? extends ObjectType> type) {
    List<IColumn> columns = new ArrayList<IColumn>();

    IColumn column = new CheckBoxHeaderColumn<ObjectType>();
    columns.add(column);/*from  ww  w.  j  a  v a  2 s.  com*/

    column = new LinkColumn<DebugObjectItem>(createStringResource("pageDebugList.name"), DebugObjectItem.F_NAME,
            DebugObjectItem.F_NAME) {

        @Override
        public void onClick(AjaxRequestTarget target, IModel<DebugObjectItem> rowModel) {
            DebugObjectItem object = rowModel.getObject();
            objectEditPerformed(target, object.getOid(), type);
        }
    };
    columns.add(column);

    columns.add(new PropertyColumn(createStringResource("pageDebugList.description"),
            DebugObjectItem.F_DESCRIPTION));

    if (ShadowType.class.isAssignableFrom(type)) {
        columns.add(new PropertyColumn(createStringResource("pageDebugList.resourceName"),
                DebugObjectItem.F_RESOURCE_NAME));
        columns.add(new PropertyColumn(createStringResource("pageDebugList.resourceType"),
                DebugObjectItem.F_RESOURCE_TYPE));
    }

    column = new AbstractColumn<DebugObjectItem, String>(new Model(), null) {

        @Override
        public String getCssClass() {
            return "debug-list-buttons";
        }

        @Override
        public void populateItem(Item<ICellPopulator<DebugObjectItem>> cellItem, String componentId,
                IModel<DebugObjectItem> rowModel) {
            cellItem.add(new DebugButtonPanel<DebugObjectItem>(componentId, rowModel) {

                @Override
                public void deletePerformed(AjaxRequestTarget target, IModel<DebugObjectItem> model) {
                    deleteSelected(target, model.getObject());
                }

                @Override
                public void exportPerformed(AjaxRequestTarget target, IModel<DebugObjectItem> model) {
                    exportSelected(target, model.getObject());
                }
            });
        }
    };
    columns.add(column);

    column = new InlineMenuHeaderColumn<InlineMenuable>(initInlineMenu()) {

        @Override
        public void populateItem(Item<ICellPopulator<InlineMenuable>> cellItem, String componentId,
                IModel<InlineMenuable> rowModel) {
            //we don't need row inline menu
            cellItem.add(new Label(componentId));
        }
    };
    columns.add(column);

    return columns;
}

From source file:com.evolveum.midpoint.web.page.admin.reports.PageCreatedReports.java

License:Apache License

private List<IColumn<SelectableBean<ReportOutputType>, String>> initColumns(
        final AjaxDownloadBehaviorFromStream ajaxDownloadBehavior) {
    List<IColumn<SelectableBean<ReportOutputType>, String>> columns = new ArrayList<>();

    IColumn column;//from ww w . j  ava2 s .c om

    column = new CheckBoxHeaderColumn();
    columns.add(column);

    column = new PropertyColumn(createStringResource("pageCreatedReports.table.name"), "name", "value.name");
    columns.add(column);

    column = new PropertyColumn(createStringResource("pageCreatedReports.table.description"),
            "value.description");
    columns.add(column);

    column = new AbstractColumn<SelectableBean<ReportOutputType>, String>(
            createStringResource("pageCreatedReports.table.time"), "createTimestamp") {

        @Override
        public void populateItem(Item<ICellPopulator<SelectableBean<ReportOutputType>>> cellItem,
                String componentId, final IModel<SelectableBean<ReportOutputType>> rowModel) {
            cellItem.add(new Label(componentId, new AbstractReadOnlyModel() {

                @Override
                public Object getObject() {
                    ReportOutputType object = rowModel.getObject().getValue();
                    MetadataType metadata = object.getMetadata();
                    if (metadata == null) {
                        return null;
                    }

                    return WebMiscUtil.formatDate(metadata.getCreateTimestamp());
                }
            }));
        }
    };
    columns.add(column);

    column = new DoubleButtonColumn<SelectableBean<ReportOutputType>>(new Model(), null) {

        @Override
        public String getFirstCap() {
            return createStringResource("pageCreatedReports.button.download").getString();
        }

        @Override
        public String getSecondCap() {
            return "";
        }

        @Override
        public String getFirstColorCssClass() {
            return BUTTON_COLOR_CLASS.PRIMARY.toString();
        }

        @Override
        public String getSecondColorCssClass() {
            return BUTTON_COLOR_CLASS.DANGER.toString() + " glyphicon glyphicon-trash";
        }

        @Override
        public void firstClicked(AjaxRequestTarget target, IModel<SelectableBean<ReportOutputType>> model) {
            currentReport = model.getObject().getValue();
            downloadPerformed(target, model.getObject().getValue(), ajaxDownloadBehavior);
        }

        @Override
        public void secondClicked(AjaxRequestTarget target, IModel<SelectableBean<ReportOutputType>> model) {
            deleteSelectedPerformed(target, ReportDeleteDialogDto.Operation.DELETE_SINGLE,
                    model.getObject().getValue());
        }

        @Override
        public String getSecondSizeCssClass() {
            return BUTTON_SIZE_CLASS.SMALL.toString();
        }
    };
    columns.add(column);

    column = new InlineMenuHeaderColumn<InlineMenuable>(initInlineMenu()) {

        @Override
        public void populateItem(Item<ICellPopulator<InlineMenuable>> cellItem, String componentId,
                IModel<InlineMenuable> rowModel) {
            cellItem.add(new Label(componentId));
        }
    };
    columns.add(column);

    return columns;
}

From source file:com.romeikat.datamessie.core.base.ui.panel.AbstractTablePanel.java

License:Open Source License

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

    columns = new ArrayList<IColumn<TableRow<X, Y, Z>, Y>>();

    // Row header column
    final AbstractColumn<TableRow<X, Y, Z>, Y> rowHeaderColumn = new AbstractColumn<TableRow<X, Y, Z>, Y>(
            getFirstColumnHeaderModel(), null) {
        private static final long serialVersionUID = 1L;

        @Override//from  w  w w .  jav  a  2  s .  c  o  m
        public void populateItem(final Item<ICellPopulator<TableRow<X, Y, Z>>> cellItem,
                final String componentId, final IModel<TableRow<X, Y, Z>> rowModel) {
            final TableRow<X, Y, Z> row = rowModel.getObject();
            final X rowHeader = row.getRowHeader();
            cellItem.add(getRowHeaderComponent(componentId, rowHeader));
        }
    };
    columns.add(rowHeaderColumn);

    // Value columns
    final ISingleTable<X, Y, Z> table = tableModel.getObject();
    final List<Y> columnHeaders = table.getColumnHeadersSorted(getColumnHeaderComparator());
    for (final Y columnHeader : columnHeaders) {
        final AbstractColumn<TableRow<X, Y, Z>, Y> valueColumn = new AbstractColumn<TableRow<X, Y, Z>, Y>(
                getColumnHeaderModel(columnHeader), columnHeader) {
            private static final long serialVersionUID = 1L;

            @Override
            public void populateItem(final Item<ICellPopulator<TableRow<X, Y, Z>>> cellItem,
                    final String componentId, final IModel<TableRow<X, Y, Z>> rowModel) {
                final TableRow<X, Y, Z> row = rowModel.getObject();
                final X rowHeader = row.getRowHeader();
                final Z value = row.getValues().get(columnHeader);
                final IModel<String> valueModel = getValueModel(value);
                cellItem.add(getValueComponent(componentId, rowHeader, columnHeader, valueModel));
            }
        };
        columns.add(valueColumn);
    }

    // Table
    final AbstractTableDataProvider<X, Y, Z> dataProvider = new AbstractTableDataProvider<X, Y, Z>(tableModel) {
        private static final long serialVersionUID = 1L;

        @Override
        protected Comparator<X> getRowHeaderComparator() {
            return AbstractTablePanel.this.getRowHeaderComparator();
        }
    };
    final DataTable<TableRow<X, Y, Z>, Y> dataTable = new AbstractTable<TableRow<X, Y, Z>, Y>("table", columns,
            dataProvider, getRowsPerPage()) {
        private static final long serialVersionUID = 1L;

        @Override
        protected String getSingularObjectName() {
            return AbstractTablePanel.this.getSingularObjectName();
        }

        @Override
        protected String getPluralObjectName() {
            return AbstractTablePanel.this.getPluralObjectName();
        }
    };
    addOrReplace(dataTable);
}

From source file:de.tudarmstadt.ukp.csniper.webapp.evaluation.page.EvaluationPage.java

License:Apache License

/**
 * Get additional result table columns for the specified type.
 * //  w  ww.j a  v  a  2s  .co m
 * @param aType
 *            the type to get additional columns for
 * @return additional columns
 */
private List<IColumn<EvaluationResult, String>> getAllColumns(AnnotationType aType) {
    List<IColumn<EvaluationResult, String>> ac = new ArrayList<IColumn<EvaluationResult, String>>();

    // add "standard" columns
    ac.addAll(columns);

    // add type dependent columns
    for (final AdditionalColumn ad : aType.getAdditionalColumns()) {
        ac.add(new AbstractColumn<EvaluationResult, String>(new Model<String>(ad.getName()),
                "additionalColumnValue(" + ad.getId() + ")") {
            private static final long serialVersionUID = 1L;

            @Override
            public void populateItem(Item<ICellPopulator<EvaluationResult>> aCellItem, String aComponentId,
                    final IModel<EvaluationResult> aRowModel) {
                aCellItem
                        .add(new AjaxEditableLabel<String>(aComponentId, new LoadableDetachableModel<String>() {
                            private static final long serialVersionUID = 1L;

                            @Override
                            protected String load() {
                                EvaluationResult result = aRowModel.getObject();
                                return result.getAdditionalColumns().get(ad);
                            }
                        }) {
                            private static final long serialVersionUID = 1L;

                            @Override
                            public void onSubmit(AjaxRequestTarget aTarget) {
                                super.onSubmit(aTarget);

                                EvaluationResult result = aRowModel.getObject();

                                // get new value
                                String newValue = getEditor().getInput();

                                // update database
                                if (newValue.isEmpty()) {
                                    result.getAdditionalColumns().remove(ad);
                                } else {
                                    result.getAdditionalColumns().put(ad, newValue);
                                }
                                repository.updateEvaluationResult(result);
                            }

                            @Override
                            public void onError(AjaxRequestTarget aTarget) {
                                super.onError(aTarget);
                                aTarget.add(getFeedbackPanel());
                            }
                        }.setType(String.class).add(new DbFieldMaxLengthValidator(projectRepository,
                                "EvaluationResult_additionalColumns", "additionalColumns")));
            }

            @Override
            public String getCssClass() {
                List<String> classes = new ArrayList<String>();
                classes.add("editable");
                if (!showResultColumns || !ad.getShowColumn()) {
                    classes.add("hideCol");
                }
                return StringUtils.join(classes, " ");
            }
        });
    }
    return ac;
}

From source file:net.tirasa.hct.editor.panel.HCTComponentPanel.java

License:Apache License

public HCTComponentPanel(final String id, final IPluginContext context, final IBreadCrumbModel breadCrumbModel,
        final String siteName) {
    super(id, breadCrumbModel);

    this.siteName = siteName;
    setOutputMarkupId(true);//  ww w .j  a v a 2s.  co  m

    final ComponentDataProvider componentDataProvider = new ComponentDataProvider(siteName);

    add(new Image("img_component", "images/component-48.png"));

    add(new AjaxBreadCrumbPanelLink("create-component", context, this, ComponentPanel.class, siteName));

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

    columns.add(new AbstractColumn(new ResourceModel("componentName"), "componentName") {

        private static final long serialVersionUID = -1822504503325964706L;

        @Override
        public void populateItem(final Item item, final String componentId, final IModel model) {

            final AjaxLinkLabel action = new AjaxLinkLabel(componentId,
                    new PropertyModel(model, "componentName")) {

                private static final long serialVersionUID = 3776750333491622263L;

                @Override
                public void onClick(final AjaxRequestTarget target) {
                    //panel.showView(target, model);
                    activate(new IBreadCrumbPanelFactory() {

                        private static final long serialVersionUID = 299017652786542948L;

                        @Override
                        public BreadCrumbPanel create(final String componentId,
                                final IBreadCrumbModel breadCrumbModel) {

                            return new ViewComponentPanel(componentId, context, breadCrumbModel, model,
                                    siteName);
                        }
                    });
                }
            };
            item.add(action);
        }
    });

    columns.add(
            new PropertyColumn(new ResourceModel("componentType"), "frontend:componentType", "componentType"));

    final AdminDataTable table = new AdminDataTable("table", columns, new ComponentDataProvider(siteName), 20);
    table.setOutputMarkupId(true);
    add(table);
}

From source file:net.tirasa.hct.editor.panel.HCTPagePanel.java

License:Apache License

public HCTPagePanel(final String id, final IPluginContext context, final IBreadCrumbModel breadCrumbModel,
        final String siteName) {
    super(id, breadCrumbModel);

    add(new Image("img_page", "images/page-48.png"));

    add(new AjaxBreadCrumbPanelLink("create-page", context, this, PagePanel.class, siteName));

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

    columns.add(new AbstractColumn(new ResourceModel("pageName"), "pageName") {

        private static final long serialVersionUID = -1822504503325964706L;

        @Override/* ww  w  .j  av a 2 s  .c  om*/
        public void populateItem(final Item item, final String componentId, final IModel model) {

            final AjaxLinkLabel action = new AjaxLinkLabel(componentId, new PropertyModel(model, "pageName")) {

                private static final long serialVersionUID = 3776750333491622263L;

                @Override
                public void onClick(final AjaxRequestTarget target) {
                    //panel.showView(target, model);
                    activate(new IBreadCrumbPanelFactory() {

                        private static final long serialVersionUID = 299017652786542948L;

                        @Override
                        public BreadCrumbPanel create(final String componentId,
                                final IBreadCrumbModel breadCrumbModel) {
                            return new ViewPagePanel(componentId, context, breadCrumbModel, model, siteName);
                        }
                    });
                }
            };
            item.add(action);
        }
    });

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

    final AdminDataTable table = new AdminDataTable("table", columns, new PageDataProvider(siteName), 20);
    table.setOutputMarkupId(true);
    add(table);
}

From source file:net.tirasa.hct.editor.panel.HCTSitePanel.java

License:Apache License

public HCTSitePanel(final String id, final IPluginContext context, final IBreadCrumbModel breadCrumbModel,
        final String siteName) {
    super(id, breadCrumbModel);

    add(new Image("img_site", "images/site-48.png"));

    add(new AjaxBreadCrumbPanelLink("create-site", context, this, SitePanel.class, siteName));

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

    columns.add(new AbstractColumn(new ResourceModel("siteName"), "siteName") {

        private static final long serialVersionUID = -1822504503325964706L;

        @Override/*from  w  w w  .  j  av a2  s  .  co m*/
        public void populateItem(final Item item, final String componentId, final IModel model) {

            final AjaxLinkLabel action = new AjaxLinkLabel(componentId, new PropertyModel(model, "siteName")) {

                private static final long serialVersionUID = 3776750333491622263L;

                @Override
                public void onClick(final AjaxRequestTarget target) {
                    //panel.showView(target, model);
                    activate(new IBreadCrumbPanelFactory() {

                        private static final long serialVersionUID = 299017652786542948L;

                        @Override
                        public BreadCrumbPanel create(final String componentId,
                                final IBreadCrumbModel breadCrumbModel) {
                            return new ViewSitePanel(componentId, context, breadCrumbModel, model);
                        }
                    });
                }
            };
            item.add(action);
        }
    });

    columns.add(new PropertyColumn(new ResourceModel("description"), "frontend:description", "description"));
    final AdminDataTable table = new AdminDataTable("table", columns, new SiteDataProvider(), 20);
    table.setOutputMarkupId(true);
    add(table);
}

From source file:org.apache.karaf.webconsole.karaf.feature.feature.FeaturesPage.java

License:Apache License

@SuppressWarnings({ "rawtypes", "serial" })
public FeaturesPage() throws Exception {
    add(new CssBehavior(FeaturesPage.class, "features.css"));

    for (Repository repository : featuresService.listRepositories()) {
        for (Feature feature : repository.getFeatures()) {
            feature2repo.put(feature.getId(), repository.getName());
        }//from ww w .  j  a va2 s . c  o m
    }

    IModel state = Model.of("state");
    IModel version = Model.of("version");
    IModel name = Model.of("name");
    IModel repository = Model.of("repository");
    IModel description = Model.of("description");

    List<IColumn<Feature, String>> columns = new ArrayList<IColumn<Feature, String>>();
    columns.add(new PropertyColumn<Feature, String>(new StringResourceModel("table.version", this, version),
            "version", "version"));
    columns.add(new PropertyColumn<Feature, String>(new StringResourceModel("table.name", this, name), "name",
            "name"));
    columns.add(new AbstractColumn<Feature, String>(
            new StringResourceModel("table.repository", this, repository), "repository") {
        public void populateItem(Item<ICellPopulator<Feature>> cellItem, String componentId,
                IModel<Feature> rowModel) {
            cellItem.add(new Label(componentId, feature2repo.get(rowModel.getObject().getId())));
        }
    });
    columns.add(new PropertyColumn<Feature, String>(
            new StringResourceModel("table.description", this, description), "description", "description"));
    columns.add(
            new AbstractColumn<Feature, String>(new StringResourceModel("table.state", this, state), "state") {
                public void populateItem(Item<ICellPopulator<Feature>> cellItem, String componentId,
                        IModel<Feature> rowModel) {
                    cellItem.add(new Label(componentId,
                            featuresService.isInstalled(rowModel.getObject()) ? "Installed" : "Uninstalled"));
                }
            });
    columns.add(new AbstractColumn<Feature, String>(new ResourceModel("table.actions")) {
        public void populateItem(Item<ICellPopulator<Feature>> cellItem, String componentId,
                IModel<Feature> model) {
            cellItem.add(new FeaturesActionsPanel(componentId, model));
        }
    });

    add(new BaseDataTable<Feature>("features", columns, new FeaturesProvider(featuresService), 20));

}

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

License:Apache License

public StatusModalPage(final PageReference pageRef, final ModalWindow window, final AbstractSubjectTO subjectTO,
        final boolean statusOnly) {

    super();/*w  ww .jav a  2 s .com*/

    this.pageRef = pageRef;
    this.window = window;
    this.statusOnly = statusOnly;
    this.subjectTO = subjectTO;

    statusUtils = new StatusUtils(subjectTO instanceof UserTO ? userRestClient : groupRestClient);

    add(new Label("displayName",
            subjectTO.getKey() + " " + (subjectTO instanceof UserTO ? ((UserTO) subjectTO).getUsername()
                    : ((GroupTO) subjectTO).getName())));

    columns = new ArrayList<>();
    columns.add(new AbstractColumn<StatusBean, String>(
            new StringResourceModel("resourceName", this, null, "Resource name"), "resourceName") {

        private static final long serialVersionUID = 2054811145491901166L;

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

            cellItem.add(new Label(componentId, model.getObject().getResourceName()) {

                private static final long serialVersionUID = 8432079838783825801L;

                @Override
                protected void onComponentTag(final ComponentTag tag) {
                    if (model.getObject().isLinked()) {
                        super.onComponentTag(tag);
                    } else {
                        tag.put("style", "color: #DDDDDD");
                    }
                }
            });
        }
    });

    columns.add(new PropertyColumn<StatusBean, String>(
            new StringResourceModel("accountLink", this, null, "Account link"), "accountLink", "accountLink"));

    columns.add(new AbstractColumn<StatusBean, String>(new StringResourceModel("status", this, null, "")) {

        private static final long serialVersionUID = -3503023501954863131L;

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

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

            if (model.getObject().isLinked()) {
                cellItem.add(statusUtils.getStatusImagePanel(componentId, model.getObject().getStatus()));
            } else {
                cellItem.add(new Label(componentId, ""));
            }
        }
    });

    table = new ActionDataTablePanel<StatusBean, String>("resourceDatatable", columns,
            (ISortableDataProvider<StatusBean, String>) new AttributableStatusProvider(), rowsPerPage,
            pageRef) {

        private static final long serialVersionUID = 6510391461033818316L;

        @Override
        public boolean isElementEnabled(final StatusBean element) {
            return !statusOnly || element.getStatus() != Status.OBJECT_NOT_FOUND;
        }
    };
    table.setOutputMarkupId(true);

    final String pageId = subjectTO instanceof GroupTO ? "Groups" : "Users";

    final Fragment pwdMgtFragment = new Fragment("pwdMgtFields", "pwdMgtFragment", this);
    addOrReplace(pwdMgtFragment);

    pwdMgt = new WebMarkupContainer("pwdMgt");
    pwdMgtFragment.add(pwdMgt.setOutputMarkupId(true));

    pwdMgtForm = new Form("pwdMgtForm");
    pwdMgtForm.setVisible(false).setEnabled(false);
    pwdMgt.add(pwdMgtForm);

    password = new PasswordTextField("password", new Model<String>());
    pwdMgtForm.add(password.setRequired(false).setEnabled(false));

    confirm = new PasswordTextField("confirm", new Model<String>());
    pwdMgtForm.add(confirm.setRequired(false).setEnabled(false));

    changepwd = new AjaxCheckBoxPanel("changepwd", "changepwd", new Model<Boolean>(false));
    pwdMgtForm.add(changepwd.setModelObject(false));
    pwdMgtForm.add(new Label("changePwdLabel", new ResourceModel("changePwdLabel", "Password propagation")));

    changepwd.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            password.setEnabled(changepwd.getModelObject());
            confirm.setEnabled(changepwd.getModelObject());
            target.add(pwdMgt);
        }
    });

    cancel = new ClearIndicatingAjaxButton("cancel", new ResourceModel("cancel"), pageRef) {

        private static final long serialVersionUID = -2341391430136818026L;

        @Override
        protected void onSubmitInternal(final AjaxRequestTarget target, final Form<?> form) {
            // ignore
            window.close(target);
        }
    }.feedbackPanelAutomaticReload(false);

    pwdMgtForm.add(cancel);

    final ClearIndicatingAjaxButton goon = new ClearIndicatingAjaxButton("continue",
            new ResourceModel("continue"), pageRef) {

        private static final long serialVersionUID = -2341391430136818027L;

        @Override
        protected void onSubmitInternal(final AjaxRequestTarget target, final Form<?> form) {
            // none
        }
    };

    pwdMgtForm.add(goon);

    if (statusOnly) {
        table.addAction(new ActionLink() {

            private static final long serialVersionUID = -3722207913631435501L;

            @Override
            public void onClick(final AjaxRequestTarget target) {
                try {
                    userRestClient.reactivate(subjectTO.getETagValue(), subjectTO.getKey(),
                            new ArrayList<>(table.getModelObject()));

                    ((BasePage) pageRef.getPage()).setModalResult(true);

                    window.close(target);
                } catch (Exception e) {
                    LOG.error("Error enabling resources", e);
                    error(getString(Constants.ERROR) + ": " + e.getMessage());
                    feedbackPanel.refresh(target);
                }
            }
        }, ActionLink.ActionType.REACTIVATE, pageId);

        table.addAction(new ActionLink() {

            private static final long serialVersionUID = -3722207913631435501L;

            @Override
            public void onClick(final AjaxRequestTarget target) {
                try {
                    userRestClient.suspend(subjectTO.getETagValue(), subjectTO.getKey(),
                            new ArrayList<>(table.getModelObject()));

                    if (pageRef.getPage() instanceof BasePage) {
                        ((BasePage) pageRef.getPage()).setModalResult(true);
                    }

                    window.close(target);
                } catch (Exception e) {
                    LOG.error("Error disabling resources", e);
                    error(getString(Constants.ERROR) + ": " + e.getMessage());
                    feedbackPanel.refresh(target);
                }
            }
        }, ActionLink.ActionType.SUSPEND, pageId);
    } else {
        table.addAction(new ActionLink() {

            private static final long serialVersionUID = -3722207913631435501L;

            @Override
            public void onClick(final AjaxRequestTarget target) {
                try {
                    if (subjectTO instanceof UserTO) {
                        userRestClient.unlink(subjectTO.getETagValue(), subjectTO.getKey(),
                                new ArrayList<>(table.getModelObject()));
                    } else {
                        groupRestClient.unlink(subjectTO.getETagValue(), subjectTO.getKey(),
                                new ArrayList<>(table.getModelObject()));
                    }

                    ((BasePage) pageRef.getPage()).setModalResult(true);
                    window.close(target);
                } catch (Exception e) {
                    LOG.error("Error unlinking resources", e);
                    error(getString(Constants.ERROR) + ": " + e.getMessage());
                    feedbackPanel.refresh(target);
                }
            }
        }, ActionLink.ActionType.UNLINK, pageId);

        table.addAction(new ActionLink() {

            private static final long serialVersionUID = -3722207913631435501L;

            @Override
            public void onClick(final AjaxRequestTarget target) {
                try {
                    if (subjectTO instanceof UserTO) {
                        userRestClient.link(subjectTO.getETagValue(), subjectTO.getKey(),
                                new ArrayList<>(table.getModelObject()));
                    } else {
                        groupRestClient.link(subjectTO.getETagValue(), subjectTO.getKey(),
                                new ArrayList<>(table.getModelObject()));
                    }

                    ((BasePage) pageRef.getPage()).setModalResult(true);
                    window.close(target);
                } catch (Exception e) {
                    LOG.error("Error linking resources", e);
                    error(getString(Constants.ERROR) + ": " + e.getMessage());
                    feedbackPanel.refresh(target);
                }
            }
        }, ActionLink.ActionType.LINK, pageId);

        table.addAction(new ActionLink() {

            private static final long serialVersionUID = -3722207913631435501L;

            @Override
            public void onClick(final AjaxRequestTarget target) {
                try {
                    BulkActionResult bulkActionResult;
                    if (subjectTO instanceof UserTO) {
                        bulkActionResult = userRestClient.deprovision(subjectTO.getETagValue(),
                                subjectTO.getKey(), new ArrayList<>(table.getModelObject()));
                    } else {
                        bulkActionResult = groupRestClient.deprovision(subjectTO.getETagValue(),
                                subjectTO.getKey(), new ArrayList<>(table.getModelObject()));
                    }

                    ((BasePage) pageRef.getPage()).setModalResult(true);
                    loadBulkActionResultPage(table.getModelObject(), bulkActionResult);
                } catch (Exception e) {
                    LOG.error("Error de-provisioning user", e);
                    error(getString(Constants.ERROR) + ": " + e.getMessage());
                    feedbackPanel.refresh(target);
                }
            }
        }, ActionLink.ActionType.DEPROVISION, pageId);

        table.addAction(new ActionLink() {

            private static final long serialVersionUID = -3722207913631435501L;

            @Override
            public void onClick(final AjaxRequestTarget target) {

                if (subjectTO instanceof UserTO) {
                    StatusModalPage.this.passwordManagement(target, ResourceAssociationActionType.PROVISION,
                            table.getModelObject());
                } else {
                    try {
                        final BulkActionResult bulkActionResult = groupRestClient.provision(
                                subjectTO.getETagValue(), subjectTO.getKey(),
                                new ArrayList<>(table.getModelObject()));

                        ((BasePage) pageRef.getPage()).setModalResult(true);
                        loadBulkActionResultPage(table.getModelObject(), bulkActionResult);
                    } catch (Exception e) {
                        LOG.error("Error provisioning user", e);
                        error(getString(Constants.ERROR) + ": " + e.getMessage());
                        feedbackPanel.refresh(target);
                    }
                }
            }
        }.feedbackPanelAutomaticReload(!(subjectTO instanceof UserTO)), ActionLink.ActionType.PROVISION,
                pageId);

        table.addAction(new ActionLink() {

            private static final long serialVersionUID = -3722207913631435501L;

            @Override
            public void onClick(final AjaxRequestTarget target) {
                try {
                    final BulkActionResult bulkActionResult;
                    if (subjectTO instanceof UserTO) {
                        bulkActionResult = userRestClient.unassign(subjectTO.getETagValue(), subjectTO.getKey(),
                                new ArrayList<>(table.getModelObject()));
                    } else {
                        bulkActionResult = groupRestClient.unassign(subjectTO.getETagValue(),
                                subjectTO.getKey(), new ArrayList<>(table.getModelObject()));
                    }

                    ((BasePage) pageRef.getPage()).setModalResult(true);
                    loadBulkActionResultPage(table.getModelObject(), bulkActionResult);
                } catch (Exception e) {
                    LOG.error("Error unassigning resources", e);
                    error(getString(Constants.ERROR) + ": " + e.getMessage());
                    feedbackPanel.refresh(target);
                }
            }
        }, ActionLink.ActionType.UNASSIGN, pageId);

        table.addAction(new ActionLink() {

            private static final long serialVersionUID = -3722207913631435501L;

            @Override
            public void onClick(final AjaxRequestTarget target) {
                if (subjectTO instanceof UserTO) {
                    StatusModalPage.this.passwordManagement(target, ResourceAssociationActionType.ASSIGN,
                            table.getModelObject());
                } else {
                    try {
                        final BulkActionResult bulkActionResult = groupRestClient.assign(
                                subjectTO.getETagValue(), subjectTO.getKey(),
                                new ArrayList<>(table.getModelObject()));

                        ((BasePage) pageRef.getPage()).setModalResult(true);
                        loadBulkActionResultPage(table.getModelObject(), bulkActionResult);
                    } catch (Exception e) {
                        LOG.error("Error assigning resources", e);
                        error(getString(Constants.ERROR) + ": " + e.getMessage());
                        feedbackPanel.refresh(target);
                    }
                }
            }
        }.feedbackPanelAutomaticReload(!(subjectTO instanceof UserTO)), ActionLink.ActionType.ASSIGN, pageId);
    }

    table.addCancelButton(window);
    add(table);
}