Move 'Publish' and 'Delete Change/Revision' buttons into header
If a change/revision is a draft the natural next step is to publish
(or delete) it, hence these buttons should be displayed in a more
prominent place.
Change-Id: I4aa756152548ef78cd9dc9a67ecc397a3af12ff7
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.java
index 1a7e852..bee2f53 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.java
@@ -27,7 +27,6 @@
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
-import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
@@ -45,9 +44,6 @@
private static final Binder uiBinder = GWT.create(Binder.class);
@UiField Button cherrypick;
- @UiField Button deleteChange;
- @UiField Button deleteRevision;
- @UiField Button publish;
@UiField Button rebase;
@UiField Button revert;
@UiField Button submit;
@@ -101,7 +97,6 @@
actions.copyKeysIntoChildren("id");
if (hasUser) {
- a2b(actions, "/", deleteChange);
a2b(actions, "abandon", abandon);
a2b(actions, "restore", restore);
a2b(actions, "revert", revert);
@@ -130,9 +125,7 @@
.append(action.label())
.closeDiv());
}
- a2b(actions, "/", deleteRevision);
a2b(actions, "cherrypick", cherrypick);
- a2b(actions, "publish", publish);
a2b(actions, "rebase", rebase);
for (String id : filterNonCore(actions)) {
add(new ActionButton(info, revInfo, actions.get(id)));
@@ -177,25 +170,6 @@
abandonAction.show();
}
- @UiHandler("publish")
- void onPublish(@SuppressWarnings("unused") ClickEvent e) {
- DraftActions.publish(changeId, revision);
- }
-
- @UiHandler("deleteRevision")
- void onDeleteRevision(@SuppressWarnings("unused") ClickEvent e) {
- if (Window.confirm(Resources.C.deleteDraftRevision())) {
- DraftActions.delete(changeId, revision);
- }
- }
-
- @UiHandler("deleteChange")
- void onDeleteChange(@SuppressWarnings("unused") ClickEvent e) {
- if (Window.confirm(Resources.C.deleteDraftChange())) {
- DraftActions.delete(changeId);
- }
- }
-
@UiHandler("restore")
void onRestore(@SuppressWarnings("unused") ClickEvent e) {
if (restoreAction == null) {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.ui.xml
index c1e584d..40d732a 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.ui.xml
@@ -69,16 +69,6 @@
<g:Button ui:field='revert' styleName='' visible='false'>
<div><ui:msg>Revert</ui:msg></div>
</g:Button>
- <g:Button ui:field='deleteChange' styleName='' visible='false'>
- <div><ui:msg>Delete Change</ui:msg></div>
- </g:Button>
- <g:Button ui:field='deleteRevision' styleName='' visible='false'>
- <div><ui:msg>Delete Revision</ui:msg></div>
- </g:Button>
- <g:Button ui:field='publish' styleName='' visible='false'>
- <div><ui:msg>Publish</ui:msg></div>
- </g:Button>
-
<g:Button ui:field='abandon' styleName='' visible='false'>
<div><ui:msg>Abandon</ui:msg></div>
</g:Button>
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 ac642ea..adfd8c0 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
@@ -183,6 +183,9 @@
@UiField Button publishEdit;
@UiField Button rebaseEdit;
@UiField Button deleteEdit;
+ @UiField Button publish;
+ @UiField Button deleteChange;
+ @UiField Button deleteRevision;
@UiField Button openAll;
@UiField Button editMode;
@UiField Button reviewMode;
@@ -385,6 +388,19 @@
}
}
+ private void initChangeAction(ChangeInfo info) {
+ if (info.status() == Status.DRAFT) {
+ NativeMap<ActionInfo> actions = info.has_actions()
+ ? info.actions()
+ : NativeMap.<ActionInfo> create();
+ actions.copyKeysIntoChildren("id");
+ if (actions.containsKey("/")) {
+ deleteChange.setVisible(true);
+ deleteChange.setTitle(actions.get("/").title());
+ }
+ }
+ }
+
private void initRevisionsAction(ChangeInfo info, String revision) {
int currentPatchSet;
if (info.current_revision() != null
@@ -410,6 +426,23 @@
patchSetsAction = new PatchSetsAction(
info.legacy_id(), revision,
style, headerLine, patchSets);
+
+ RevisionInfo revInfo = info.revision(revision);
+ if (revInfo.draft()) {
+ NativeMap<ActionInfo> actions = revInfo.has_actions()
+ ? revInfo.actions()
+ : NativeMap.<ActionInfo> create();
+ actions.copyKeysIntoChildren("id");
+
+ if (actions.containsKey("publish")) {
+ publish.setVisible(true);
+ publish.setTitle(actions.get("publish").title());
+ }
+ if (actions.containsKey("/")) {
+ deleteRevision.setVisible(true);
+ deleteRevision.setTitle(actions.get("/").title());
+ }
+ }
}
private void initDownloadAction(ChangeInfo info, String revision) {
@@ -533,6 +566,25 @@
}
}
+ @UiHandler("publish")
+ void onPublish(@SuppressWarnings("unused") ClickEvent e) {
+ DraftActions.publish(changeId, revision);
+ }
+
+ @UiHandler("deleteRevision")
+ void onDeleteRevision(@SuppressWarnings("unused") ClickEvent e) {
+ if (Window.confirm(Resources.C.deleteDraftRevision())) {
+ DraftActions.delete(changeId, revision);
+ }
+ }
+
+ @UiHandler("deleteChange")
+ void onDeleteChange(@SuppressWarnings("unused") ClickEvent e) {
+ if (Window.confirm(Resources.C.deleteDraftChange())) {
+ DraftActions.delete(changeId);
+ }
+ }
+
@Override
public void registerKeys() {
super.registerKeys();
@@ -1023,6 +1075,7 @@
renderDiffBaseListBox(info);
initReplyButton(info, revision);
initIncludedInAction(info);
+ initChangeAction(info);
initRevisionsAction(info, revision);
initDownloadAction(info, revision);
initProjectLinks(info);
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.ui.xml
index 289051b..52f342e 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.ui.xml
@@ -375,6 +375,15 @@
<g:Button ui:field='deleteEdit' styleName='' visible='false'>
<div><ui:msg>Delete Edit</ui:msg></div>
</g:Button>
+ <g:Button ui:field='publish' styleName='' visible='false'>
+ <div><ui:msg>Publish</ui:msg></div>
+ </g:Button>
+ <g:Button ui:field='deleteChange' styleName='' visible='false'>
+ <div><ui:msg>Delete Change</ui:msg></div>
+ </g:Button>
+ <g:Button ui:field='deleteRevision' styleName='' visible='false'>
+ <div><ui:msg>Delete Revision</ui:msg></div>
+ </g:Button>
</div>
</div>