Show plugin status in web ui

Request all plugins when viewing the plugin list page, and identify
disabled plugins via a Status column.

Change-Id: I3026862b0b659fe58ba0fedb1515b2ff2d68fb26
Signed-off-by: Brad Larson <bklarson@gmail.com>
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.java
index 74a24ce..a9ad519 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.java
@@ -108,9 +108,11 @@
 
   String plugins();
   String pluginTabInstalled();
+  String pluginDisabled();
 
   String columnPluginName();
   String columnPluginVersion();
+  String columnPluginStatus();
 
   String noGroupSelected();
   String errorNoMatchingGroups();
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties
index 30375a2..e20d544 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties
@@ -88,8 +88,10 @@
 
 plugins = Plugins
 pluginTabInstalled = Installed
+pluginDisabled = Disabled
 columnPluginName = Plugin Name
 columnPluginVersion = Version
+columnPluginStatus = Status
 
 noGroupSelected = (No group selected)
 errorNoMatchingGroups = No Matching Groups
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PluginListScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PluginListScreen.java
index 814ae51..3948b35 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PluginListScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/PluginListScreen.java
@@ -60,10 +60,12 @@
     PluginTable() {
       table.setText(0, 1, Util.C.columnPluginName());
       table.setText(0, 2, Util.C.columnPluginVersion());
+      table.setText(0, 3, Util.C.columnPluginStatus());
 
       final FlexCellFormatter fmt = table.getFlexCellFormatter();
       fmt.addStyleName(0, 1, Gerrit.RESOURCES.css().dataHeader());
       fmt.addStyleName(0, 2, Gerrit.RESOURCES.css().dataHeader());
+      fmt.addStyleName(0, 3, Gerrit.RESOURCES.css().dataHeader());
     }
 
     void display(final PluginMap plugins) {
@@ -80,16 +82,24 @@
     }
 
     void populate(final int row, final PluginInfo plugin) {
-      table.setWidget(
-          row,
-          1,
-          new Anchor(plugin.name(), Gerrit.selfRedirect("/plugins/"
-              + plugin.name() + "/")));
+      if (plugin.isDisabled()) {
+        table.setText(row, 1, plugin.name());
+      } else {
+        table.setWidget(
+            row,
+            1,
+            new Anchor(plugin.name(), Gerrit.selfRedirect("/plugins/"
+                + plugin.name() + "/")));
+      }
       table.setText(row, 2, plugin.version());
+      if (plugin.isDisabled()) {
+        table.setText(row, 3, Util.C.pluginDisabled());
+      }
 
       final FlexCellFormatter fmt = table.getFlexCellFormatter();
       fmt.addStyleName(row, 1, Gerrit.RESOURCES.css().dataCell());
       fmt.addStyleName(row, 2, Gerrit.RESOURCES.css().dataCell());
+      fmt.addStyleName(row, 3, Gerrit.RESOURCES.css().dataCell());
 
       setRowItem(row, plugin);
     }
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/plugins/PluginInfo.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/plugins/PluginInfo.java
index 454c97b..ace4a49 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/plugins/PluginInfo.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/plugins/PluginInfo.java
@@ -20,6 +20,8 @@
 
   public final native String name() /*-{ return this.name; }-*/;
   public final native String version() /*-{ return this.version; }-*/;
+  public final native boolean isDisabled()
+      /*-{ return this.disabled ? true : false; }-*/;
 
   protected PluginInfo() {
   }
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/plugins/PluginMap.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/plugins/PluginMap.java
index 0f2ab4c..6eca206 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/plugins/PluginMap.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/plugins/PluginMap.java
@@ -21,7 +21,7 @@
 /** Plugins available from {@code /plugins/}. */
 public class PluginMap extends NativeMap<PluginInfo> {
   public static void all(AsyncCallback<PluginMap> callback) {
-    new RestApi("/plugins/")
+    new RestApi("/plugins/").addParameterTrue("all")
         .send(NativeMap.copyKeysIntoChildren(callback));
   }