Add UI extension point for header bar in change screen
E.g. plugins may use this extension point to display a custom status
in the header bar on the change screen.
The cookbook plugin implements an example for this extension point.
Change-Id: I0e2e66c1c38e6e25efe749edb12cfe4e8051faeb
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/Documentation/dev-plugins.txt b/Documentation/dev-plugins.txt
index aa6cd35..123be8c 100644
--- a/Documentation/dev-plugins.txt
+++ b/Documentation/dev-plugins.txt
@@ -971,6 +971,11 @@
panels with custom controls:
* Change Screen:
+** `GerritUiExtensionPoint.CHANGE_SCREEN_HEADER`:
++
+Panel will be shown in the header bar to the right of the change
+status.
+
** `GerritUiExtensionPoint.CHANGE_SCREEN_BELOW_CHANGE_INFO_BLOCK`:
+
Panel will be shown below the change info block.
diff --git a/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/GerritUiExtensionPoint.java b/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/GerritUiExtensionPoint.java
index 93cde3b..6c7794d 100644
--- a/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/GerritUiExtensionPoint.java
+++ b/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/GerritUiExtensionPoint.java
@@ -16,6 +16,7 @@
public enum GerritUiExtensionPoint {
/* ChangeScreen */
+ CHANGE_SCREEN_HEADER,
CHANGE_SCREEN_BELOW_CHANGE_INFO_BLOCK,
/* MyPasswordScreen */
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 5a311ec..0824e9e 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
@@ -87,6 +87,7 @@
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.ToggleButton;
import com.google.gwtexpui.globalkey.client.GlobalKey;
@@ -149,6 +150,7 @@
private FileTable.Mode fileTableMode;
@UiField HTMLPanel headerLine;
+ @UiField SimplePanel headerExtension;
@UiField Style style;
@UiField ToggleButton star;
@UiField Anchor permalink;
@@ -226,10 +228,7 @@
@Override
protected void onLoad() {
super.onLoad();
- ExtensionPanel extensionPanel =
- new ExtensionPanel(GerritUiExtensionPoint.CHANGE_SCREEN_BELOW_CHANGE_INFO_BLOCK);
- extensionPanel.putInt(GerritUiExtensionPoint.Key.CHANGE_ID, changeId.get());
- changeExtension.add(extensionPanel);
+ addExtensionPoints();
CallbackGroup group = new CallbackGroup();
if (Gerrit.isSignedIn()) {
ChangeList.query("change:" + changeId.get() + " has:draft",
@@ -266,6 +265,20 @@
}));
}
+ private void addExtensionPoints() {
+ addExtensionPoint(GerritUiExtensionPoint.CHANGE_SCREEN_HEADER,
+ headerExtension);
+ addExtensionPoint(
+ GerritUiExtensionPoint.CHANGE_SCREEN_BELOW_CHANGE_INFO_BLOCK,
+ changeExtension);
+ }
+
+ private void addExtensionPoint(GerritUiExtensionPoint extensionPoint, Panel p) {
+ ExtensionPanel extensionPanel = new ExtensionPanel(extensionPoint);
+ extensionPanel.putInt(GerritUiExtensionPoint.Key.CHANGE_ID, changeId.get());
+ p.add(extensionPanel);
+ }
+
void loadChangeInfo(boolean fg, AsyncCallback<ChangeInfo> cb) {
RestApi call = ChangeApi.detail(changeId.get());
ChangeList.addOptions(call, EnumSet.of(
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 ed3be38..fa42ca8 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
@@ -81,7 +81,6 @@
display: inline-block;
position: relative;
height: HEADER_HEIGHT;
- width: 300px;
}
.star {
position: absolute;
@@ -323,6 +322,15 @@
vertical-align: bottom;
}
+ .headerExtension {
+ display: inline-block;
+ float: right;
+ }
+
+ .headerExtension>div>div {
+ float: left;
+ }
+
.changeExtension {
padding-top: 5px;
}
@@ -337,6 +345,7 @@
<ui:attribute name='title'/>
</g:Anchor> - <span ui:field='statusText' class='{style.statusText}'/></ui:msg>
</span>
+ <g:SimplePanel ui:field='headerExtension' styleName='{style.headerExtension}'/>
</div>
</div>
diff --git a/plugins/cookbook-plugin b/plugins/cookbook-plugin
index c70b288..a128968 160000
--- a/plugins/cookbook-plugin
+++ b/plugins/cookbook-plugin
@@ -1 +1 @@
-Subproject commit c70b2881cbb9ad706603d7f6fa855b233aea6135
+Subproject commit a128968cd85d73b0c7ff52a6fce4c71e71da268b