From 49caaf5d89075896dfc9a3eaf4cb0fe2731a6f87 Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Sat, 12 Oct 2013 18:53:57 +0200 Subject: [PATCH] ChangeScreen2: linkify change author Bug: issue 2075 Change-Id: I99d9932f3408797d3819a4c03010dbe9ab542f8f --- .../gerrit/client/change/CommitBox.java | 34 +++++++++++++++---- .../gerrit/client/change/CommitBox.ui.xml | 15 ++++++-- .../gerrit/client/ui/AccountLinkPanel.java | 2 +- 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.java index 86b313b873..5cb0443615 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.java @@ -22,6 +22,9 @@ import com.google.gerrit.client.changes.ChangeInfo.CommitInfo; import com.google.gerrit.client.changes.ChangeInfo.GitPerson; import com.google.gerrit.client.changes.ChangeInfo.RevisionInfo; import com.google.gerrit.client.ui.CommentLinkProcessor; +import com.google.gerrit.client.ui.InlineHyperlink; +import com.google.gerrit.common.PageLinks; +import com.google.gerrit.reviewdb.client.Change.Status; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.AnchorElement; import com.google.gwt.dom.client.Element; @@ -38,9 +41,9 @@ class CommitBox extends Composite { @UiField Element commitName; @UiField AnchorElement browserLink; - @UiField Element authorNameEmail; + @UiField InlineHyperlink authorNameEmail; @UiField Element authorDate; - @UiField Element committerNameEmail; + @UiField InlineHyperlink committerNameEmail; @UiField Element committerDate; @UiField Element commitMessageText; @@ -55,8 +58,10 @@ class CommitBox extends Composite { CommitInfo commit = revInfo.commit(); commitName.setInnerText(revision); - format(commit.author(), authorNameEmail, authorDate); - format(commit.committer(), committerNameEmail, committerDate); + formatLink(commit.author(), authorNameEmail, + authorDate, change.status()); + formatLink(commit.committer(), committerNameEmail, + committerDate, change.status()); commitMessageText.setInnerSafeHtml(commentLinkProcessor.apply( new SafeHtmlBuilder().append(commit.message()).linkify())); @@ -69,8 +74,25 @@ class CommitBox extends Composite { } } - private void format(GitPerson person, Element name, Element date) { - name.setInnerText(person.name() + " <" + person.email() + ">"); + private static void formatLink(GitPerson person, InlineHyperlink name, + Element date, Status status) { + name.setText(renderName(person)); + name.setTargetHistoryToken(PageLinks + .toAccountQuery(owner(person), status)); date.setInnerText(FormatUtil.mediumFormat(person.date())); } + + private static String renderName(GitPerson person) { + return person.name() + " <" + person.email() + ">"; + } + + public static String owner(GitPerson person) { + if (person.email() != null) { + return person.email(); + } else if (person.name() != null) { + return person.name(); + } else { + return ""; + } + } } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml index c1a6d24aef..a095926ff0 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml @@ -16,7 +16,8 @@ limitations under the License. --> + xmlns:g='urn:import:com.google.gwt.user.client.ui' + xmlns:x='urn:import:com.google.gerrit.client.ui'> .commitHeader { border-spacing: 0; @@ -46,12 +47,20 @@ limitations under the License. Author - + + + + Committer - + + + + diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/AccountLinkPanel.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/AccountLinkPanel.java index ef5217619f..7f11df7e35 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/AccountLinkPanel.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/AccountLinkPanel.java @@ -65,7 +65,7 @@ public class AccountLinkPanel extends FlowPanel { add(l); } - private static String owner(AccountInfo ai) { + public static String owner(AccountInfo ai) { if (ai.email() != null) { return ai.email(); } else if (ai.name() != null) {