Merge "New replication config default in 2.9 Release Notes"
diff --git a/Documentation/intro-change-screen.txt b/Documentation/intro-change-screen.txt
index b4cd20a..7720f15 100644
--- a/Documentation/intro-change-screen.txt
+++ b/Documentation/intro-change-screen.txt
@@ -205,6 +205,8 @@
To remove reviewers click on the 'x' icon in the reviewer's "chip".
+Votable categories are shown as a tooltip for each reviewer.
+
Key bindings: "c" to add a reviewer. "ESC" to close the drop down.
[[auto-refresh]]
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Labels.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Labels.java
index 0be0b5d..a88edfa 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Labels.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Labels.java
@@ -176,7 +176,7 @@
}
html.append(val).append(" ");
html.append(formatUserList(style, m.get(v),
- Collections.<Integer> emptySet()));
+ Collections.<Integer> emptySet(), null));
html.closeSpan();
}
return html.toBlockWidget();
@@ -222,7 +222,8 @@
static SafeHtml formatUserList(ChangeScreen2.Style style,
Collection<? extends AccountInfo> in,
- Set<Integer> removable) {
+ Set<Integer> removable,
+ Map<Integer, VotableInfo> votable) {
List<AccountInfo> users = new ArrayList<>(in);
Collections.sort(users, new Comparator<AccountInfo>() {
@Override
@@ -261,13 +262,26 @@
name = Integer.toString(ai._account_id());
}
+ String votableCategories = "";
+ if (votable != null) {
+ Set<String> s = votable.get(ai._account_id()).votableLabels();
+ if (!s.isEmpty()) {
+ StringBuilder sb = new StringBuilder(Util.C.votable());
+ sb.append(" ");
+ for (Iterator<String> it = s.iterator(); it.hasNext();) {
+ sb.append(it.next());
+ if (it.hasNext()) {
+ sb.append(", ");
+ }
+ }
+ votableCategories = sb.toString();
+ }
+ }
html.openSpan()
.setAttribute("role", "listitem")
.setAttribute(DATA_ID, ai._account_id())
+ .setAttribute("title", getTitle(ai, votableCategories))
.setStyleName(style.label_user());
- if (ai.email() != null) {
- html.setAttribute("title", ai.email());
- }
if (img != null) {
html.openElement("img")
.setStyleName(style.avatar())
@@ -295,4 +309,15 @@
}
return html;
}
+
+ private static String getTitle(AccountInfo ai, String votableCategories) {
+ String title = ai.email() != null ? ai.email() : "";
+ if (!votableCategories.isEmpty()) {
+ if (!title.isEmpty()) {
+ title += " ";
+ }
+ title += votableCategories;
+ }
+ return title;
+ }
}
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 fb75627..2ca424c 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
@@ -231,10 +231,35 @@
}
}
- SafeHtml rHtml = Labels.formatUserList(style, r.values(), removable);
- SafeHtml ccHtml = Labels.formatUserList(style, cc.values(), removable);
+ Map<Integer, VotableInfo> votable = votable(info);
+
+ SafeHtml rHtml = Labels.formatUserList(style,
+ r.values(), removable, votable);
+ SafeHtml ccHtml = Labels.formatUserList(style,
+ cc.values(), removable, votable);
reviewersText.setInnerSafeHtml(rHtml);
ccText.setInnerSafeHtml(ccHtml);
}
+
+ private static Map<Integer, VotableInfo> votable(ChangeInfo change) {
+ Map<Integer, VotableInfo> d = new HashMap<>();
+ for (String name : change.labels()) {
+ LabelInfo label = change.label(name);
+ if (label.all() != null) {
+ for (ApprovalInfo ai : Natives.asList(label.all())) {
+ int id = ai._account_id();
+ VotableInfo ad = d.get(id);
+ if (ad == null) {
+ ad = new VotableInfo();
+ d.put(id, ad);
+ }
+ if (ai.has_value()) {
+ ad.votable(name);
+ }
+ }
+ }
+ }
+ return d;
+ }
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/VotableInfo.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/VotableInfo.java
new file mode 100644
index 0000000..056c9a2
--- /dev/null
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/VotableInfo.java
@@ -0,0 +1,38 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// 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.google.gerrit.client.change;
+
+import java.util.HashSet;
+import java.util.Set;
+
+class VotableInfo {
+ private Set<String> votable;
+
+ void votable(String label) {
+ if (votable == null) {
+ votable = new HashSet<>();
+ }
+ votable.add(label);
+ }
+
+ Set<String> votableLabels() {
+ Set<String> s = new HashSet<>();
+ if (votable != null) {
+ s.addAll(votable);
+ }
+ return s;
+ }
+}
+
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java
index 5092fe0..b4f3e17 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java
@@ -211,4 +211,6 @@
String oneWeekAgo();
String oneMonthAgo();
String oneYearAgo();
+
+ String votable();
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties
index ab2145b..fb713b6 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties
@@ -193,3 +193,5 @@
oneWeekAgo = 1 week ago
oneMonthAgo = 1 month ago
oneYearAgo = 1 year ago
+
+votable = Votable: