Refactor linkage from ChangeScreen2 and its Reviewers widget
Move the loop that splits the reviewer and CC list into the Reviewers
widget, eliminating a duplicated block of code.
Link the widget with its sibling reviewersText in the init() method
rather than set(), matching the pattern used in Labels widget.
Change-Id: Iebc74f60781140d7a3b8643aed9f2dbb74e4e889
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java
index c6940de..2c01773 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java
@@ -16,13 +16,10 @@
import com.google.gerrit.client.FormatUtil;
import com.google.gerrit.client.Gerrit;
-import com.google.gerrit.client.account.AccountInfo;
import com.google.gerrit.client.actions.ActionInfo;
import com.google.gerrit.client.changes.ChangeApi;
import com.google.gerrit.client.changes.ChangeInfo;
-import com.google.gerrit.client.changes.ChangeInfo.ApprovalInfo;
import com.google.gerrit.client.changes.ChangeInfo.CommitInfo;
-import com.google.gerrit.client.changes.ChangeInfo.LabelInfo;
import com.google.gerrit.client.changes.ChangeInfo.MergeableInfo;
import com.google.gerrit.client.changes.ChangeInfo.MessageInfo;
import com.google.gerrit.client.changes.ChangeInfo.RevisionInfo;
@@ -81,9 +78,7 @@
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.EnumSet;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
public class ChangeScreen2 extends Screen {
interface Binder extends UiBinder<HTMLPanel, ChangeScreen2> {}
@@ -208,7 +203,7 @@
Resources.I.style().ensureInjected();
star.setVisible(Gerrit.isSignedIn());
labels.init(style, statusText);
- reviewers.init(style);
+ reviewers.init(style, reviewersText);
keysNavigation = new KeyCommandSet(Gerrit.C.sectionNavigation());
keysNavigation.add(new KeyCommand(0, 'u', Util.C.upToChangeList()) {
@@ -600,7 +595,6 @@
}
renderOwner(info);
- renderReviewers(info);
renderActionTextDate(info);
renderHistory(info);
initRevisionsAction(info, revision);
@@ -618,6 +612,7 @@
topic.set(info, revision);
commit.set(commentLinkProcessor, info, revision);
related.set(info, revision);
+ reviewers.set(info);
quickApprove.set(info, revision);
if (Gerrit.isSignedIn()) {
@@ -645,27 +640,6 @@
setWindowTitle(sb.toString());
}
- private void renderReviewers(ChangeInfo info) {
- // TODO Fix approximation of reviewers and CC list(s).
- Map<Integer, AccountInfo> r = new HashMap<Integer, AccountInfo>();
- Map<Integer, AccountInfo> cc = new HashMap<Integer, AccountInfo>();
- for (LabelInfo label : Natives.asList(info.all_labels().values())) {
- if (label.all() != null) {
- for (ApprovalInfo ai : Natives.asList(label.all())) {
- (ai.value() != 0 ? r : cc).put(ai._account_id(), ai);
- }
- }
- }
- for (Integer i : r.keySet()) {
- cc.remove(i);
- }
- r.remove(info.owner()._account_id());
- cc.remove(info.owner()._account_id());
- reviewersText.setInnerSafeHtml(Labels.formatUserList(style, r.values()));
- reviewers.set(info.legacy_id());
- reviewers.setReviewers(Labels.formatUserList(style, cc.values()));
- }
-
private void renderOwner(ChangeInfo info) {
// TODO info card hover
String name = info.owner().name() != null
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.java
index b4e1f55..45cf600 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.java
@@ -48,7 +48,6 @@
import com.google.gwt.user.client.ui.SuggestBox.DefaultSuggestionDisplay;
import com.google.gwt.user.client.ui.SuggestOracle.Suggestion;
import com.google.gwt.user.client.ui.UIObject;
-import com.google.gwtexpui.safehtml.client.SafeHtml;
import com.google.gwtexpui.safehtml.client.SafeHtmlBuilder;
import java.util.HashMap;
@@ -59,17 +58,19 @@
interface Binder extends UiBinder<HTMLPanel, Reviewers> {}
private static final Binder uiBinder = GWT.create(Binder.class);
+ @UiField Element ccText;
@UiField Button openForm;
- @UiField Element reviewers;
@UiField Element form;
@UiField Element error;
@UiField(provided = true)
SuggestBox suggestBox;
+ private ChangeScreen2.Style style;
+ private Element reviewersText;
+
private RestReviewerSuggestOracle reviewerSuggestOracle;
private HintTextBox nameTxtBox;
private Change.Id changeId;
- private ChangeScreen2.Style style;
private boolean submitOnSelection;
Reviewers() {
@@ -108,18 +109,16 @@
});
}
- void set(Change.Id changeId) {
- this.changeId = changeId;
- reviewerSuggestOracle.setChange(changeId);
- }
-
- void init(ChangeScreen2.Style style) {
+ void init(ChangeScreen2.Style style, Element reviewersText) {
this.style = style;
- openForm.setVisible(Gerrit.isSignedIn());
+ this.reviewersText = reviewersText;
}
- void setReviewers(SafeHtml formatUserList) {
- reviewers.setInnerSafeHtml(formatUserList);
+ void set(ChangeInfo info) {
+ this.changeId = info.legacy_id();
+ display(info);
+ reviewerSuggestOracle.setChange(changeId);
+ openForm.setVisible(Gerrit.isSignedIn());
}
@UiHandler("openForm")
@@ -219,7 +218,9 @@
for (Integer i : r.keySet()) {
cc.remove(i);
}
+ r.remove(info.owner()._account_id());
cc.remove(info.owner()._account_id());
- setReviewers(Labels.formatUserList(style, cc.values()));
+ reviewersText.setInnerSafeHtml(Labels.formatUserList(style, r.values()));
+ ccText.setInnerSafeHtml(Labels.formatUserList(style, cc.values()));
}
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml
index 568e950..9aed0d7 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml
@@ -44,7 +44,7 @@
</ui:style>
<g:HTMLPanel>
<div>
- <span ui:field='reviewers'/>
+ <span ui:field='ccText'/>
<g:Button ui:field='openForm'
title='Add reviewers to this change'
styleName='{style.openAdd}'