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

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

Introduction

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

Prototype

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

Source Link

Usage

From source file:com.gitblit.wicket.panels.RepositoryUrlPanel.java

License:Apache License

protected Fragment createApplicationMenus(String wicketId, final UserModel user,
        final RepositoryModel repository, final List<RepositoryUrl> repositoryUrls) {
    final List<GitClientApplication> displayedApps = new ArrayList<GitClientApplication>();
    final String userAgent = ((WebClientInfo) GitBlitWebSession.get().getClientInfo()).getUserAgent();

    if (user.canClone(repository)) {
        for (GitClientApplication app : app().gitblit().getClientApplications()) {
            if (app.isActive && app.allowsPlatform(userAgent)) {
                displayedApps.add(app);/*from w  w  w  . j a  va2  s.  c  om*/
            }
        }
    }

    final String baseURL = WicketUtils.getGitblitURL(RequestCycle.get().getRequest());
    ListDataProvider<GitClientApplication> displayedAppsDp = new ListDataProvider<GitClientApplication>(
            displayedApps);
    DataView<GitClientApplication> appMenus = new DataView<GitClientApplication>("appMenus", displayedAppsDp) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(final Item<GitClientApplication> item) {
            final GitClientApplication clientApp = item.getModelObject();

            // filter the urls for the client app
            List<RepositoryUrl> urls = new ArrayList<RepositoryUrl>();
            for (RepositoryUrl repoUrl : repositoryUrls) {
                if (clientApp.minimumPermission == null || !repoUrl.hasPermission()) {
                    // no minimum permission or untracked permissions, assume it is satisfactory
                    if (clientApp.supportsTransport(repoUrl.url)) {
                        urls.add(repoUrl);
                    }
                } else if (repoUrl.permission.atLeast(clientApp.minimumPermission)) {
                    // repo url meets minimum permission requirement
                    if (clientApp.supportsTransport(repoUrl.url)) {
                        urls.add(repoUrl);
                    }
                }
            }

            if (urls.size() == 0) {
                // do not show this app menu because there are no urls
                item.add(new Label("appMenu").setVisible(false));
                return;
            }

            Fragment appMenu = new Fragment("appMenu", "appMenuFragment", RepositoryUrlPanel.this);
            appMenu.setRenderBodyOnly(true);
            item.add(appMenu);

            // menu button
            appMenu.add(new Label("applicationName", clientApp.name));

            // application icon
            Component img;
            if (StringUtils.isEmpty(clientApp.icon)) {
                img = WicketUtils.newClearPixel("applicationIcon").setVisible(false);
            } else {
                if (clientApp.icon.contains("://")) {
                    // external image
                    img = new ExternalImage("applicationIcon", clientApp.icon);
                } else {
                    // context image
                    img = WicketUtils.newImage("applicationIcon", clientApp.icon);
                }
            }
            appMenu.add(img);

            // application menu title, may be a link
            if (StringUtils.isEmpty(clientApp.productUrl)) {
                appMenu.add(new Label("applicationTitle", clientApp.toString()));
            } else {
                appMenu.add(new LinkPanel("applicationTitle", null, clientApp.toString(), clientApp.productUrl,
                        true));
            }

            // brief application description
            if (StringUtils.isEmpty(clientApp.description)) {
                appMenu.add(new Label("applicationDescription").setVisible(false));
            } else {
                appMenu.add(new Label("applicationDescription", clientApp.description));
            }

            // brief application legal info, copyright, license, etc
            if (StringUtils.isEmpty(clientApp.legal)) {
                appMenu.add(new Label("applicationLegal").setVisible(false));
            } else {
                appMenu.add(new Label("applicationLegal", clientApp.legal));
            }

            // a nested repeater for all action items
            ListDataProvider<RepositoryUrl> urlsDp = new ListDataProvider<RepositoryUrl>(urls);
            DataView<RepositoryUrl> actionItems = new DataView<RepositoryUrl>("actionItems", urlsDp) {
                private static final long serialVersionUID = 1L;

                @Override
                public void populateItem(final Item<RepositoryUrl> repoLinkItem) {
                    RepositoryUrl repoUrl = repoLinkItem.getModelObject();
                    Fragment fragment = new Fragment("actionItem", "actionFragment", RepositoryUrlPanel.this);
                    fragment.add(createPermissionBadge("permission", repoUrl));

                    if (!StringUtils.isEmpty(clientApp.cloneUrl)) {
                        // custom registered url
                        String url = substitute(clientApp.cloneUrl, repoUrl.url, baseURL, user.username,
                                repository.name);
                        fragment.add(new LinkPanel("content", "applicationMenuItem",
                                getString("gb.clone") + " " + repoUrl.url, url));
                        repoLinkItem.add(fragment);
                        fragment.add(new Label("copyFunction").setVisible(false));
                    } else if (!StringUtils.isEmpty(clientApp.command)) {
                        // command-line
                        String command = substitute(clientApp.command, repoUrl.url, baseURL, user.username,
                                repository.name);
                        Label content = new Label("content", command);
                        WicketUtils.setCssClass(content, "commandMenuItem");
                        fragment.add(content);
                        repoLinkItem.add(fragment);

                        // copy function for command
                        fragment.add(createCopyFragment(command));
                    }
                }
            };
            appMenu.add(actionItems);
        }
    };

    Fragment applicationMenus = new Fragment(wicketId, "applicationMenusFragment", RepositoryUrlPanel.this);
    applicationMenus.add(appMenus);
    return applicationMenus;
}

From source file:com.gitblit.wicket.panels.SearchPanel.java

License:Apache License

public SearchPanel(String wicketId, final String repositoryName, final String objectId, final String value,
        Constants.SearchType searchType, Repository r, int limit, int pageOffset, boolean showRemoteRefs) {
    super(wicketId);
    boolean pageResults = limit <= 0;
    int itemsPerPage = app().settings().getInteger(Keys.web.itemsPerPage, 50);
    if (itemsPerPage <= 1) {
        itemsPerPage = 50;//from  w  ww . j a  va  2s .  c  o m
    }

    RevCommit commit = JGitUtils.getCommit(r, objectId);

    final Map<ObjectId, List<RefModel>> allRefs = JGitUtils.getAllRefs(r, showRemoteRefs);
    List<RevCommit> commits;
    if (pageResults) {
        // Paging result set
        commits = JGitUtils.searchRevlogs(r, objectId, value, searchType, pageOffset * itemsPerPage,
                itemsPerPage);
    } else {
        // Fixed size result set
        commits = JGitUtils.searchRevlogs(r, objectId, value, searchType, 0, limit);
    }

    // inaccurate way to determine if there are more commits.
    // works unless commits.size() represents the exact end.
    hasMore = commits.size() >= itemsPerPage;

    // header
    add(new CommitHeaderPanel("commitHeader", repositoryName, commit));

    add(new Label("searchString", value));
    add(new Label("searchType", searchType.toString()));

    ListDataProvider<RevCommit> dp = new ListDataProvider<RevCommit>(commits);
    DataView<RevCommit> searchView = new DataView<RevCommit>("commit", dp) {
        private static final long serialVersionUID = 1L;
        int counter;

        @Override
        public void populateItem(final Item<RevCommit> item) {
            final RevCommit entry = item.getModelObject();
            final Date date = JGitUtils.getAuthorDate(entry);

            item.add(WicketUtils.createDateLabel("commitDate", date, getTimeZone(), getTimeUtils()));

            // author search link
            String author = entry.getAuthorIdent().getName();
            LinkPanel authorLink = new LinkPanel("commitAuthor", "list", author, GitSearchPage.class,
                    WicketUtils.newSearchParameter(repositoryName, null, author, Constants.SearchType.AUTHOR));
            setPersonSearchTooltip(authorLink, author, Constants.SearchType.AUTHOR);
            item.add(authorLink);

            // merge icon
            if (entry.getParentCount() > 1) {
                item.add(WicketUtils.newImage("commitIcon", "commit_merge_16x16.png"));
            } else {
                item.add(WicketUtils.newBlankImage("commitIcon"));
            }

            String shortMessage = entry.getShortMessage();
            String trimmedMessage = shortMessage;
            if (allRefs.containsKey(entry.getId())) {
                trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG_REFS);
            } else {
                trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG);
            }
            LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", trimmedMessage,
                    CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName()));
            if (!shortMessage.equals(trimmedMessage)) {
                WicketUtils.setHtmlTooltip(shortlog, shortMessage);
            }
            item.add(shortlog);

            item.add(new RefsPanel("commitRefs", repositoryName, entry, allRefs));

            item.add(new BookmarkablePageLink<Void>("commit", CommitPage.class,
                    WicketUtils.newObjectParameter(repositoryName, entry.getName())));
            item.add(new BookmarkablePageLink<Void>("commitdiff", CommitDiffPage.class,
                    WicketUtils.newObjectParameter(repositoryName, entry.getName())));
            item.add(new BookmarkablePageLink<Void>("tree", TreePage.class,
                    WicketUtils.newObjectParameter(repositoryName, entry.getName())));

            WicketUtils.setAlternatingBackground(item, counter);
            counter++;
        }
    };
    add(searchView);
}

From source file:com.gitblit.wicket.panels.SshKeysPanel.java

License:Apache License

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

    setOutputMarkupId(true);/*from  w  w w.j  ava 2  s  .  c om*/

    final List<SshKey> keys = new ArrayList<SshKey>(app().keys().getKeys(user.username));
    final ListDataProvider<SshKey> dp = new ListDataProvider<SshKey>(keys);
    final DataView<SshKey> keysView = new DataView<SshKey>("keys", dp) {
        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(final Item<SshKey> item) {
            final SshKey key = item.getModelObject();
            item.add(new Label("comment", key.getComment()));
            item.add(new Label("fingerprint", key.getFingerprint()));
            item.add(new Label("permission", key.getPermission().toString()));
            item.add(new Label("algorithm", key.getAlgorithm()));

            AjaxLink<Void> delete = new AjaxLink<Void>("delete") {

                private static final long serialVersionUID = 1L;

                @Override
                public void onClick(AjaxRequestTarget target) {
                    if (app().keys().removeKey(user.username, key)) {
                        // reset the keys list
                        keys.clear();
                        keys.addAll(app().keys().getKeys(user.username));

                        // update the panel
                        target.add(SshKeysPanel.this);
                    }
                }
            };
            if (!canWriteKeys) {
                delete.setVisibilityAllowed(false);
            }
            item.add(delete);
        }
    };
    add(keysView);

    Form<Void> addKeyForm = new Form<Void>("addKeyForm");

    final IModel<String> keyData = Model.of("");
    addKeyForm.add(new TextAreaOption("addKeyData", getString("gb.key"), null, "span5", keyData));

    final IModel<AccessPermission> keyPermission = Model.of(AccessPermission.PUSH);
    addKeyForm.add(new ChoiceOption<AccessPermission>("addKeyPermission", getString("gb.permission"),
            getString("gb.sshKeyPermissionDescription"), keyPermission,
            Arrays.asList(AccessPermission.SSHPERMISSIONS)));

    final IModel<String> keyComment = Model.of("");
    addKeyForm.add(new TextOption("addKeyComment", getString("gb.comment"),
            getString("gb.sshKeyCommentDescription"), "span5", keyComment));

    addKeyForm.add(new AjaxButton("addKeyButton") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target) {

            UserModel user = GitBlitWebSession.get().getUser();
            String data = keyData.getObject();
            if (StringUtils.isEmpty(data)) {
                // do not submit empty key
                return;
            }

            SshKey key = new SshKey(data);
            try {
                key.getPublicKey();
            } catch (Exception e) {
                // failed to parse the key
                return;
            }

            AccessPermission permission = keyPermission.getObject();
            key.setPermission(permission);

            String comment = keyComment.getObject();
            if (!StringUtils.isEmpty(comment)) {
                key.setComment(comment);
            }

            if (app().keys().addKey(user.username, key)) {
                // reset add key fields
                keyData.setObject("");
                keyPermission.setObject(AccessPermission.PUSH);
                keyComment.setObject("");

                // reset the keys list
                keys.clear();
                keys.addAll(app().keys().getKeys(user.username));

                // update the panel
                target.add(SshKeysPanel.this);
            }
        }
    });

    if (!canWriteKeys) {
        addKeyForm.setVisibilityAllowed(false);
    }

    add(addKeyForm);
}

From source file:com.gitblit.wicket.panels.TagsPanel.java

License:Apache License

public TagsPanel(String wicketId, final String repositoryName, Repository r, final int maxCount) {
    super(wicketId);

    // header/*from   w ww . java2  s  .  com*/
    List<RefModel> tags = JGitUtils.getTags(r, false, maxCount);
    if (maxCount > 0) {
        // summary page
        // show tags page link
        add(new LinkPanel("header", "title", new StringResourceModel("gb.tags", this, null), TagsPage.class,
                WicketUtils.newRepositoryParameter(repositoryName)));
    } else {
        // tags page
        add(new Label("header", new StringResourceModel("gb.tags", this, null)));
    }

    ListDataProvider<RefModel> tagsDp = new ListDataProvider<RefModel>(tags);
    DataView<RefModel> tagView = new DataView<RefModel>("tag", tagsDp) {
        private static final long serialVersionUID = 1L;
        int counter;

        @Override
        public void populateItem(final Item<RefModel> item) {
            RefModel entry = item.getModelObject();

            item.add(WicketUtils.createDateLabel("tagDate", entry.getDate(), getTimeZone(), getTimeUtils()));

            Class<? extends WebPage> linkClass;
            switch (entry.getReferencedObjectType()) {
            case Constants.OBJ_BLOB:
                linkClass = BlobPage.class;
                break;
            case Constants.OBJ_TREE:
                linkClass = TreePage.class;
                break;
            case Constants.OBJ_COMMIT:
            default:
                linkClass = CommitPage.class;
                break;
            }
            item.add(new LinkPanel("tagName", "list name", entry.displayName, linkClass,
                    WicketUtils.newObjectParameter(repositoryName, entry.getReferencedObjectId().getName())));

            // workaround for RevTag returning a lengthy shortlog. :(
            String message = StringUtils.trimString(entry.getShortMessage(),
                    com.gitblit.Constants.LEN_SHORTLOG);

            if (linkClass.equals(BlobPage.class)) {
                // Blob Tag Object
                item.add(WicketUtils.newImage("tagIcon", "file_16x16.png"));
                LinkPanel messageLink = new LinkPanel("tagDescription", "list", message, TagPage.class,
                        WicketUtils.newObjectParameter(repositoryName, entry.getObjectId().getName()));
                if (!entry.getShortMessage().equals(message)) {
                    messageLink.setTooltip(entry.getShortMessage());
                }
                item.add(messageLink);

                Fragment fragment = new Fragment("tagLinks", "blobLinks", TagsPanel.this);
                fragment.add(new BookmarkablePageLink<Void>("tag", TagPage.class,
                        WicketUtils.newObjectParameter(repositoryName, entry.getObjectId().getName()))
                                .setEnabled(entry.isAnnotatedTag()));

                fragment.add(new BookmarkablePageLink<Void>("blob", linkClass, WicketUtils
                        .newObjectParameter(repositoryName, entry.getReferencedObjectId().getName())));

                String contextUrl = GitBlitRequestUtils.getRelativePathPrefixToContextRoot();
                String rawUrl = RawServlet.asLink(contextUrl, repositoryName, entry.displayName,
                        entry.getReferencedObjectId().getName());
                fragment.add(new ExternalLink("raw", rawUrl));
                item.add(fragment);
            } else {
                // TODO Tree Tag Object
                // Standard Tag Object
                if (entry.isAnnotatedTag()) {
                    item.add(WicketUtils.newImage("tagIcon", "tag_16x16.png"));
                    LinkPanel messageLink = new LinkPanel("tagDescription", "list", message, TagPage.class,
                            WicketUtils.newObjectParameter(repositoryName, entry.getObjectId().getName()));
                    if (!message.equals(entry.getShortMessage())) {
                        messageLink.setTooltip(entry.getShortMessage());
                    }
                    item.add(messageLink);

                    Fragment fragment = new Fragment("tagLinks", "annotatedLinks", TagsPanel.this);
                    fragment.add(new BookmarkablePageLink<Void>("tag", TagPage.class,
                            WicketUtils.newObjectParameter(repositoryName, entry.getObjectId().getName()))
                                    .setEnabled(entry.isAnnotatedTag()));

                    fragment.add(new BookmarkablePageLink<Void>("commit", linkClass, WicketUtils
                            .newObjectParameter(repositoryName, entry.getReferencedObjectId().getName())));

                    fragment.add(new BookmarkablePageLink<Void>("log", LogPage.class,
                            WicketUtils.newObjectParameter(repositoryName, entry.getName())));
                    item.add(fragment);
                } else {
                    item.add(WicketUtils.newBlankImage("tagIcon"));
                    item.add(new LinkPanel("tagDescription", "list", message, CommitPage.class,
                            WicketUtils.newObjectParameter(repositoryName, entry.getObjectId().getName())));
                    Fragment fragment = new Fragment("tagLinks", "lightweightLinks", TagsPanel.this);
                    fragment.add(new BookmarkablePageLink<Void>("commit", CommitPage.class, WicketUtils
                            .newObjectParameter(repositoryName, entry.getReferencedObjectId().getName())));
                    fragment.add(new BookmarkablePageLink<Void>("log", LogPage.class,
                            WicketUtils.newObjectParameter(repositoryName, entry.getName())));
                    item.add(fragment);
                }
            }

            WicketUtils.setAlternatingBackground(item, counter);
            counter++;
        }
    };
    add(tagView);
    if (tags.size() < maxCount || maxCount <= 0) {
        add(new Label("allTags", "").setVisible(false));
    } else {
        add(new LinkPanel("allTags", "link", new StringResourceModel("gb.allTags", this, null), TagsPage.class,
                WicketUtils.newRepositoryParameter(repositoryName)));
    }

    hasTags = tags.size() > 0;
}

From source file:com.gitblit.wicket.panels.TeamsPanel.java

License:Apache License

public TeamsPanel(String wicketId, final boolean showAdmin) {
    super(wicketId);

    Fragment adminLinks = new Fragment("adminPanel", "adminLinks", TeamsPanel.this);
    adminLinks.add(new BookmarkablePageLink<Void>("newTeam", EditTeamPage.class));
    add(adminLinks.setVisible(showAdmin));

    final List<TeamModel> teams = app().users().getAllTeams();
    DataView<TeamModel> teamsView = new DataView<TeamModel>("teamRow", new ListDataProvider<TeamModel>(teams)) {
        private static final long serialVersionUID = 1L;
        private int counter;

        @Override//from   www.  j ava2  s  .  c o  m
        protected void onBeforeRender() {
            super.onBeforeRender();
            counter = 0;
        }

        @Override
        public void populateItem(final Item<TeamModel> item) {
            final TeamModel entry = item.getModelObject();
            LinkPanel editLink = new LinkPanel("teamname", "list", entry.name, EditTeamPage.class,
                    WicketUtils.newTeamnameParameter(entry.name));
            WicketUtils.setHtmlTooltip(editLink, getString("gb.edit") + " " + entry.name);
            item.add(editLink);
            item.add(new Label("accountType", entry.accountType.name()));
            item.add(new Label("members", entry.users.size() > 0 ? ("" + entry.users.size()) : ""));
            item.add(new Label("repositories",
                    entry.repositories.size() > 0 ? ("" + entry.repositories.size()) : ""));
            Fragment teamLinks = new Fragment("teamLinks", "teamAdminLinks", TeamsPanel.this);
            teamLinks.add(new BookmarkablePageLink<Void>("editTeam", EditTeamPage.class,
                    WicketUtils.newTeamnameParameter(entry.name)));
            Link<Void> deleteLink = new Link<Void>("deleteTeam") {

                private static final long serialVersionUID = 1L;

                @Override
                public void onClick() {
                    if (app().users().deleteTeam(entry.name)) {
                        teams.remove(entry);
                        info(MessageFormat.format("Team ''{0}'' deleted.", entry.name));
                    } else {
                        error(MessageFormat.format("Failed to delete team ''{0}''!", entry.name));
                    }
                }
            };
            deleteLink.add(new JavascriptEventConfirmation("click",
                    MessageFormat.format("Delete team \"{0}\"?", entry.name)));
            teamLinks.add(deleteLink);
            item.add(teamLinks);

            WicketUtils.setAlternatingBackground(item, counter);
            counter++;
        }
    };
    add(teamsView.setVisible(showAdmin));
}

From source file:com.gitblit.wicket.panels.TicketListPanel.java

License:Apache License

public TicketListPanel(String wicketId, List<QueryResult> list, final boolean showSwatch,
        final boolean showRepository) {
    super(wicketId);

    final ListDataProvider<QueryResult> dp = new ListDataProvider<QueryResult>(list);
    DataView<QueryResult> dataView = new DataView<QueryResult>("row", dp) {
        private static final long serialVersionUID = 1L;

        @Override//from w  w  w.j a v a2 s  .  c o  m
        protected void populateItem(Item<QueryResult> item) {
            final QueryResult ticket = item.getModelObject();

            if (showSwatch) {
                // set repository color
                String color = StringUtils.getColor(StringUtils.stripDotGit(ticket.repository));
                WicketUtils.setCssStyle(item, MessageFormat.format("border-left: 2px solid {0};", color));
            }

            PageParameters tp = WicketUtils.newObjectParameter(ticket.repository, "" + ticket.number);

            if (showRepository) {
                String name = StringUtils.stripDotGit(ticket.repository);
                PageParameters rp = WicketUtils.newOpenTicketsParameter(ticket.repository);
                LinkPanel link = new LinkPanel("ticketsLink", null, name, TicketsPage.class, rp);
                WicketUtils.setCssBackground(link, name);
                item.add(link);
            } else {
                item.add(new Label("ticketsLink").setVisible(false));
            }

            Label icon = TicketsUI.getStateIcon("state", ticket.type, ticket.status, ticket.severity);
            WicketUtils.addCssClass(icon, TicketsUI.getSeverityClass(ticket.severity));
            item.add(icon);

            item.add(new Label("id", "" + ticket.number));
            UserModel creator = app().users().getUserModel(ticket.createdBy);
            if (creator != null) {
                item.add(new LinkPanel("createdBy", null, creator.getDisplayName(), UserPage.class,
                        WicketUtils.newUsernameParameter(ticket.createdBy)));
            } else {
                item.add(new Label("createdBy", ticket.createdBy));
            }
            item.add(WicketUtils.createDateLabel("createDate", ticket.createdAt,
                    GitBlitWebSession.get().getTimezone(), getTimeUtils(), false));

            if (ticket.updatedAt == null) {
                item.add(new Label("updated").setVisible(false));
            } else {
                Fragment updated = new Fragment("updated", "updatedFragment", TicketListPanel.this);
                UserModel updater = app().users().getUserModel(ticket.updatedBy);
                if (updater != null) {
                    updated.add(new LinkPanel("updatedBy", null, updater.getDisplayName(), UserPage.class,
                            WicketUtils.newUsernameParameter(ticket.updatedBy)));
                } else {
                    updated.add(new Label("updatedBy", ticket.updatedBy));
                }
                updated.add(WicketUtils.createDateLabel("updateDate", ticket.updatedAt,
                        GitBlitWebSession.get().getTimezone(), getTimeUtils(), false));
                item.add(updated);
            }

            item.add(new LinkPanel("title", "list subject",
                    StringUtils.trimString(ticket.title, Constants.LEN_SHORTLOG), TicketsPage.class, tp));

            ListDataProvider<String> labelsProvider = new ListDataProvider<String>(ticket.getLabels());
            DataView<String> labelsView = new DataView<String>("labels", labelsProvider) {
                private static final long serialVersionUID = 1L;

                @Override
                public void populateItem(final Item<String> labelItem) {
                    RepositoryModel repository = app().repositories().getRepositoryModel(ticket.repository);
                    Label label;
                    TicketLabel tLabel;
                    if (repository == null) {
                        label = new Label("label", labelItem.getModelObject());
                        tLabel = new TicketLabel(labelItem.getModelObject());
                    } else {
                        Repository db = app().repositories().getRepository(repository.name);
                        BugtraqProcessor btp = new BugtraqProcessor(app().settings());
                        String content = btp.processText(db, repository.name, labelItem.getModelObject());
                        String safeContent = app().xssFilter().relaxed(content);
                        db.close();

                        label = new Label("label", safeContent);
                        label.setEscapeModelStrings(false);

                        tLabel = app().tickets().getLabel(repository, labelItem.getModelObject());
                    }

                    String background = MessageFormat.format("background-color:{0};", tLabel.color);
                    label.add(new AttributeModifier("style", background));
                    labelItem.add(label);
                }
            };
            item.add(labelsView);

            if (StringUtils.isEmpty(ticket.responsible)) {
                item.add(new Label("responsible").setVisible(false));
            } else {
                UserModel responsible = app().users().getUserModel(ticket.responsible);
                if (responsible == null) {
                    responsible = new UserModel(ticket.responsible);
                }
                AvatarImage avatar = new AvatarImage("responsible", responsible.getDisplayName(),
                        responsible.emailAddress, null, 16, true);
                avatar.setTooltip(getString("gb.responsible") + ": " + responsible.getDisplayName());
                item.add(avatar);
            }

            // votes indicator
            Label v = new Label("votes", "" + ticket.votesCount);
            WicketUtils.setHtmlTooltip(v, getString("gb.votes"));
            item.add(v.setVisible(ticket.votesCount > 0));

            // watching indicator
            item.add(
                    new Label("watching").setVisible(ticket.isWatching(GitBlitWebSession.get().getUsername())));

            // priority indicator
            Label priorityIcon = TicketsUI.getPriorityIcon("priority", ticket.priority);
            WicketUtils.addCssClass(priorityIcon, TicketsUI.getPriorityClass(ticket.priority));
            item.add(priorityIcon.setVisible(true));

            // status indicator
            String css = TicketsUI.getLozengeClass(ticket.status, true);
            Label l = new Label("status", ticket.status.toString());
            WicketUtils.setCssClass(l, css);
            item.add(l);

            // add the ticket indicators/icons
            List<Indicator> indicators = new ArrayList<Indicator>();

            // comments
            if (ticket.commentsCount > 0) {
                int count = ticket.commentsCount;
                String pattern = getString("gb.nComments");
                if (count == 1) {
                    pattern = getString("gb.oneComment");
                }
                indicators.add(new Indicator("fa fa-comment", count, pattern));
            }

            // participants
            if (!ArrayUtils.isEmpty(ticket.participants)) {
                int count = ticket.participants.size();
                if (count > 1) {
                    String pattern = getString("gb.nParticipants");
                    indicators.add(new Indicator("fa fa-user", count, pattern));
                }
            }

            // attachments
            if (!ArrayUtils.isEmpty(ticket.attachments)) {
                int count = ticket.attachments.size();
                String pattern = getString("gb.nAttachments");
                if (count == 1) {
                    pattern = getString("gb.oneAttachment");
                }
                indicators.add(new Indicator("fa fa-file", count, pattern));
            }

            // patchset revisions
            if (ticket.patchset != null) {
                int count = ticket.patchset.commits;
                String pattern = getString("gb.nCommits");
                if (count == 1) {
                    pattern = getString("gb.oneCommit");
                }
                indicators.add(new Indicator("fa fa-code", count, pattern));
            }

            // milestone
            if (!StringUtils.isEmpty(ticket.milestone)) {
                indicators.add(new Indicator("fa fa-bullseye", ticket.milestone));
            }

            ListDataProvider<Indicator> indicatorsDp = new ListDataProvider<Indicator>(indicators);
            DataView<Indicator> indicatorsView = new DataView<Indicator>("indicators", indicatorsDp) {
                private static final long serialVersionUID = 1L;

                @Override
                public void populateItem(final Item<Indicator> item) {
                    Indicator indicator = item.getModelObject();
                    String tooltip = indicator.getTooltip();

                    Label icon = new Label("icon");
                    WicketUtils.setCssClass(icon, indicator.css);
                    item.add(icon);

                    if (indicator.count > 0) {
                        Label count = new Label("count", "" + indicator.count);
                        item.add(count.setVisible(!StringUtils.isEmpty(tooltip)));
                    } else {
                        item.add(new Label("count").setVisible(false));
                    }

                    WicketUtils.setHtmlTooltip(item, tooltip);
                }
            };
            item.add(indicatorsView);
        }
    };

    add(dataView);
}

From source file:com.gitblit.wicket.panels.UsersPanel.java

License:Apache License

public UsersPanel(String wicketId, final boolean showAdmin) {
    super(wicketId);

    Fragment adminLinks = new Fragment("adminPanel", "adminLinks", UsersPanel.this);
    adminLinks.add(new BookmarkablePageLink<Void>("newUser", EditUserPage.class));
    add(adminLinks.setVisible(showAdmin));

    final List<UserModel> users = app().users().getAllUsers();
    DataView<UserModel> usersView = new DataView<UserModel>("userRow", new ListDataProvider<UserModel>(users)) {
        private static final long serialVersionUID = 1L;
        private int counter;

        @Override/*from www.j  a  v  a 2  s .com*/
        protected void onBeforeRender() {
            super.onBeforeRender();
            counter = 0;
        }

        @Override
        public void populateItem(final Item<UserModel> item) {
            final UserModel entry = item.getModelObject();
            String css = "list" + (entry.disabled ? "-strikethrough" : "");
            LinkPanel editLink = new LinkPanel("username", css, entry.username, EditUserPage.class,
                    WicketUtils.newUsernameParameter(entry.username));
            WicketUtils.setHtmlTooltip(editLink, getString("gb.edit") + " " + entry.getDisplayName());
            item.add(editLink);

            if (StringUtils.isEmpty(entry.displayName)) {
                item.add(new Label("displayName").setVisible(false));
            } else {
                editLink = new LinkPanel("displayName", css, entry.getDisplayName(), EditUserPage.class,
                        WicketUtils.newUsernameParameter(entry.username));
                WicketUtils.setHtmlTooltip(editLink, getString("gb.edit") + " " + entry.getDisplayName());
                item.add(editLink);
            }

            if (StringUtils.isEmpty(entry.emailAddress)) {
                item.add(new Label("emailAddress").setVisible(false));
            } else {
                editLink = new LinkPanel("emailAddress", css, entry.emailAddress, EditUserPage.class,
                        WicketUtils.newUsernameParameter(entry.username));
                WicketUtils.setHtmlTooltip(editLink, getString("gb.edit") + " " + entry.getDisplayName());
                item.add(editLink);
            }

            item.add(new Label("accountType", entry.accountType.name() + (entry.canAdmin() ? ", admin" : "")));
            item.add(new Label("teams", entry.teams.size() > 0 ? ("" + entry.teams.size()) : ""));
            item.add(new Label("repositories",
                    entry.permissions.size() > 0 ? ("" + entry.permissions.size()) : ""));
            Fragment userLinks = new Fragment("userLinks", "userAdminLinks", UsersPanel.this);
            userLinks.add(new BookmarkablePageLink<Void>("editUser", EditUserPage.class,
                    WicketUtils.newUsernameParameter(entry.username)));
            Link<Void> deleteLink = new Link<Void>("deleteUser") {

                private static final long serialVersionUID = 1L;

                @Override
                public void onClick() {
                    if (app().users().deleteUser(entry.username)) {
                        users.remove(entry);
                        info(MessageFormat.format(getString("gb.userDeleted"), entry.username));
                    } else {
                        error(MessageFormat.format(getString("gb.deleteUserFailed"), entry.username));
                    }
                }
            };
            deleteLink.add(new JavascriptEventConfirmation("click",
                    MessageFormat.format(getString("gb.deleteUser"), entry.username)));
            userLinks.add(deleteLink);
            item.add(userLinks);

            WicketUtils.setAlternatingBackground(item, counter);
            counter++;
        }
    };
    add(usersView.setVisible(showAdmin));
}

From source file:com.ibm.ws.samples.phonebook.HomePage.java

License:Open Source License

public HomePage(final PageParameters parameters) {
    super(parameters);
    add(new DataView<PhoneBookEntry>("phonebook", new PhoneBookEntryDataProvider()) {
        @Override//from   ww w  .  j  a  va2  s . c o  m
        protected void populateItem(final Item<PhoneBookEntry> item) {
            PhoneBookEntry contact = item.getModelObject();
            item.add(new Label("name", contact.getName()));
            item.add(new Label("phone", contact.getPhoneNumber()));
        }
    });
}

From source file:com.norconex.jefmon.instances.InstancesPanel.java

License:Apache License

private DataView<InstanceSummary> createDataView() {
    ListDataProvider<InstanceSummary> dataProvider = new ListDataProvider<InstanceSummary>(
            InstancesManager.loadInstances());
    DataView<InstanceSummary> dataView = new DataView<InstanceSummary>("instances", dataProvider) {
        private static final long serialVersionUID = 4462642058300231730L;

        @Override/*from   w  w  w  . j a  va  2 s. c  o m*/
        public void populateItem(final Item<InstanceSummary> item) {
            final InstanceSummary instance = item.getModelObject();
            Label nameLabel = new Label("name", instance.getName());
            if (instance.isInvalid()) {
                nameLabel.add(new CssStyle("font-weight: bold;"));
            }
            item.add(nameLabel);
            String url = instance.getUrl();
            if (url == null) {
                url = "<" + getString("instance.this") + ">";
            }
            item.add(new Label("url", url));
            item.add(createJobStateListView(instance));

            String totalLabel;
            if (instance.isInvalid()) {
                totalLabel = StringUtils.EMPTY;
            } else {
                totalLabel = Integer.toString(instance.getTotalRoots());
            }
            item.add(new Label("status-total", totalLabel));

            AjaxLink<String> removeButton = new AjaxLink<String>("remove") {
                private static final long serialVersionUID = -7913473337936429743L;

                @Override
                public void onClick(AjaxRequestTarget target) {
                    InstancesManager.removeInstance(instance.getUrl());
                    target.add(instancesTable);
                }
            };
            removeButton.add(new BootstrapTooltip(new ResourceModel("btn.remove")));
            if (instance.isThisInstance()) {
                removeButton.setVisible(false);
            }
            item.add(removeButton);
        }

        @Override
        protected Item<InstanceSummary> newItem(String id, int index, final IModel<InstanceSummary> model) {
            Item<InstanceSummary> row = super.newItem(id, index, model);
            InstanceSummary instance = model.getObject();
            if (instance.isInvalid()) {
                row.add(new CssClass("danger"));
                row.add(new CssStyle("cursor: default;"));
                row.add(new BootstrapTooltip(getString("instance.error") + instance.getRemoteError()));
            } else {
                row.add(new CssStyle("cursor: pointer;"));
                row.add(new OnClickBehavior() {
                    private static final long serialVersionUID = 7484946666996050240L;

                    @Override
                    protected void onClick(AjaxRequestTarget target) {
                        onInstanceClick(target, model.getObject());
                    }
                });
            }
            return row;
        }
    };
    return dataView;
}

From source file:com.romeikat.datamessie.core.base.ui.table.AbstractPageableTablePanel.java

License:Open Source License

private void initialize() {
    setOutputMarkupId(true);//from  w w  w  .  j a v a 2s . co m

    final List<ITableColumn<T>> tableColumns = getTalbeColumns();

    // Paging navigator
    pagingNavigator = new AjaxPagingNavigator("pagingNavigator", rowsList) {
        private static final long serialVersionUID = 1L;

        @Override
        public void onConfigure() {
            super.onConfigure();
            final long pageCount = getPageable().getPageCount();
            setVisible(pageCount > 1);
        }
    };
    pagingNavigator.setOutputMarkupId(true);
    add(pagingNavigator);

    // Headline
    final ListView<ITableColumn<T>> columnHeadersListView = new ListView<ITableColumn<T>>("columnHeaders",
            tableColumns) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final ListItem<ITableColumn<T>> item) {
            final ITableColumn<T> tableColumn = item.getModelObject();
            final ITableComponent columnHeader = tableColumn.getColumnHeader();
            addToTable(item, columnHeader);
        }
    };
    add(columnHeadersListView);

    // Rows
    rowsDataProvider = new RowsDataProvider();
    rowsList = new DataView<T>("rowsList", rowsDataProvider) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final Item<T> item) {
            final IModel<T> rowModel = item.getModel();
            final ListView<ITableColumn<T>> rowColumnsListView = new ListView<ITableColumn<T>>("columnValues",
                    tableColumns) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void populateItem(final ListItem<ITableColumn<T>> item) {
                    final ITableColumn<T> tableColumn = item.getModelObject();
                    final ITableComponent columnValue = tableColumn.getColumnValue(rowModel);
                    addToTable(item, columnValue);
                }
            };
            item.add(rowColumnsListView);
        }
    };
    rowsList.setItemsPerPage(rowsPerPage);
    add(rowsList);

    // Number of rows
    final long numberOfRows = rowsDataProvider.size();
    final String suffix = numberOfRows == 1 ? getRowsSingularName() : getRowsPluralName();
    final Label numberOfRowsLabel = new Label("numberOfRows", numberOfRows + " " + suffix);
    add(numberOfRowsLabel);
}