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>
This commit is contained in:
Edwin Kempin
2015-01-07 14:25:16 +01:00
parent fbfd5659f6
commit ca0ef9af2f
4 changed files with 62 additions and 36 deletions

View File

@@ -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.UiBinder;
import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler; 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.Button;
import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel; 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); private static final Binder uiBinder = GWT.create(Binder.class);
@UiField Button cherrypick; @UiField Button cherrypick;
@UiField Button deleteChange;
@UiField Button deleteRevision;
@UiField Button publish;
@UiField Button rebase; @UiField Button rebase;
@UiField Button revert; @UiField Button revert;
@UiField Button submit; @UiField Button submit;
@@ -101,7 +97,6 @@ class Actions extends Composite {
actions.copyKeysIntoChildren("id"); actions.copyKeysIntoChildren("id");
if (hasUser) { if (hasUser) {
a2b(actions, "/", deleteChange);
a2b(actions, "abandon", abandon); a2b(actions, "abandon", abandon);
a2b(actions, "restore", restore); a2b(actions, "restore", restore);
a2b(actions, "revert", revert); a2b(actions, "revert", revert);
@@ -130,9 +125,7 @@ class Actions extends Composite {
.append(action.label()) .append(action.label())
.closeDiv()); .closeDiv());
} }
a2b(actions, "/", deleteRevision);
a2b(actions, "cherrypick", cherrypick); a2b(actions, "cherrypick", cherrypick);
a2b(actions, "publish", publish);
a2b(actions, "rebase", rebase); a2b(actions, "rebase", rebase);
for (String id : filterNonCore(actions)) { for (String id : filterNonCore(actions)) {
add(new ActionButton(info, revInfo, actions.get(id))); add(new ActionButton(info, revInfo, actions.get(id)));
@@ -177,25 +170,6 @@ class Actions extends Composite {
abandonAction.show(); 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") @UiHandler("restore")
void onRestore(@SuppressWarnings("unused") ClickEvent e) { void onRestore(@SuppressWarnings("unused") ClickEvent e) {
if (restoreAction == null) { if (restoreAction == null) {

View File

@@ -69,16 +69,6 @@ limitations under the License.
<g:Button ui:field='revert' styleName='' visible='false'> <g:Button ui:field='revert' styleName='' visible='false'>
<div><ui:msg>Revert</ui:msg></div> <div><ui:msg>Revert</ui:msg></div>
</g:Button> </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'> <g:Button ui:field='abandon' styleName='' visible='false'>
<div><ui:msg>Abandon</ui:msg></div> <div><ui:msg>Abandon</ui:msg></div>
</g:Button> </g:Button>

View File

@@ -183,6 +183,9 @@ public class ChangeScreen2 extends Screen {
@UiField Button publishEdit; @UiField Button publishEdit;
@UiField Button rebaseEdit; @UiField Button rebaseEdit;
@UiField Button deleteEdit; @UiField Button deleteEdit;
@UiField Button publish;
@UiField Button deleteChange;
@UiField Button deleteRevision;
@UiField Button openAll; @UiField Button openAll;
@UiField Button editMode; @UiField Button editMode;
@UiField Button reviewMode; @UiField Button reviewMode;
@@ -385,6 +388,19 @@ public class ChangeScreen2 extends Screen {
} }
} }
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) { private void initRevisionsAction(ChangeInfo info, String revision) {
int currentPatchSet; int currentPatchSet;
if (info.current_revision() != null if (info.current_revision() != null
@@ -410,6 +426,23 @@ public class ChangeScreen2 extends Screen {
patchSetsAction = new PatchSetsAction( patchSetsAction = new PatchSetsAction(
info.legacy_id(), revision, info.legacy_id(), revision,
style, headerLine, patchSets); 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) { 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 @Override
public void registerKeys() { public void registerKeys() {
super.registerKeys(); super.registerKeys();
@@ -1023,6 +1075,7 @@ public class ChangeScreen2 extends Screen {
renderDiffBaseListBox(info); renderDiffBaseListBox(info);
initReplyButton(info, revision); initReplyButton(info, revision);
initIncludedInAction(info); initIncludedInAction(info);
initChangeAction(info);
initRevisionsAction(info, revision); initRevisionsAction(info, revision);
initDownloadAction(info, revision); initDownloadAction(info, revision);
initProjectLinks(info); initProjectLinks(info);

View File

@@ -375,6 +375,15 @@ limitations under the License.
<g:Button ui:field='deleteEdit' styleName='' visible='false'> <g:Button ui:field='deleteEdit' styleName='' visible='false'>
<div><ui:msg>Delete Edit</ui:msg></div> <div><ui:msg>Delete Edit</ui:msg></div>
</g:Button> </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>
</div> </div>