ChangeScreen: Highlight selected outdated patch set

Gives a visual hint when the currently viewed patch set is not the
latest one.

An example use-case is when change A depends on some previous patch set
of change B. Clicking change B in the Related Changes tab opens the
dependent patch set, but usually the latest PS is what interests the
user.

The color used for this indication is the same as the marker color for
not current patch sets in Related Changes.

Change-Id: If7d1e673172a44ba1c5ef9aea332d8fc54b1125c
diff --git a/Documentation/images/user-review-ui-change-screen-not-current.png b/Documentation/images/user-review-ui-change-screen-not-current.png
new file mode 100644
index 0000000..9a87c67
--- /dev/null
+++ b/Documentation/images/user-review-ui-change-screen-not-current.png
Binary files differ
diff --git a/Documentation/user-review-ui.txt b/Documentation/user-review-ui.txt
index 80b14eb..192876e 100644
--- a/Documentation/user-review-ui.txt
+++ b/Documentation/user-review-ui.txt
@@ -391,6 +391,10 @@
 
 image::images/user-review-ui-change-screen-patch-sets.png[width=800, link="images/user-review-ui-change-screen-patch-sets.png"]
 
+Another indication is a highlighted drop-down label.
+
+image::images/user-review-ui-change-screen-not-current.png[width=800, link="images/user-review-ui-change-screen-not-current.png"]
+
 [[patch-set-drop-down]]
 The patch set drop-down list shows the list of patch sets and allows to
 switch between them. The patch sets are sorted in descending order so
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
index eabf0e5..d21acb9 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
@@ -126,6 +126,7 @@
     String pushCertStatus();
     String replyBox();
     String selected();
+    String notCurrentPatchSet();
   }
 
   static ChangeScreen get(NativeEvent in) {
@@ -416,6 +417,14 @@
     }
   }
 
+  private void updatePatchSetsTextStyle(boolean isPatchSetCurrent) {
+    if (isPatchSetCurrent) {
+      patchSetsText.removeClassName(style.notCurrentPatchSet());
+    } else {
+      patchSetsText.addClassName(style.notCurrentPatchSet());
+    }
+  }
+
   private void initRevisionsAction(ChangeInfo info, String revision,
       NativeMap<ActionInfo> actions) {
     int currentPatchSet;
@@ -429,16 +438,22 @@
     }
 
     String currentlyViewedPatchSet;
-    if (info.revision(revision).id().equals("edit")) {
+    boolean isPatchSetCurrent = true;
+    String revisionId = info.revision(revision).id();
+    if (revisionId.equals("edit")) {
       currentlyViewedPatchSet =
           Resources.M.editPatchSet(RevisionInfo.findEditParent(info.revisions()
               .values()));
       currentPatchSet = info.revisions().values().length() - 1;
     } else {
-      currentlyViewedPatchSet = info.revision(revision).id();
+      currentlyViewedPatchSet = revisionId;
+      if (!currentlyViewedPatchSet.equals(Integer.toString(currentPatchSet))) {
+        isPatchSetCurrent = false;
+      }
     }
     patchSetsText.setInnerText(Resources.M.patchSets(
         currentlyViewedPatchSet, currentPatchSet));
+    updatePatchSetsTextStyle(isPatchSetCurrent);
     patchSetsAction = new PatchSetsAction(
         info.legacyId(), revision, edit,
         style, headerLine, patchSets);
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.ui.xml
index c643072..4e145d2 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.ui.xml
@@ -338,6 +338,10 @@
     .pushCertStatus {
       padding-left: 5px;
     }
+
+    .notCurrentPatchSet {
+      background-color: #FFA62F;
+    }
   </ui:style>
 
   <g:HTMLPanel styleName='{style.cs2}'>