Example usage for org.apache.wicket.markup.repeater RefreshingView RefreshingView

List of usage examples for org.apache.wicket.markup.repeater RefreshingView RefreshingView

Introduction

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

Prototype

public RefreshingView(String id, IModel<?> model) 

Source Link

Document

Constructor

Usage

From source file:de.alpharogroup.wicket.components.listview.RefreshingViewPanel.java

License:Apache License

/**
 * Factory method for creating a new {@link RefreshingView}. This method is invoked in the
 * constructor from the derived classes and can be overridden so users can provide their own
 * version of the new {@link RefreshingView}.
 *
 * @param id/*from   w w  w . ja v  a 2  s.  c o m*/
 *            the id
 * @param model
 *            the model
 * @return the new {@link RefreshingView}.
 */
protected RefreshingView<T> newRefreshingView(final String id, final IModel<List<T>> model) {
    final RefreshingView<T> listView = new RefreshingView<T>(id, model) {
        /** The Constant serialVersionUID. */
        private static final long serialVersionUID = 1L;

        /**
         * {@inheritDoc}
         */
        @Override
        protected Iterator<IModel<T>> getItemModels() {
            return new ModelIteratorAdapter<T>(getModelObject().iterator()) {

                /**
                 * {@inheritDoc}
                 */
                @Override
                protected IModel<T> model(final T object) {
                    return Model.of(object);
                }
            };
        }

        /**
         * {@inheritDoc}
         */
        @Override
        protected Item<T> newItem(final String id, final int index, final IModel<T> model) {
            return RefreshingViewPanel.this.newItem(id, index, model);
        }

        /**
         * {@inheritDoc}
         */
        @Override
        protected void populateItem(final Item<T> item) {
            item.add(newListComponent("item", item));
        }

    };
    listView.setItemReuseStrategy(ReuseIfModelsEqualStrategy.getInstance());
    return listView;
}

From source file:de.widone.web.panel.tasklist.TaskListPanel.java

License:Apache License

private Component createRefreshingView(final IModel<TaskList> taskList) {
    return new RefreshingView<Task>(TASK_LIST, new PropertyModel<List<Task>>(taskList, "tasks")) {
        @Override/*w ww  .  ja  va2 s .c o m*/
        protected Iterator<IModel<Task>> getItemModels() {
            return new ModelIteratorAdapter<Task>(
                    ((IModel<List<Task>>) getDefaultModel()).getObject().iterator()) {
                @Override
                protected IModel<Task> model(Task object) {
                    return Model.of(object);
                }
            };
        }

        @Override
        protected void populateItem(final Item<Task> item) {
            TaskListPanel.this.populateItem(item, taskList);
        }
    }.setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
}

From source file:org.apache.jetspeed.portlets.prm.application.DetailsPanel.java

License:Apache License

public DetailsPanel(String id, final PortletApplicationNodeBean paNodeBean) {
    super(id);/* www.  j a  v  a2  s . c o  m*/

    detailList = new ArrayList<KeyVal>();
    JetspeedServiceLocator locator = ((AbstractAdminWebApplication) getApplication()).getServiceLocator();
    PortletApplication app = locator.getPortletRegistry()
            .getPortletApplication(paNodeBean.getApplicationName());

    detailList.add(new KeyVal("Name", app.getName()));
    detailList.add(new KeyVal("Version", app.getVersion()));
    detailList.add(new KeyVal("Description", getDescription(app)));
    detailList.add(new KeyVal("Type", getType(app)));
    detailList.add(new KeyVal("Services", new Object() {

        String toString(Iterator<JetspeedServiceReference> it) {
            StringBuffer buffer = new StringBuffer();
            while (it.hasNext()) {
                buffer.append(it.next().getName() + "<br/>");
            }
            return buffer.toString();
        }
    }.toString(app.getJetspeedServices().iterator())));

    final RefreshingView<KeyVal> dataRepeater = new RefreshingView<KeyVal>("data",
            new PropertyModel<List<KeyVal>>(this, "detailList")) {

        @Override
        protected void populateItem(Item<KeyVal> item) {
            final KeyVal field = item.getModelObject();
            item.add(new Label("name", field.getKey()));
            item.add(new Label("value", field.getValue()).setEscapeModelStrings(false));
        }

        @Override
        protected Iterator<IModel<KeyVal>> getItemModels() {
            List<KeyVal> list = (List<KeyVal>) getDefaultModelObject();
            return new ModelIteratorAdapter<KeyVal>(list.iterator()) {

                @Override
                protected IModel<KeyVal> model(KeyVal object) {
                    return new Model<KeyVal>(object);
                }
            };
        }
    };

    jetspeedSecurityContraintNames = new ArrayList<String>(Arrays.asList(""));
    PageManager pageManager = ((AbstractAdminWebApplication) getApplication()).getServiceLocator()
            .getPageManager();
    try {
        for (Object secConstDefObj : pageManager.getPageSecurity().getSecurityConstraintsDefs()) {
            SecurityConstraintsDef secConstDef = (SecurityConstraintsDef) secConstDefObj;
            jetspeedSecurityContraintNames.add(secConstDef.getName());
        }
    } catch (Exception e) {
        logger.error("Failed to retrieve jetspeed security constraint defs from page manager.", e);
    }

    jetspeedSecurityConstraint = app.getJetspeedSecurityConstraint();

    Form form = new Form("form");
    form.add(dataRepeater);
    form.add(new DropDownChoice<String>("jetspeedConstraint",
            new PropertyModel<String>(this, "jetspeedSecurityConstraint"), jetspeedSecurityContraintNames));
    form.add(new Button("jsecSave", new ResourceModel("pam.details.action.save")) {
        @Override
        public void onSubmit() {
            FeedbackPanel feed = (FeedbackPanel) getPage().get("feedback");

            try {
                PortletRegistry registry = ((AbstractAdminWebApplication) getApplication()).getServiceLocator()
                        .getPortletRegistry();
                PortletApplication app = registry.getPortletApplication(paNodeBean.getApplicationName());
                app.setJetspeedSecurityConstraint(
                        "".equals(jetspeedSecurityConstraint) ? null : jetspeedSecurityConstraint);
                registry.updatePortletApplication(app);
                StringResourceModel resModel = new StringResourceModel(
                        "pam.details.action.status.application.saveOK", this, null,
                        new Object[] { paNodeBean.getApplicationName() });
                feed.info(resModel.getString());
            } catch (RegistryException e) {
                logger.error("Failed to update jetspeed security constraint defs of application.", e);
                StringResourceModel resModel = new StringResourceModel(
                        "pam.details.action.status.application.saveFailure", this, null,
                        new Object[] { paNodeBean.getApplicationName(), e.getMessage() });
                feed.info(resModel.getString());
            }
        }
    });

    form.add(new Label("resourceBundle", app.getResourceBundle()));

    Button reloadResourceBundlesButton = new Button("reloadResourceBundle",
            new ResourceModel("pam.details.resource.bundle.reload")) {
        @Override
        public void onSubmit() {
            FeedbackPanel feed = (FeedbackPanel) getPage().get("feedback");

            try {
                PortletRegistry registry = ((AbstractAdminWebApplication) getApplication()).getServiceLocator()
                        .getPortletRegistry();
                PortletApplication app = registry.getPortletApplication(paNodeBean.getApplicationName());
                PortletFactory factory = ((AbstractAdminWebApplication) getApplication()).getServiceLocator()
                        .getPortletFactory();
                factory.reloadResourceBundles(app);
            } catch (Exception e) {
                logger.error("Failed to reload the resource bundle of application.", e);
                StringResourceModel resModel = new StringResourceModel(
                        "pam.details.action.status.resource.bundle.reloadFailure", this, null,
                        new Object[] { paNodeBean.getApplicationName(), e.getMessage() });
                feed.info(resModel.getString());
            }
        }
    };

    reloadResourceBundlesButton.add(new JavascriptEventConfirmation("onclick",
            new ResourceModel("pam.details.resource.bundle.reload.confirm")));

    reloadResourceBundlesButton.setEnabled(!StringUtils.isBlank(app.getResourceBundle()));

    form.add(reloadResourceBundlesButton);

    Button refreshSearchIndexButton = new Button("refreshSearchIndex",
            new ResourceModel("pam.details.search.index.refresh")) {
        @Override
        public void onSubmit() {
            FeedbackPanel feed = (FeedbackPanel) getPage().get("feedback");

            try {
                SearchEngine searchEngine = ((AbstractAdminWebApplication) getApplication()).getServiceLocator()
                        .getSearchEngine();
                PortletRegistry registry = ((AbstractAdminWebApplication) getApplication()).getServiceLocator()
                        .getPortletRegistry();

                PortletApplication app = registry.getPortletApplication(paNodeBean.getApplicationName());
                List<PortletDefinition> portletDefList = app.getPortlets();

                List<Object> list = new ArrayList<Object>();
                list.addAll(portletDefList);
                list.add(app);

                searchEngine.remove(list);

                list.clear();
                list.add(app);
                list.addAll(portletDefList);

                searchEngine.add(list);
            } catch (Exception e) {
                logger.error("Failed to refresh the search index of application.", e);
                StringResourceModel resModel = new StringResourceModel(
                        "pam.details.action.status.search.index.refreshFailure", this, null,
                        new Object[] { paNodeBean.getApplicationName(), e.getMessage() });
                feed.info(resModel.getString());
            }
        }
    };

    refreshSearchIndexButton.add(new JavascriptEventConfirmation("onclick",
            new ResourceModel("pam.details.search.index.refresh.confirm")));

    refreshSearchIndexButton.setEnabled(true);

    form.add(refreshSearchIndexButton);

    add(form);
}

From source file:org.cipango.ims.hss.web.PprPanel.java

License:Apache License

@SuppressWarnings("unchecked")
@Override//w w w  . j  ava2 s .co  m
protected void onBeforeRender() {
    super.onBeforeRender();
    BasePage page = (BasePage) getPage();
    int nbPublicsToUpdate = page.getCxManager().getNbPublicIdsToUpdate();

    _nbPublicsToUpdate = nbPublicsToUpdate;

    if (nbPublicsToUpdate > 0) {
        setVisible(true);
        if (get("form") == null)
            createForm(page.getCxManager());

        String title = MapVariableInterpolator.interpolate(getString("pprPanel.title"),
                new MicroMap("nb", _nbPublicsToUpdate));
        WebMarkupContainer form = ((WebMarkupContainer) get("form"));
        form.addOrReplace(new Label("title", title));

        WebMarkupContainer details = new WebMarkupContainer("details");
        form.addOrReplace(details);

        details.add(new RefreshingView("publicIdentities",
                new Model((Serializable) page.getCxManager().getPublicIdsToUpdateAsString())) {

            @Override
            protected Iterator getItemModels() {
                return new ModelIteratorAdapter<String>(((Collection) getDefaultModelObject()).iterator()) {

                    @Override
                    protected IModel<String> model(String id) {
                        return new Model<String>(id);
                    }

                };
            }

            @Override
            protected void populateItem(Item item) {
                MarkupContainer link = new BookmarkablePageLink("identity", EditPublicUserIdPage.class,
                        new PageParameters("id=" + item.getModelObject()));
                item.add(link);
                link.add(new Label("name", item.getModel()));
            }
        });
    } else
        setVisible(false);
}

From source file:org.cipango.ims.hss.web.privateid.ContextPanel.java

License:Apache License

public ContextPanel(PrivateIdentity privateIdentity) {
    super("contextMenu");
    setOutputMarkupId(true);// w ww.  j a  v a  2  s  . c  o m
    if (privateIdentity.getSubscription() != null) {
        add(new AutolinkBookmarkablePageLink("subscriptionLink", ViewSubscriptionPage.class,
                new PageParameters("id=" + privateIdentity.getSubscription().getName())));
        add(new AutolinkBookmarkablePageLink("deregistrationLink", DeregistrationPage.class,
                new PageParameters("id=" + privateIdentity.getSubscription().getName())));
    } else {
        add(new AutolinkBookmarkablePageLink("subscriptionLink", ViewSubscriptionPage.class).setVisible(false));
        add(new AutolinkBookmarkablePageLink("deregistrationLink", DeregistrationPage.class)).setVisible(false);
    }
    add(new AutolinkBookmarkablePageLink("editLink", EditPrivateIdPage.class,
            new PageParameters("id=" + privateIdentity.getIdentity())));
    add(new AutolinkBookmarkablePageLink("deleteLink", DeletePrivateIdPage.class,
            new PageParameters("id=" + privateIdentity.getIdentity())));
    add(new AutolinkBookmarkablePageLink("gbaLink", UssBrowserPage.class,
            new PageParameters("privateId=" + privateIdentity.getIdentity())));
    add(new RefreshingView("publicIds", new Model((Serializable) privateIdentity.getPublicIds())) {

        @Override
        protected Iterator getItemModels() {
            return new ModelIteratorAdapter<String>(((Collection) getDefaultModelObject()).iterator()) {

                @Override
                protected IModel<String> model(String id) {
                    return new Model<String>(id);
                }

            };
        }

        @Override
        protected void populateItem(Item item) {
            MarkupContainer link = new AutolinkBookmarkablePageLink("identity", EditPublicUserIdPage.class,
                    new PageParameters("id=" + item.getModelObject()));
            item.add(link);
            link.add(new Label("name", item.getModel()));
        }
    });
    add(new AutolinkBookmarkablePageLink("editPublicIdsLink", EditPublicIdsPage.class,
            new PageParameters("id=" + privateIdentity.getIdentity())));
    add(new AutolinkBookmarkablePageLink("newPublicIdLink", EditPublicUserIdPage.class,
            new PageParameters("privateId=" + privateIdentity.getIdentity())));
}

From source file:org.cipango.ims.hss.web.serviceprofile.ViewServiceProfilePage.java

License:Apache License

@SuppressWarnings("unchecked")
public ViewServiceProfilePage(PageParameters pageParameters) {
    super(pageParameters);
    _key = pageParameters.getString("id");
    ServiceProfile serviceProfile = null;
    if (_key != null) {
        serviceProfile = _dao.findById(_key);
        if (serviceProfile == null) {
            error(MapVariableInterpolator.interpolate(getString(getPrefix() + ".error.notFound"),
                    new MicroMap("identity", _key)));
            _key = null;/*w w w .java2s  .com*/
        }
    }

    _title = getString("serviceProfile.edit.title", new DaoDetachableModel(serviceProfile));
    add(new Label("title", _title));

    IModel ifcsModel = new LoadableDetachableModel(
            serviceProfile == null ? Collections.EMPTY_SET : serviceProfile.getIfcs(false)) {
        @Override
        protected Object load() {
            return _dao.findById(_key).getIfcs(false);
        }

    };
    add(new RefreshingView("ifcs", ifcsModel) {
        @Override
        protected Iterator getItemModels() {
            return new CompoundModelIterator((Collection) getDefaultModelObject());
        }

        @Override
        protected void populateItem(Item item) {
            item.add(new ViewIfcPanel("ifc", item.getModel(), false));
        }
    });

    IModel sharedIfcsModel = new LoadableDetachableModel(
            serviceProfile == null ? Collections.EMPTY_SET : serviceProfile.getIfcs(true)) {
        @Override
        protected Object load() {
            return _dao.findById(_key).getIfcs(true);
        }

    };

    add(new RefreshingView("sharedIfcs", sharedIfcsModel) {
        @Override
        protected Iterator getItemModels() {
            return new CompoundModelIterator((Collection) getDefaultModelObject());
        }

        @Override
        protected void populateItem(Item item) {
            item.add(new ViewIfcPanel("ifc", item.getModel(), true));
        }
    });

    if (serviceProfile != null)
        setContextMenu(new ContextPanel(serviceProfile));
}

From source file:org.cipango.ims.hss.web.spt.EditSptsPage.java

License:Apache License

private RefreshingView<SPT> getSpts(final Integer groupId) {
    IModel<Collection<SPT>> ifcsModel = new Model((Serializable) _spts.get(groupId));

    return new RefreshingView<SPT>("spts", ifcsModel) {

        @Override/*w w  w .  j  a  va2  s  .  co  m*/
        protected Iterator<IModel<SPT>> getItemModels() {
            return new CompoundModelIterator((Collection<SPT>) getDefaultModelObject());
        }

        @Override
        protected void populateItem(final Item<SPT> item) {
            item.add(new CheckBox("conditionNegated").add(new SptUpdatingBehaviour()));
            item.add(getPanel(item.getModel()));
            item.add(new AjaxFallbackButton("delete", (Form) getPage().get("sptsForm")) {
                @Override
                protected void doSubmit(AjaxRequestTarget target, Form<?> form) {
                    SPT spt = (SPT) item.getDefaultModelObject();
                    _sptsToDelete.add(spt);
                    List<SPT> l = _spts.get(spt.getGroupId());
                    if (l != null) {
                        l.remove(spt);
                        if (l.isEmpty())
                            _spts.remove(spt.getGroupId());
                    }

                    warn(MapVariableInterpolator.interpolate(getString("spt.modification"),
                            new MicroMap("spt", getExpression())));
                    if (target != null)
                        target.addComponent(form);
                }
            });
            boolean conditonType = _ifcModel.getObject().isConditionTypeCnf();
            item.add(new Label("conditionType", conditonType ? "OR" : "AND"));
        }

    };
}

From source file:org.cipango.ims.hss.web.subscription.EditImplicitSetPage.java

License:Apache License

@SuppressWarnings("unchecked")
public EditImplicitSetPage(PageParameters pageParameters) {
    super(pageParameters);
    String key = pageParameters.getString("id");
    Subscription subscription = _dao.findById(key);

    if (subscription == null) {
        error(MapVariableInterpolator.interpolate(getString(getPrefix() + ".error.notFound"),
                new MicroMap("id", key)));
        _key = null;/*from ww  w  . jav a2 s. c o  m*/
    }

    add(new SvgMarkupContainer("svg", subscription));

    final Form form = new Form("form");
    form.setOutputMarkupId(true);
    add(form);

    _title = MapVariableInterpolator.interpolate(getString("susbcription.implicititRegistrationSets.title"),
            new MicroMap("name", key));
    add(new Label("title", _title));

    if (subscription == null) {
        form.setVisible(false);
        return;
    }
    _key = subscription.getId();

    IModel<List<ImplicitRegistrationSet>> implicitSets = new LoadableDetachableModel<List<ImplicitRegistrationSet>>() {
        @Override
        protected List<ImplicitRegistrationSet> load() {
            return _implicitRegistrationSetDao.getImplicitRegistrationSet(_key);
        }

    };

    form.add(new ListMultipleChoice("publicIds", new Model(new ArrayList()),
            new Model(new ArrayList(subscription.getPublicIds()))));

    form.add(new RefreshingView("actions", implicitSets) {

        @Override
        protected Iterator getItemModels() {
            return new CompoundModelIterator((Collection<ImplicitRegistrationSet>) getDefaultModelObject());
        }

        @Override
        protected void populateItem(final Item item) {
            Model<String> buttonModel = new Model<String>(
                    getString("button.implicitSet.changeTo", item.getModel()));
            item.add(new AjaxFallbackButton("button", buttonModel, form) {

                @Override
                protected void doSubmit(AjaxRequestTarget target, Form<?> form1) throws Exception {
                    ImplicitRegistrationSet implicitRegistrationSet = (ImplicitRegistrationSet) item
                            .getDefaultModelObject();
                    apply(target, form1, implicitRegistrationSet);
                }

            });
        }

    });

    form.add(new AjaxFallbackButton("addButton", form) {

        @Override
        protected void doSubmit(AjaxRequestTarget target, Form<?> form1) throws Exception {
            if (!((List) form1.get("publicIds").getDefaultModelObject()).isEmpty()) {
                ImplicitRegistrationSet implicitRegistrationSet = new ImplicitRegistrationSet();
                _implicitRegistrationSetDao.save(implicitRegistrationSet);
                apply(target, form1, implicitRegistrationSet);
            }
        }

    });

    WebMarkupContainer container = new WebMarkupContainer("container");
    form.add(container);
    container.add(new RefreshingView("implicitSet", implicitSets) {

        @Override
        protected Iterator getItemModels() {
            return new CompoundModelIterator((Collection<ImplicitRegistrationSet>) getDefaultModelObject());
        }

        @Override
        protected void populateItem(final Item item) {
            item.add(new Label("id"));
            item.add(getPublicIdView(item));
        }

    });
    container.setOutputMarkupId(true);
    setContextMenu(new ContextPanel(subscription));
}

From source file:org.cipango.ims.hss.web.subscription.EditImplicitSetPage.java

License:Apache License

@SuppressWarnings("unchecked")
private RefreshingView getPublicIdView(final Item item) {
    final IModel<SortedSet<PublicUserIdentity>> model = new LoadableDetachableModel<SortedSet<PublicUserIdentity>>() {

        @Override//  w  w w  . j av  a  2s. c o  m
        protected SortedSet<PublicUserIdentity> load() {
            return ((ImplicitRegistrationSet) item.getModelObject()).getPublicIdentities();
        }
    };

    return new RefreshingView<PublicUserIdentity>("publicIds", model) {

        @Override
        protected Iterator<IModel<PublicUserIdentity>> getItemModels() {
            List<IModel<PublicUserIdentity>> l = new ArrayList<IModel<PublicUserIdentity>>();
            Iterator<PublicUserIdentity> it = model.getObject().iterator();
            while (it.hasNext()) {
                PublicUserIdentity identity = it.next();
                l.add(new DaoLoadableModel<PublicUserIdentity, String>(identity, identity.getIdentity()) {

                    @Override
                    protected PublicUserIdentity load() {
                        return (PublicUserIdentity) _publicIdentityDao.findById(getKey());
                    }
                });

            }
            return l.iterator();
        }

        @Override
        protected void populateItem(Item<PublicUserIdentity> item2) {
            PublicUserIdentity identity = item2.getModelObject();
            MarkupContainer link = new BookmarkablePageLink("identity", EditPublicUserIdPage.class,
                    new PageParameters("id=" + identity.getIdentity()));
            item2.add(link);
            link.add(new Label("name", identity.getIdentity()));

            if (identity.isDefaultIdentity()) {
                item2.add(new WebMarkupContainer("default"));
                item2.add(new WebMarkupContainer("makeDefault").setVisible(false));
            } else {
                item2.add(new WebMarkupContainer("default").setVisible(false));
                item2.add(new AjaxFallbackLink("makeDefault", item2.getModel()) {

                    @Override
                    public void onClick(AjaxRequestTarget target) {
                        PublicUserIdentity identity = (PublicUserIdentity) getDefaultModelObject();
                        identity.setDefaultIdentity(true);
                        SortedSet<PublicUserIdentity> ids = (SortedSet<PublicUserIdentity>) getParent()
                                .getParent().getDefaultModelObject();

                        Iterator<PublicUserIdentity> it = ids.iterator();
                        while (it.hasNext()) {
                            PublicUserIdentity publicId = it.next();
                            publicId.setDefaultIdentity(identity == publicId);
                            _publicIdentityDao.save(publicId);
                        }
                        resort(ids);

                        if (target != null) {
                            target.addComponent(getPage().get("form:container"));
                            target.addComponent(getPage().get("feedback"));
                        }
                    }
                });
            }
        }

    };
}

From source file:org.cipango.ims.hss.web.subscription.ViewSubscriptionPage.java

License:Apache License

@SuppressWarnings("unchecked")
public ViewSubscriptionPage(PageParameters pageParameters) {
    super(pageParameters);
    Subscription subscription = getSubscription(pageParameters);
    _key = (subscription == null) ? null : subscription.getName();

    _title = getString(getPrefix() + ".edit.title", new DaoDetachableModel(subscription));
    add(new Label("title", _title));

    IModel privateIdsModel = new LoadableDetachableModel(
            subscription == null ? Collections.EMPTY_SET : subscription.getPrivateIdentities()) {
        @Override//from ww  w.  j ava  2s.  c  om
        protected Object load() {
            return _dao.findById(_key).getPrivateIdentities();
        }

    };

    add(new SvgMarkupContainer("svg", subscription));

    add(new RefreshingView("privateIds", privateIdsModel) {

        @Override
        protected Iterator getItemModels() {
            return new CompoundModelIterator((Collection) getDefaultModelObject());
        }

        @Override
        protected void populateItem(Item item) {
            PrivateIdentity privateIdentity = (PrivateIdentity) item.getModelObject();
            MarkupContainer link = new BookmarkablePageLink("identityLink", EditPrivateIdPage.class,
                    new PageParameters("id=" + privateIdentity.getIdentity()));
            link.add(new Label("identity"));
            item.add(link);
            item.add(new Label("passwordAsString"));
            item.add(new Label("operatorId"));
            item.add(new Label("sqn"));

            item.add(new RefreshingView("publicIds", new Model((Serializable) privateIdentity.getPublicIds())) {

                @Override
                protected Iterator getItemModels() {
                    return new StringModelIterator(((Collection) getDefaultModelObject()));
                }

                @Override
                protected void populateItem(Item item2) {
                    MarkupContainer link = new BookmarkablePageLink("identity", EditPublicUserIdPage.class,
                            new PageParameters("id=" + item2.getModelObject()));
                    item2.add(link);
                    link.add(new Label("name", item2.getModel()));
                }
            });
            item.setOutputMarkupId(true);
            item.add(new HideableLink("hideLink", item));
        }

    });

    IModel publicsModel = new LoadableDetachableModel(
            subscription == null ? Collections.EMPTY_SET : subscription.getPublicIdentities()) {
        @Override
        protected Object load() {
            return _dao.findById(_key).getPublicIdentities();
        }

    };

    add(new RefreshingView("publicIds", publicsModel) {

        @Override
        protected Iterator getItemModels() {
            return new CompoundModelIterator((Collection) getDefaultModelObject());
        }

        @Override
        protected void populateItem(Item item) {
            PublicUserIdentity publicIdentity = (PublicUserIdentity) item.getModelObject();
            MarkupContainer link = new BookmarkablePageLink("identityLink", EditPublicUserIdPage.class,
                    new PageParameters("id=" + publicIdentity.getIdentity()));
            link.add(new Label("identity"));
            item.add(link);
            item.add(new Label("barred"));
            item.add(new Label("identityTypeAsString"));
            item.add(new Label("displayName"));
            item.add(new Label("implicitRegistrationSet.stateAsString"));
            MarkupContainer serviceProfileLink = new BookmarkablePageLink("serviceProfileLink",
                    ViewServiceProfilePage.class,
                    new PageParameters("id=" + publicIdentity.getServiceProfile().getName()));
            item.add(serviceProfileLink);
            serviceProfileLink.add(new Label("serviceProfile", publicIdentity.getServiceProfile().getName()));
            item.setOutputMarkupId(true);
            item.add(new HideableLink("hideLink", item));

            item.add(
                    new RefreshingView("privateIds", new Model((Serializable) publicIdentity.getPrivateIds())) {

                        @Override
                        protected Iterator getItemModels() {
                            return new StringModelIterator(((Collection) getDefaultModelObject()));
                        }

                        @Override
                        protected void populateItem(Item item2) {
                            MarkupContainer link = new BookmarkablePageLink("identity", EditPrivateIdPage.class,
                                    new PageParameters("id=" + item2.getModelObject()));
                            item2.add(link);
                            link.add(new Label("name", item2.getModel()));
                        }
                    });
        }

    });

    IModel scscfModel = new CompoundPropertyModel(
            new LoadableDetachableModel(subscription == null ? null : subscription.getScscf()) {
                @Override
                protected Object load() {
                    return _dao.findById(_key).getScscf();
                }
            });

    WebMarkupContainer scscf = new WebMarkupContainer("scscf", scscfModel);
    add(scscf);
    if (scscf.getDefaultModelObject() == null)
        scscf.setVisible(false);
    else {
        MarkupContainer link = new BookmarkablePageLink("link", EditScscfPage.class,
                new PageParameters("id=" + subscription.getScscf().getName()));
        link.add(new Label("name"));
        scscf.add(link);
        scscf.add(new Label("uri"));
        scscf.add(new HideableLink("hideLink", scscf));
    }

    if (subscription != null)
        setContextMenu(new ContextPanel(subscription));
}