InlineEdit: Handle enter event in add file dialog box

Bug: Issue 3244
Change-Id: I90d05e3e5a16e1f3dd1819c99125ead5b2ed8853
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileAction.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileAction.java
index d08d09c..f74ebf6 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileAction.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileAction.java
@@ -28,16 +28,18 @@
   private final RevisionInfo revision;
   private final ChangeScreen.Style style;
   private final Widget addButton;
+  private final FileTable files;
 
   private AddFileBox addBox;
   private PopupPanel popup;
 
   AddFileAction(Change.Id changeId, RevisionInfo revision,
-      ChangeScreen.Style style, Widget addButton) {
+      ChangeScreen.Style style, Widget addButton, FileTable files) {
     this.changeId = changeId;
     this.revision = revision;
     this.style = style;
     this.addButton = addButton;
+    this.files = files;
   }
 
   public void onEdit() {
@@ -46,8 +48,9 @@
       return;
     }
 
+    files.unregisterKeys();
     if (addBox == null) {
-      addBox = new AddFileBox(changeId, revision);
+      addBox = new AddFileBox(changeId, revision, files);
     }
     addBox.clearPath();
 
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileBox.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileBox.java
index b63718f..7245e47 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileBox.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileBox.java
@@ -41,6 +41,7 @@
 
   private final Change.Id changeId;
   private final RevisionInfo revision;
+  private final FileTable fileTable;
 
   @UiField Button open;
   @UiField Button cancel;
@@ -48,9 +49,10 @@
   @UiField(provided = true)
   RemoteSuggestBox path;
 
-  AddFileBox(Change.Id changeId, RevisionInfo revision) {
+  AddFileBox(Change.Id changeId, RevisionInfo revision, FileTable files) {
     this.changeId = changeId;
     this.revision = revision;
+    this.fileTable = files;
 
     path = new RemoteSuggestBox(new PathSuggestOracle(changeId, revision));
     path.addSelectionHandler(new SelectionHandler<String>() {
@@ -63,6 +65,7 @@
       @Override
       public void onClose(CloseEvent<RemoteSuggestBox> event) {
         hide();
+        fileTable.registerKeys();
       }
     });
 
@@ -92,6 +95,7 @@
   @UiHandler("cancel")
   void onCancel(@SuppressWarnings("unused") ClickEvent e) {
     hide();
+    fileTable.registerKeys();
   }
 
   private void hide() {
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 b875772..db7b485 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
@@ -492,7 +492,7 @@
         reviewMode.setVisible(!editMode.isVisible());
         addFileAction = new AddFileAction(
             changeId, info.revision(revision),
-            style, addFile);
+            style, addFile, files);
         deleteFileAction = new DeleteFileAction(
             changeId, info.revision(revision),
             style, addFile);
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java
index fc62c46..2947be8 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java
@@ -224,6 +224,14 @@
     }
   }
 
+  void unregisterKeys() {
+    register = false;
+
+    if (table != null) {
+      table.setRegisterKeys(false);
+    }
+  }
+
   void registerKeys() {
     register = true;
 
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.java
index 0e19e46..dd36657 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditScreen.java
@@ -347,7 +347,7 @@
   private void initEditor(HttpResponse<NativeString> file) {
     ModeInfo mode = null;
     String content = "";
-    if (file != null) {
+    if (file != null && file.getResult() != null) {
       content = file.getResult().asString();
       if (prefs.syntaxHighlighting()) {
         mode = ModeInfo.findMode(file.getContentType(), path);