Example usage for org.apache.wicket.markup.html.list ListView setOutputMarkupId

List of usage examples for org.apache.wicket.markup.html.list ListView setOutputMarkupId

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.list ListView setOutputMarkupId.

Prototype

public final Component setOutputMarkupId(final boolean output) 

Source Link

Document

Sets whether or not component will output id attribute into the markup.

Usage

From source file:org.hippoecm.frontend.widgets.breadcrumb.BreadcrumbWidget.java

License:Apache License

public BreadcrumbWidget(final String id, final IModel<List<IModel<T>>> model) {
    super(id, model);

    setOutputMarkupId(true);//from  w ww .j a  v  a2 s . c  o  m
    add(CssClass.append("hippo-breadcrumbs"));

    final BreadcrumbModel breadcrumbModel = new BreadcrumbModel();
    final ListView<Breadcrumb> breadCrumbs = new ListView<Breadcrumb>("crumbs", breadcrumbModel) {
        @Override
        protected void populateItem(final ListItem<Breadcrumb> item) {
            Breadcrumb crumb = item.getModelObject();
            item.add(crumb);

            final String css = crumb.getCssClass();
            if (StringUtils.isNotEmpty(css)) {
                item.add(CssClass.append(css));
            }
        }
    };
    breadCrumbs.setOutputMarkupId(true);
    add(breadCrumbs);
}

From source file:org.jabylon.rest.ui.wicket.config.sections.ProjectVersionsConfigSection.java

License:Open Source License

public ProjectVersionsConfigSection(String id, IModel<Project> model, Preferences config) {
    super(id, model);
    add(buildAddNewLink(model));//  w  w w  .j ava2  s.  c o m
    ComplexEObjectListDataProvider<ProjectVersion> provider = new ComplexEObjectListDataProvider<ProjectVersion>(
            model, PropertiesPackage.Literals.RESOLVABLE__CHILDREN);
    ListView<ProjectVersion> project = new ListView<ProjectVersion>("versions", provider) {

        private static final long serialVersionUID = 1L;
        private ProgressionModel progressModel;

        @Override
        protected void populateItem(ListItem<ProjectVersion> item) {
            item.setOutputMarkupId(true);
            item.add(new Label("name", item.getModelObject().getName()));
            item.add(new Label("summary", new StringResourceModel("ProjectVersionsConfigSection.summary", item,
                    null, item.getModel().getObject().getChildren().size())));
            progressModel = new ProgressionModel("");
            final ProgressPanel progressPanel = new ProgressPanel("progress", progressModel);

            item.add(progressPanel);
            ProjectVersion projectVersion = item.getModelObject();
            item.add(new BookmarkablePageLink<Void>("edit", SettingsPage.class,
                    WicketUtil.buildPageParametersFor(projectVersion)));
            item.add(createCheckoutAction(progressPanel, item.getModel()));
            item.add(createRescanAction(progressPanel, item.getModel()));
            item.add(createUpdateAction(progressPanel, item.getModel()));
            item.add(createResetAction(progressPanel, item.getModel()));
            item.add(createCommitAction(progressPanel, item.getModel()));
            item.add(createDeleteAction(progressPanel, item.getModel()));

        }

    };
    project.setReuseItems(true);
    project.setOutputMarkupId(true);
    add(project);
}

From source file:org.jabylon.rest.ui.wicket.panels.PropertyEditorPanel.java

License:Open Source License

public PropertyEditorPanel(PropertyFileDescriptor object, PageParameters parameters) {
    super("content", object, parameters);
    List<ReviewParticipant> activeReviews = PropertyListModeFactory.filterActiveReviews(
            getModel().getObject().getProjectLocale().getParent().getParent(), reviewParticipants);
    PropertyListMode mode = PropertyListModeFactory.allAsMap(activeReviews)
            .get(parameters.get("mode").toString());
    addLinkList(mode);/*from  w w  w . j av a2 s  . com*/
    reviewModel = new LoadableDetachableModel<Multimap<String, Review>>() {

        private static final long serialVersionUID = 1L;

        @Override
        protected Multimap<String, Review> load() {
            return buildReviewMap(getModelObject());
        }
    };
    PropertyPairDataProvider provider = new PropertyPairDataProvider(object, mode, reviewModel);
    List<PropertyPair> contents = provider.createContents();

    ListView<PropertyPair> properties = new ListView<PropertyPair>("repeater", contents) {

        private static final long serialVersionUID = -7087485011138279358L;

        @Override
        protected void populateItem(final ListItem<PropertyPair> item) {
            IModel<PropertyPair> model = item.getModel();
            String key = model.getObject().getKey();
            Collection<Review> reviewList = reviewModel.getObject().get(key);
            item.add(new SinglePropertyEditor("row", model, false, reviewList));
        }

    };
    properties.setOutputMarkupId(true);

    Form<List<? extends PropertyPair>> form = new Form<List<? extends PropertyPair>>("properties-form",
            Model.ofList(contents)) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit() {
            super.onSubmit();
            IModel<List<? extends PropertyPair>> model = getModel();
            List<? extends PropertyPair> list = model.getObject();

            PropertyFileDescriptor descriptor = PropertyEditorPanel.this.getModelObject();
            PropertyFile file = descriptor.loadProperties();
            Map<String, Property> map = file.asMap();

            for (PropertyPair pair : list) {
                Property translation = pair.getTranslation();
                if (translation == null)
                    continue;
                if (map.containsKey(translation.getKey())) {
                    Property property = map.get(translation.getKey());
                    property.setComment(translation.getComment());
                    property.setValue(translation.getValue());
                } else
                    file.getProperties().add(translation);
            }
            propertyPersistence.saveProperties(descriptor, file);
            getSession().info("Saved successfully");
            try {
                //TODO: this is very unclean...
                // give it some time to store the values
                Thread.sleep(500);
            } catch (InterruptedException e) {
                logger.error("Interrupted while waiting for property persistence", e);
            }
        }
    };

    add(form);
    form.add(new SubmitLink("properties-submit") {
        private static final long serialVersionUID = 1L;

        @Override
        protected String getTriggerJavaScript() {
            /* disables the default submit behaviour since we do that ourselfs in JS
             * https://github.com/jutzig/jabylon/issues/52
             * see propertyEditor.js
             */
            return "";
        }
    });
    form.add(properties);

    final PropertiesEditorToolbar editorToolbar = new PropertiesEditorToolbar("properties-toolbar", getModel(),
            getPageParameters());
    editorToolbar.setOutputMarkupId(true);
    add(editorToolbar);

    //
    //        final AbstractDefaultAjaxBehavior behave = new AbstractDefaultAjaxBehavior() {
    //            protected void respond(final AjaxRequestTarget target) {
    //                editorToolbar.respond(target);
    //
    //                StringValue parameter = RequestCycle.get().getRequest().getRequestParameters().getParameterValue("key");
    //                editorToolbar.setKey(parameter.toString(""));
    //            }
    //
    //            public CharSequence getCallbackFunction(String functionName, CallbackParameter... extraParameters)
    //            {
    //                StringBuilder sb = new StringBuilder();
    //                sb.append("function ");
    //                sb.append(functionName);
    //                sb.append(" (");
    //                boolean first = true;
    //                for (CallbackParameter curExtraParameter : extraParameters)
    //                {
    //                    if (curExtraParameter.getFunctionParameterName() != null)
    //                    {
    //                        if (!first)
    //                            sb.append(',');
    //                        else
    //                            first = false;
    //                        sb.append(curExtraParameter.getFunctionParameterName());
    //                    }
    //                }
    //                sb.append(") {\n");
    //                sb.append(getCallbackFunctionBody(extraParameters));
    //                sb.append("}\n");
    //                return sb;
    //            }
    //
    //            @Override
    //            public void renderHead(Component component, IHeaderResponse response) {
    //                response.render(JavaScriptHeaderItem.forScript(getCallbackFunction("requestAid",CallbackParameter.explicit("key")), "requestAid"));
    //                super.renderHead(component, response);
    //            }
    //
    //        };
    //
    //        add(behave);

}

From source file:org.jabylon.rest.ui.wicket.panels.PropertyListPanel.java

License:Open Source License

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

    List<ReviewParticipant> activeReviews = PropertyListModeFactory.filterActiveReviews(
            getModel().getObject().getProjectLocale().getParent().getParent(), reviewParticipants);
    mode = PropertyListModeFactory.allAsMap(activeReviews).get(getPageParameters().get("mode").toString());
    addLinkList(activeReviews, mode);//from   w  w  w .  ja  v  a 2 s.  co  m
    reviewModel = new LoadableDetachableModel<Multimap<String, Review>>() {

        private static final long serialVersionUID = 1L;

        @Override
        protected Multimap<String, Review> load() {
            return buildReviewMap(getModelObject());
        }
    };
    PropertyPairListDataProvider provider = new PropertyPairListDataProvider(getModelObject(), mode,
            reviewModel);
    List<PropertyPair> contents = provider.createContents();

    ListView<PropertyPair> properties = new ListView<PropertyPair>("repeater", contents) {

        private static final long serialVersionUID = -7087485011138279358L;

        @Override
        protected void populateItem(final ListItem<PropertyPair> item) {
            IModel<PropertyPair> model = item.getModel();
            String key = model.getObject().getKey();
            Collection<Review> reviewList = reviewModel.getObject().get(key);
            BookmarkablePageLink<Object> link = new BookmarkablePageLink<Object>("edit", getPage().getClass(),
                    new PageParameters(getPageParameters()).add("key", key));
            item.add(link);
            link.setMarkupId(URLUtil.escapeToIdAttribute(key));
            link.setOutputMarkupId(true);
            link.add(new AttributeModifier("name", link.getMarkupId()));
            Label keyLabel = new Label("key", key);
            keyLabel.add(new AttributeModifier("title", model.getObject().getTranslated()));
            item.add(keyLabel);

            Label translationLabel = new Label("translation", model.getObject().getTranslated());
            translationLabel.add(new AttributeModifier("title", model.getObject().getTranslatedComment()));
            item.add(translationLabel);
            fillStatusColumn(model.getObject(), reviewList, item);
        }

    };
    properties.setOutputMarkupId(true);
    add(properties);

    String contextPath = WicketUtil.getContextPath();
    String href = contextPath + "/api/" + getModelObject().toURI().appendQuery("type=file");
    ExternalLink link = new ExternalLink("download.link", href);
    File file = new File(getModelObject().absoluteFilePath().toFileString());
    boolean enabled = file.isFile();
    link.setEnabled(enabled);
    if (!enabled) {
        link.add(new AttributeAppender("disabled", Model.of("disabled")));
        link.add(new AttributeAppender("class", Model.of("disabled")));
    }
    add(link);

    StatelessLink<Void> deleteLink = new DeleteLink("remove.button");
    deleteLink.add(new ConfirmBehaviour(nls("confirm.remove")));
    deleteLink.setVisible(canConfigure());
    add(deleteLink);

    FileUploadForm uploadForm = new FileUploadForm("translation-upload-form", getModel());
    uploadForm.setVisible(canSuggest());
    add(uploadForm);
}

From source file:org.jabylon.scheduler.ui.JobOverviewPanel.java

License:Open Source License

@Override
protected void construct() {
    super.construct();
    jobsModel = createJobsModel();//from  w ww.j  av  a2s .  co  m
    WebMarkupContainer container = new WebMarkupContainer("container", jobsModel);
    IModel<Integer> sizeModel = new ComputableModel<IModel<List<JobInstance>>, Integer>(new SizeFunction(),
            jobsModel);
    Label noJobs = new Label("running-jobs", nls("running.jobs.title", sizeModel));
    noJobs.setOutputMarkupId(true);
    container.add(noJobs);
    ListView<JobInstance> list = new ListView<JobInstance>("list", jobsModel) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<JobInstance> item) {
            JobInstance instance = item.getModelObject();
            String argLab = getLabel(instance.getDomainObject());

            if (argLab == null)
                item.add(new Label("title",
                        nls(instance.getExecutionObject().getClass(), instance.getDescription())));
            else
                item.add(new Label("title",
                        nls(instance.getExecutionObject().getClass(), instance.getDescription(), argLab)));
            ProgressionModel model = new ProgressionModel(instance.getID());
            ProgressPanel progressPanel = new ProgressPanel("panel", model);
            item.add(progressPanel);
            item.setOutputMarkupId(true);
            progressPanel.start();
        }

        private String getLabel(Object domainObject) {
            if (domainObject instanceof Workspace) {
                return "Workspace";

            }
            if (domainObject instanceof Resolvable) {
                @SuppressWarnings("rawtypes")
                Resolvable r = (Resolvable) domainObject;
                return r.fullPath().toString();
            }
            return null;
        }
    };
    list.setOutputMarkupId(true);
    list.setReuseItems(true);
    container.add(list);
    container.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(1)));
    add(container);
}

From source file:org.onehippo.forge.settings.management.config.urlrewriter.UrlRewriterConfigPanel.java

License:Apache License

private WebMarkupContainer createSkippedPrefixes(Model copyOfSkippedPrefixesModel) {

    final WebMarkupContainer listContainer = new WebMarkupContainer("skippedPrefixesContainer");
    //generate a markup-id so the contents can be updated through an AJAX call
    listContainer.setOutputMarkupId(true);
    ListView<String> skippedPrefixes = new ListView<String>("urlrewriter-skipped-prefixes",
            copyOfSkippedPrefixesModel) {
        private static final long serialVersionUID = 1L;

        @Override/*  w w w.  ja v a2  s. c om*/
        protected void populateItem(final ListItem<String> item) {
            RequiredTextField prefixField = new RequiredTextField("prefix", item.getModel());
            prefixField.setOutputMarkupId(true);
            prefixField.add(new OnChangeAjaxBehavior() {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                }
            });
            item.add(prefixField);

            AjaxSubmitLink remove = new AjaxSubmitLink("remove") {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onSubmit(AjaxRequestTarget target, Form form) {
                    int index = item.getIndex();
                    getModelObject().remove(index);
                    target.add(listContainer);
                }
            };
            remove.setDefaultFormProcessing(false);
            item.add(remove);
        }
    };

    AjaxLink addPrefix = new AjaxLink("add") {
        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            skippedPrefixes.getModelObject().add("");
            target.add(listContainer);
            target.focusComponent(this);
        }
    };

    skippedPrefixes.setOutputMarkupId(true);
    listContainer.add(skippedPrefixes);
    listContainer.add(addPrefix);
    return listContainer;
}

From source file:org.openengsb.ui.admin.userService.UserService.java

License:Apache License

private void initContent() {
    final WebMarkupContainer usermanagementContainer = new WebMarkupContainer("usermanagementContainer");
    usermanagementContainer.setOutputMarkupId(true);

    final Form<UserInput> userForm = new Form<UserInput>("form") {
        private static final long serialVersionUID = 6420993810725159979L;

        @Override//from w  w w. java  2 s.  c  o m
        protected void onSubmit() {
            createUser();
        }
    };

    usernameField = new RequiredTextField<String>("username");
    passwordField = new PasswordTextField("password");
    passwordVerficationField = new PasswordTextField("passwordVerification");
    usernameField.setOutputMarkupId(true);
    passwordField.setOutputMarkupId(true);
    passwordVerficationField.setOutputMarkupId(true);

    rolesField = new TextField<String>("roles");
    rolesField.setOutputMarkupId(true);

    userForm.add(usernameField);
    userForm.add(passwordField);
    userForm.add(passwordVerficationField);
    userForm.add(rolesField);

    userForm.setModel(new CompoundPropertyModel<UserInput>(input));

    FeedbackPanel feedbackPanel = new FeedbackPanel("feedback");
    feedbackPanel.setOutputMarkupId(true);

    userForm.add(feedbackPanel);

    AjaxButton resetButton = new AjaxButton("resetbutton") {
        private static final long serialVersionUID = 7997862317008905740L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            input.setPassword("");
            input.setUsername("");
            input.setPasswordVerification("");
            input.setRoles("");
            form.clearInput();
            usernameField.setEnabled(true);
            editMode = false;
            target.addComponent(usermanagementContainer);
        }
    };

    resetButton.setDefaultFormProcessing(false);
    userForm.add(resetButton);

    IModel<List<User>> userList = new LoadableDetachableModel<List<User>>() {
        private static final long serialVersionUID = 2579825372351310299L;

        @Override
        protected List<User> load() {
            try {
                return userManager.getAllUser();
            } catch (UserManagementException e) {
                error(new StringResourceModel("userManagementExceptionError", null).getString());
            }
            return new ArrayList<User>();
        }
    };
    ListView<User> users = new ListView<User>("users", userList) {
        private static final long serialVersionUID = 7628860457238288128L;

        @Override
        protected void populateItem(final ListItem<User> userListItem) {
            userListItem.add(new Label("user.name", userListItem.getModelObject().getUsername()));
            userListItem.add(new AjaxLink<User>("user.delete") {
                private static final long serialVersionUID = 2004369349622394213L;

                @Override
                public void onClick(AjaxRequestTarget ajaxRequestTarget) {
                    try {
                        userManager.deleteUser(userListItem.getModelObject().getUsername());
                        getList().remove(userListItem.getModelObject());
                        ajaxRequestTarget.addComponent(usermanagementContainer);
                    } catch (UserManagementException e) {
                        error(new StringResourceModel("userManagementExceptionError", this, null).getString());
                    }
                }
            });
            userListItem.add(new AjaxLink<User>("user.update") {
                private static final long serialVersionUID = -2327085637957255085L;

                @Override
                public void onClick(AjaxRequestTarget ajaxRequestTarget) {
                    input.setUsername(userListItem.getModelObject().getUsername());
                    input.setPassword(userListItem.getModelObject().getPassword());
                    input.setPasswordVerification(userListItem.getModelObject().getPassword());
                    input.setRoles(makeCommaSeparatedList(userListItem.getModelObject().getAuthorities()));
                    editMode = true;
                    usernameField.setEnabled(false);
                    ajaxRequestTarget.addComponent(usermanagementContainer);
                }
            });
        }
    };
    users.setOutputMarkupId(true);

    usermanagementContainer.add(users);
    usermanagementContainer.add(userForm);
    add(usermanagementContainer);
}

From source file:org.openengsb.ui.common.usermanagement.GenericListPanel.java

License:Apache License

private void initContent() {
    final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
    listContainer.setOutputMarkupId(true);
    add(listContainer);/*from   ww w  . j a  v  a  2s  . co  m*/
    final Form<Object> form = new Form<Object>("form");
    listContainer.add(form);

    ListView<T> users = new ListView<T>("list", listModel) {
        private static final long serialVersionUID = 7628860457238288128L;

        private ListItem<T> activeConfirm;

        @Override
        protected void populateItem(final ListItem<T> userListItem) {
            userListItem.add(new Label("item.name", userListItem.getModelObject().toString()));
            Panel confirm = new EmptyPanel("confirm");
            userListItem.add(confirm);
            userListItem.setOutputMarkupId(true);
            final AjaxLink<String> deleteLink = new AjaxLink<String>("item.delete") {
                private static final long serialVersionUID = 2004369349622394213L;

                @Override
                public void onClick(AjaxRequestTarget ajaxRequestTarget) {
                    if (activeConfirm != null) {
                        activeConfirm.get("confirm").replaceWith(new EmptyPanel("confirm"));
                        ajaxRequestTarget.add(activeConfirm);
                        activeConfirm = null;
                    }
                    final Model<T> model = new Model<T>(userListItem.getModelObject());
                    ConfirmPanel<T> confirmPanel = new ConfirmPanel<T>("confirm", model, userListItem) {
                        private static final long serialVersionUID = -1506781103470764246L;

                        @Override
                        protected void onConfirm(AjaxRequestTarget ajaxRequestTarget, Form<?> form) {
                            onDeleteClick(ajaxRequestTarget, form, model.getObject());
                            ajaxRequestTarget.add(listContainer);
                        }

                        @Override
                        protected void onCancel(AjaxRequestTarget ajaxRequestTarget, Form<?> form) {
                            ajaxRequestTarget.add(listContainer);
                        }
                    };
                    userListItem.get("confirm").replaceWith(confirmPanel);
                    activeConfirm = userListItem;
                    ajaxRequestTarget.add(userListItem);
                }
            };
            userListItem.add(deleteLink);
            userListItem.add(new AjaxLink<String>("item.update") {
                private static final long serialVersionUID = -2327085637957255085L;

                @Override
                public void onClick(AjaxRequestTarget ajaxRequestTarget) {
                    onEditClick(ajaxRequestTarget, userListItem.getModelObject());
                }
            });
        }
    };
    users.setOutputMarkupId(true);
    form.add(users);
}

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

License:Educational Community License

private void createInheritedSpan() {
    WebMarkupContainer inheritedSpan = new WebMarkupContainer("inheritedSpan");
    inheritedSpan.setOutputMarkupId(true);
    final String inheritedSpanId = inheritedSpan.getMarkupId();
    add(inheritedSpan);/* www. j a  v a  2  s .c o  m*/

    AbstractReadOnlyModel<List<? extends ListOptionSerialized>> inheritedRestrictedToolsModel = new AbstractReadOnlyModel<List<? extends ListOptionSerialized>>() {
        private static final long serialVersionUID = 1L;

        @Override
        public List<? extends ListOptionSerialized> getObject() {
            return new ArrayList<ListOptionSerialized>();
        }

    };

    final ListView<ListOptionSerialized> inheritedListView = new ListView<ListOptionSerialized>(
            "inheritedRestrictedTools", inheritedRestrictedToolsModel) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<ListOptionSerialized> item) {
            ListOptionSerialized tool = (ListOptionSerialized) item.getModelObject();
            Label name = new Label("name", tool.getName());
            item.add(name);
        }
    };
    inheritedListView.setOutputMarkupId(true);
    inheritedSpan.add(inheritedListView);

    AjaxLink<Void> closeInheritedSpanLink = new AjaxLink("closeInheritedSpanLink") {
        @Override
        public void onClick(AjaxRequestTarget arg0) {
        }
    };
    inheritedSpan.add(closeInheritedSpanLink);

    Label inheritedNodeTitle = new Label("inheritedNodeTitle", "");
    inheritedSpan.add(inheritedNodeTitle);

    Label noInheritedToolsLabel = new Label("noToolsInherited",
            new StringResourceModel("inheritedNothing", null));
    inheritedSpan.add(noInheritedToolsLabel);

}

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

License:Educational Community License

public EditablePanelListInherited(String id, IModel inputModel, final NodeModel nodeModel, final TreeNode node,
        final int userType, final int fieldType) {
    super(id);//from w ww. j  a va  2 s.  co m
    final WebMarkupContainer inheritedSpan = new WebMarkupContainer("inheritedSpan");
    inheritedSpan.setOutputMarkupId(true);
    final String inheritedSpanId = inheritedSpan.getMarkupId();
    add(inheritedSpan);

    //Auth
    final IModel<List<? extends ListOptionSerialized>> inheritedRestrictedAuthToolsModel = new AbstractReadOnlyModel<List<? extends ListOptionSerialized>>() {
        private static final long serialVersionUID = 1L;

        @Override
        public List<? extends ListOptionSerialized> getObject() {
            if (loadedFlag) {
                List<ListOptionSerialized> selectedOptions = null;
                List<ListOptionSerialized> inheritedOptions = null;
                if (DelegatedAccessConstants.TYPE_LISTFIELD_TOOLS == fieldType) {
                    selectedOptions = nodeModel.getSelectedRestrictedAuthTools();
                    inheritedOptions = nodeModel.getInheritedRestrictedAuthTools();
                }

                if (DelegatedAccessConstants.TYPE_ACCESS_SHOPPING_PERIOD_USER == userType
                        && !nodeModel.getNodeShoppingPeriodAdmin()) {
                    List<ListOptionSerialized> returnList = selectedOptions;
                    if (returnList.isEmpty()) {
                        returnList = inheritedOptions;
                    }
                    return returnList;
                } else {
                    return inheritedOptions;
                }
            } else {
                return new ArrayList<ListOptionSerialized>();
            }
        }

    };
    //Public
    final IModel<List<? extends ListOptionSerialized>> inheritedRestrictedPublicToolsModel = new AbstractReadOnlyModel<List<? extends ListOptionSerialized>>() {
        private static final long serialVersionUID = 1L;

        @Override
        public List<? extends ListOptionSerialized> getObject() {
            if (loadedFlag) {
                List<ListOptionSerialized> selectedOptions = null;
                List<ListOptionSerialized> inheritedOptions = null;
                if (DelegatedAccessConstants.TYPE_LISTFIELD_TOOLS == fieldType) {
                    selectedOptions = nodeModel.getSelectedRestrictedPublicTools();
                    inheritedOptions = nodeModel.getInheritedRestrictedPublicTools();
                }

                if (DelegatedAccessConstants.TYPE_ACCESS_SHOPPING_PERIOD_USER == userType
                        && !nodeModel.getNodeShoppingPeriodAdmin()) {
                    List<ListOptionSerialized> returnList = selectedOptions;
                    if (returnList.isEmpty()) {
                        returnList = inheritedOptions;
                    }
                    return returnList;
                } else {
                    return inheritedOptions;
                }
            } else {
                return new ArrayList<ListOptionSerialized>();
            }
        }

    };
    //Auth
    final ListView<ListOptionSerialized> inheritedAuthListView = new ListView<ListOptionSerialized>(
            "inheritedRestrictedAuthTools", inheritedRestrictedAuthToolsModel) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<ListOptionSerialized> item) {
            ListOptionSerialized tool = (ListOptionSerialized) item.getModelObject();
            Label name = new Label("name", tool.getName());
            item.add(name);
        }

        @Override
        public boolean isVisible() {
            if (loadedFlag) {
                List<ListOptionSerialized> inheritedOptions = null;
                String[] nodeOptions = null;
                if (DelegatedAccessConstants.TYPE_LISTFIELD_TOOLS == fieldType) {
                    inheritedOptions = nodeModel.getInheritedRestrictedAuthTools();
                    nodeOptions = nodeModel.getNodeRestrictedAuthTools();
                }
                if (DelegatedAccessConstants.TYPE_ACCESS_SHOPPING_PERIOD_USER == userType) {
                    return (inheritedOptions != null && !inheritedOptions.isEmpty())
                            || (!nodeModel.getNodeShoppingPeriodAdmin() && nodeOptions.length > 0);
                } else {
                    return inheritedOptions != null && !inheritedOptions.isEmpty();
                }
            } else {
                return false;
            }
        }
    };
    inheritedAuthListView.setOutputMarkupId(true);
    inheritedSpan.add(inheritedAuthListView);

    //public:

    final ListView<ListOptionSerialized> inheritedPublicListView = new ListView<ListOptionSerialized>(
            "inheritedRestrictedPublicTools", inheritedRestrictedPublicToolsModel) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<ListOptionSerialized> item) {
            ListOptionSerialized tool = (ListOptionSerialized) item.getModelObject();
            Label name = new Label("name", tool.getName());
            item.add(name);
        }

        @Override
        public boolean isVisible() {
            if (loadedFlag && DelegatedAccessConstants.TYPE_ACCESS_SHOPPING_PERIOD_USER == userType) {
                List<ListOptionSerialized> inheritedOptions = null;
                String[] nodeOptions = null;
                if (DelegatedAccessConstants.TYPE_LISTFIELD_TOOLS == fieldType) {
                    inheritedOptions = nodeModel.getInheritedRestrictedPublicTools();
                    nodeOptions = nodeModel.getNodeRestrictedPublicTools();
                }
                if (DelegatedAccessConstants.TYPE_ACCESS_SHOPPING_PERIOD_USER == userType) {
                    return (inheritedOptions != null && !inheritedOptions.isEmpty())
                            || (!nodeModel.getNodeShoppingPeriodAdmin() && nodeOptions.length > 0);
                } else {
                    return inheritedOptions != null && !inheritedOptions.isEmpty();
                }
            } else {
                return false;
            }
        }
    };
    inheritedPublicListView.setOutputMarkupId(true);
    inheritedSpan.add(inheritedPublicListView);

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

        @Override
        public void onClick(AjaxRequestTarget target) {
            if (!loadedFlag) {
                loadedFlag = true;
                inheritedAuthListView.setDefaultModel(inheritedRestrictedAuthToolsModel);
                inheritedPublicListView.setDefaultModel(inheritedRestrictedPublicToolsModel);
                target.addComponent(inheritedSpan);
            }
            target.appendJavascript("document.getElementById('" + inheritedSpanId + "').style.display='';");
        }
    };

    add(inheritedToolsLink);

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

        @Override
        public void onClick(AjaxRequestTarget target) {
            target.appendJavascript("document.getElementById('" + inheritedSpanId + "').style.display='none';");
        }
    };
    inheritedSpan.add(closeInheritedSpanLink);

    Label inheritedNodeTitle = new Label("inheritedNodeTitle", nodeModel.getNode().title);
    inheritedSpan.add(inheritedNodeTitle);

    Label noInheritedToolsLabel = new Label("noToolsInherited",
            new StringResourceModel("inheritedNothing", null)) {
        public boolean isVisible() {
            if (loadedFlag) {
                List<ListOptionSerialized> inheritedOptions = null;
                String[] nodeOptions = null;
                if (DelegatedAccessConstants.TYPE_LISTFIELD_TOOLS == fieldType) {
                    inheritedOptions = nodeModel.getInheritedRestrictedAuthTools();
                    nodeOptions = nodeModel.getNodeRestrictedAuthTools();
                    if (DelegatedAccessConstants.TYPE_ACCESS_SHOPPING_PERIOD_USER == userType) {
                        inheritedOptions.addAll(nodeModel.getInheritedRestrictedPublicTools());
                        String[] nodeOptions2 = nodeModel.getNodeRestrictedPublicTools();
                        //we only care about the length, so its fine to keep it empty:
                        nodeOptions = new String[nodeOptions2.length + nodeOptions.length];
                    }
                }
                if (DelegatedAccessConstants.TYPE_ACCESS_SHOPPING_PERIOD_USER == userType) {
                    return (nodeModel.getNodeShoppingPeriodAdmin()
                            && (inheritedOptions == null || inheritedOptions.isEmpty()))
                            || (!nodeModel.getNodeShoppingPeriodAdmin()
                                    && (nodeOptions == null || nodeOptions.length == 0));
                } else {
                    return inheritedOptions == null || inheritedOptions.isEmpty();
                }
            } else {
                return false;
            }
        };
    };
    inheritedSpan.add(noInheritedToolsLabel);

    Label authHeader = new Label("authHeader", new ResourceModel(".auth")) {
        @Override
        public boolean isVisible() {
            return DelegatedAccessConstants.TYPE_ACCESS_SHOPPING_PERIOD_USER == userType
                    && !nodeModel.getInheritedRestrictedAuthTools().isEmpty();
        }
    };
    inheritedSpan.add(authHeader);
    Label publicHeader = new Label("publicHeader", new ResourceModel(".anon")) {
        @Override
        public boolean isVisible() {
            return DelegatedAccessConstants.TYPE_ACCESS_SHOPPING_PERIOD_USER == userType
                    && !nodeModel.getInheritedRestrictedPublicTools().isEmpty();
        }
    };
    inheritedSpan.add(publicHeader);
}