InlineEdit: Preserve active edit mode on change screen reload

Change-Id: I764772b55f20ccc7565aa3eb15785d0a0425914f
This commit is contained in:
David Ostrovsky
2014-09-10 01:08:04 +02:00
parent a6d66c9b8f
commit 8762126fa6
6 changed files with 29 additions and 11 deletions

View File

@@ -50,6 +50,10 @@ public class PageLinks {
return toChange(c.getId());
}
public static String toChangeInEditMode(Change.Id c) {
return "/c/" + c + ",edit/";
}
public static String toChange(final Change.Id c) {
return "/c/" + c + "/";
}

View File

@@ -66,6 +66,7 @@ import com.google.gerrit.client.admin.ProjectListScreen;
import com.google.gerrit.client.admin.ProjectScreen;
import com.google.gerrit.client.api.ExtensionScreen;
import com.google.gerrit.client.change.ChangeScreen2;
import com.google.gerrit.client.change.FileTable;
import com.google.gerrit.client.changes.AccountDashboardScreen;
import com.google.gerrit.client.changes.ChangeScreen;
import com.google.gerrit.client.changes.CustomDashboardScreen;
@@ -535,9 +536,15 @@ public class Dispatcher {
}
if (rest.isEmpty()) {
FileTable.Mode mode = FileTable.Mode.REVIEW;
if (panel != null
&& (panel.equals("edit") || panel.startsWith("edit/"))) {
mode = FileTable.Mode.EDIT;
panel = null;
}
Gerrit.display(token, panel == null
? (isChangeScreen2()
? new ChangeScreen2(id, null, null, false)
? new ChangeScreen2(id, null, null, false, mode)
: new ChangeScreen(id))
: new NotFoundScreen());
return;
@@ -585,7 +592,7 @@ public class Dispatcher {
base != null
? String.valueOf(base.get())
: null,
String.valueOf(ps.get()), false)
String.valueOf(ps.get()), false, FileTable.Mode.REVIEW)
: new ChangeScreen(id));
} else if ("publish".equals(panel)) {
publish(ps);

View File

@@ -136,7 +136,7 @@ public class ChangeScreen2 extends Screen {
private UpdateAvailableBar updateAvailable;
private boolean openReplyBox;
private boolean loaded;
private FileTable.Mode fileTableMode = FileTable.Mode.REVIEW;
private FileTable.Mode fileTableMode;
@UiField HTMLPanel headerLine;
@UiField Style style;
@@ -188,11 +188,13 @@ public class ChangeScreen2 extends Screen {
private DownloadAction downloadAction;
private EditFileAction editFileAction;
public ChangeScreen2(Change.Id changeId, String base, String revision, boolean openReplyBox) {
public ChangeScreen2(Change.Id changeId, String base, String revision,
boolean openReplyBox, FileTable.Mode mode) {
this.changeId = changeId;
this.base = normalize(base);
this.revision = normalize(revision);
this.openReplyBox = openReplyBox;
this.fileTableMode = mode;
add(uiBinder.createAndBindUi(this));
}
@@ -413,6 +415,7 @@ public class ChangeScreen2 extends Screen {
private void initEditMode(ChangeInfo info) {
if (Gerrit.isSignedIn() && info.status() == Status.NEW) {
editMode.setVisible(fileTableMode == FileTable.Mode.REVIEW);
addFile.setVisible(!editMode.isVisible());
reviewMode.setVisible(!editMode.isVisible());
}
RevisionInfo rev = info.revision(revision);

View File

@@ -84,7 +84,7 @@ class EditFileBox extends Composite {
new AsyncCallback<VoidResult>() {
@Override
public void onSuccess(VoidResult result) {
Gerrit.display(PageLinks.toChange(id.getParentKey()));
Gerrit.display(PageLinks.toChangeInEditMode(id.getParentKey()));
hide();
}

View File

@@ -63,7 +63,7 @@ import com.google.gwtexpui.safehtml.client.SafeHtmlBuilder;
import java.sql.Timestamp;
class FileTable extends FlowPanel {
public class FileTable extends FlowPanel {
static final FileTableResources R = GWT
.create(FileTableResources.class);
@@ -92,7 +92,7 @@ class FileTable extends FlowPanel {
String removeButton();
}
enum Mode {
public static enum Mode {
REVIEW,
EDIT
}
@@ -341,7 +341,8 @@ class FileTable extends FlowPanel {
new AsyncCallback<VoidResult>() {
@Override
public void onSuccess(VoidResult result) {
Gerrit.display(PageLinks.toChange(curr.getParentKey()));
Gerrit.display(PageLinks.toChangeInEditMode(
curr.getParentKey()));
}
@Override
@@ -356,7 +357,8 @@ class FileTable extends FlowPanel {
new AsyncCallback<VoidResult>() {
@Override
public void onSuccess(VoidResult result) {
Gerrit.display(PageLinks.toChange(curr.getParentKey()));
Gerrit.display(PageLinks.toChangeInEditMode(
curr.getParentKey()));
}
@Override

View File

@@ -21,6 +21,7 @@ import com.google.gerrit.client.Gerrit;
import com.google.gerrit.client.JumpKeys;
import com.google.gerrit.client.account.DiffPreferences;
import com.google.gerrit.client.change.ChangeScreen2;
import com.google.gerrit.client.change.FileTable;
import com.google.gerrit.client.changes.ChangeApi;
import com.google.gerrit.client.changes.ChangeInfo;
import com.google.gerrit.client.changes.ChangeInfo.EditInfo;
@@ -819,7 +820,8 @@ public class SideBySide2 extends Screen {
String rev = revision.getId();
Gerrit.display(
PageLinks.toChange(changeId, b, rev),
new ChangeScreen2(changeId, b, rev, openReplyBox));
new ChangeScreen2(changeId, b, rev, openReplyBox,
FileTable.Mode.REVIEW));
}
});
}