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 c3e66737c3..9b004f9c74 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 @@ -627,20 +627,22 @@ public class ChangeScreen extends Screen { @UiHandler("publish") void onPublish(@SuppressWarnings("unused") ClickEvent e) { - DraftActions.publish(changeId, revision); + DraftActions.publish(changeId, revision, publish, deleteRevision, + deleteChange); } @UiHandler("deleteRevision") void onDeleteRevision(@SuppressWarnings("unused") ClickEvent e) { if (Window.confirm(Resources.C.deleteDraftRevision())) { - DraftActions.delete(changeId, revision); + DraftActions.delete(changeId, revision, publish, deleteRevision, + deleteChange); } } @UiHandler("deleteChange") void onDeleteChange(@SuppressWarnings("unused") ClickEvent e) { if (Window.confirm(Resources.C.deleteDraftChange())) { - DraftActions.delete(changeId); + DraftActions.delete(changeId, publish, deleteRevision, deleteChange); } } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/DraftActions.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/DraftActions.java index 634190a239..67875768ff 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/DraftActions.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/DraftActions.java @@ -21,23 +21,25 @@ import com.google.gerrit.common.PageLinks; import com.google.gerrit.reviewdb.client.Change; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Button; public class DraftActions { - static void publish(Change.Id id, String revision) { - ChangeApi.publish(id.get(), revision, cs(id)); + static void publish(Change.Id id, String revision, Button... draftButtons) { + ChangeApi.publish(id.get(), revision, cs(id, draftButtons)); } - static void delete(Change.Id id, String revision) { - ChangeApi.deleteRevision(id.get(), revision, cs(id)); + static void delete(Change.Id id, String revision, Button... draftButtons) { + ChangeApi.deleteRevision(id.get(), revision, cs(id, draftButtons)); } - static void delete(Change.Id id) { - ChangeApi.deleteChange(id.get(), mine()); + static void delete(Change.Id id, Button... draftButtons) { + ChangeApi.deleteChange(id.get(), mine(draftButtons)); } public static GerritCallback cs( - final Change.Id id) { + final Change.Id id, final Button... draftButtons) { + setEnabled(false, draftButtons); return new GerritCallback() { @Override public void onSuccess(JavaScriptObject result) { @@ -46,6 +48,7 @@ public class DraftActions { @Override public void onFailure(Throwable err) { + setEnabled(true, draftButtons); if (SubmitFailureDialog.isConflict(err)) { new SubmitFailureDialog(err.getMessage()).center(); Gerrit.display(PageLinks.toChange(id)); @@ -56,7 +59,9 @@ public class DraftActions { }; } - private static AsyncCallback mine() { + private static AsyncCallback mine( + final Button... draftButtons) { + setEnabled(false, draftButtons); return new GerritCallback() { @Override public void onSuccess(JavaScriptObject result) { @@ -65,6 +70,7 @@ public class DraftActions { @Override public void onFailure(Throwable err) { + setEnabled(true, draftButtons); if (SubmitFailureDialog.isConflict(err)) { new SubmitFailureDialog(err.getMessage()).center(); Gerrit.display(PageLinks.MINE); @@ -74,4 +80,12 @@ public class DraftActions { } }; } + + private static void setEnabled(boolean enabled, Button... draftButtons) { + if (draftButtons != null) { + for (Button b : draftButtons) { + b.setEnabled(enabled); + } + } + } }