From f66e89662c091e082bd1d2feb6ac91513ccff273 Mon Sep 17 00:00:00 2001 From: Rafael Cavazin <rafaelcavazin@gmail.com> Date: Sun, 21 Jul 2013 09:59:00 -0400 Subject: [PATCH] Merge branch 'master' of https://github.com/gitblit/gitblit --- src/main/java/com/gitblit/wicket/panels/ActivityPanel.java | 149 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 149 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/panels/ActivityPanel.java b/src/main/java/com/gitblit/wicket/panels/ActivityPanel.java new file mode 100644 index 0000000..b509f65 --- /dev/null +++ b/src/main/java/com/gitblit/wicket/panels/ActivityPanel.java @@ -0,0 +1,149 @@ +/* + * Copyright 2011 gitblit.com. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gitblit.wicket.panels; + +import java.util.Collections; +import java.util.List; + +import org.apache.wicket.markup.html.link.BookmarkablePageLink; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.markup.repeater.data.DataView; +import org.apache.wicket.markup.repeater.data.ListDataProvider; +import org.eclipse.jgit.lib.Repository; + +import com.gitblit.Constants; +import com.gitblit.GitBlit; +import com.gitblit.Keys; +import com.gitblit.models.Activity; +import com.gitblit.models.RepositoryCommit; +import com.gitblit.utils.StringUtils; +import com.gitblit.wicket.WicketUtils; +import com.gitblit.wicket.pages.CommitDiffPage; +import com.gitblit.wicket.pages.CommitPage; +import com.gitblit.wicket.pages.GitSearchPage; +import com.gitblit.wicket.pages.LogPage; +import com.gitblit.wicket.pages.SummaryPage; +import com.gitblit.wicket.pages.TreePage; + +/** + * Renders activity in day-blocks in reverse-chronological order. + * + * @author James Moger + * + */ +public class ActivityPanel extends BasePanel { + + private static final long serialVersionUID = 1L; + + public ActivityPanel(String wicketId, List<Activity> recentActivity) { + super(wicketId); + + Collections.sort(recentActivity); + + final int shortHashLen = GitBlit.getInteger(Keys.web.shortCommitIdLength, 6); + DataView<Activity> activityView = new DataView<Activity>("activity", + new ListDataProvider<Activity>(recentActivity)) { + private static final long serialVersionUID = 1L; + + public void populateItem(final Item<Activity> activityItem) { + final Activity entry = activityItem.getModelObject(); + activityItem.add(WicketUtils.createDatestampLabel("title", entry.startDate, getTimeZone(), getTimeUtils())); + + // display the commits in chronological order + DataView<RepositoryCommit> commits = new DataView<RepositoryCommit>("commit", + new ListDataProvider<RepositoryCommit>(entry.getCommits())) { + private static final long serialVersionUID = 1L; + + public void populateItem(final Item<RepositoryCommit> commitItem) { + final RepositoryCommit commit = commitItem.getModelObject(); + + // commit time of day + commitItem.add(WicketUtils.createTimeLabel("time", commit.getCommitterIdent() + .getWhen(), getTimeZone(), getTimeUtils())); + + // avatar + commitItem.add(new GravatarImage("avatar", commit.getAuthorIdent(), 40)); + + // merge icon + if (commit.getParentCount() > 1) { + commitItem.add(WicketUtils.newImage("commitIcon", + "commit_merge_16x16.png")); + } else { + commitItem.add(WicketUtils.newBlankImage("commitIcon").setVisible(false)); + } + + // author search link + String author = commit.getAuthorIdent().getName(); + LinkPanel authorLink = new LinkPanel("author", "list", author, + GitSearchPage.class, WicketUtils.newSearchParameter(commit.repository, + commit.getName(), author, Constants.SearchType.AUTHOR), true); + setPersonSearchTooltip(authorLink, author, Constants.SearchType.AUTHOR); + commitItem.add(authorLink); + + // repository + String repoName = StringUtils.stripDotGit(commit.repository); + LinkPanel repositoryLink = new LinkPanel("repository", null, + repoName, SummaryPage.class, + WicketUtils.newRepositoryParameter(commit.repository), true); + WicketUtils.setCssBackground(repositoryLink, repoName); + commitItem.add(repositoryLink); + + // repository branch + LinkPanel branchLink = new LinkPanel("branch", "list", Repository.shortenRefName(commit.branch), + LogPage.class, WicketUtils.newObjectParameter(commit.repository, + commit.branch), true); + WicketUtils.setCssStyle(branchLink, "color: #008000;"); + commitItem.add(branchLink); + + LinkPanel commitid = new LinkPanel("commitid", "list subject", + commit.getName().substring(0, shortHashLen), CommitPage.class, + WicketUtils.newObjectParameter(commit.repository, commit.getName()), true); + commitItem.add(commitid); + + // message/commit link + String shortMessage = commit.getShortMessage(); + String trimmedMessage = shortMessage; + if (commit.getRefs() != null && commit.getRefs().size() > 0) { + trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG_REFS); + } else { + trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG); + } + LinkPanel shortlog = new LinkPanel("message", "list subject", + trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter( + commit.repository, commit.getName()), true); + if (!shortMessage.equals(trimmedMessage)) { + WicketUtils.setHtmlTooltip(shortlog, shortMessage); + } + commitItem.add(shortlog); + + // refs + commitItem.add(new RefsPanel("commitRefs", commit.repository, commit + .getRefs())); + + // diff, tree links + commitItem.add(new BookmarkablePageLink<Void>("diff", CommitDiffPage.class, + WicketUtils.newObjectParameter(commit.repository, commit.getName())) + .setEnabled(commit.getParentCount() > 0)); + commitItem.add(new BookmarkablePageLink<Void>("tree", TreePage.class, + WicketUtils.newObjectParameter(commit.repository, commit.getName()))); + } + }; + activityItem.add(commits); + } + }; + add(activityView); + } +} -- Gitblit v1.9.1