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 1a7e852705..bee2f539e7 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.event.dom.client.ClickEvent; 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 @@ class Actions extends Composite { 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 @@ class Actions extends Composite { actions.copyKeysIntoChildren("id"); if (hasUser) { - a2b(actions, "/", deleteChange); a2b(actions, "abandon", abandon); a2b(actions, "restore", restore); a2b(actions, "revert", revert); @@ -130,9 +125,7 @@ class Actions extends Composite { .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 @@ class Actions extends Composite { 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 c1e584d52a..40d732a452 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 @@ limitations under the License.
Revert
- -
Delete Change
-
- -
Delete Revision
-
- -
Publish
-
-
Abandon
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 ac642ea1dc..adfd8c0974 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 @@ public class ChangeScreen2 extends Screen { @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 @@ public class ChangeScreen2 extends Screen { } } + private void initChangeAction(ChangeInfo info) { + if (info.status() == Status.DRAFT) { + NativeMap actions = info.has_actions() + ? info.actions() + : NativeMap. 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 @@ public class ChangeScreen2 extends Screen { patchSetsAction = new PatchSetsAction( info.legacy_id(), revision, style, headerLine, patchSets); + + RevisionInfo revInfo = info.revision(revision); + if (revInfo.draft()) { + NativeMap actions = revInfo.has_actions() + ? revInfo.actions() + : NativeMap. 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 @@ public class ChangeScreen2 extends Screen { } } + @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 @@ public class ChangeScreen2 extends Screen { 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 289051b8dd..52f342e663 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 @@ limitations under the License.
Delete Edit
+ +
Publish
+
+ +
Delete Change
+
+ +
Delete Revision
+