InlineEdit: Preserve active edit mode on change screen reload
Change-Id: I764772b55f20ccc7565aa3eb15785d0a0425914f
This commit is contained in:
@@ -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 + "/";
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user