Merge "Add missing exception declarations on methods in NotImplemented" into stable-2.14
diff --git a/Documentation/rest-api-accounts.txt b/Documentation/rest-api-accounts.txt
index 13fca66..880a1a2 100644
--- a/Documentation/rest-api-accounts.txt
+++ b/Documentation/rest-api-accounts.txt
@@ -1525,6 +1525,7 @@
     "hide_line_numbers": true,
     "match_brackets": true,
     "line_wrapping": false,
+    "indent_with_tabs": false,
     "auto_close_brackets": true
   }
 ----
@@ -2428,6 +2429,8 @@
 Default font size in pixels for change to be displayed in the diff view.
 |`line_wrapping`               |optional|
 Whether to enable line wrapping or not.
+|`indent_with_tabs`            |optional|
+Whether to enable indent with tabs or not.
 |===========================================
 
 [[edit-preferences-info]]
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/EditPreferencesIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/EditPreferencesIT.java
index 8baaa54..c1d9bcb 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/EditPreferencesIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/EditPreferencesIT.java
@@ -40,6 +40,7 @@
     assertThat(out.hideLineNumbers).isNull();
     assertThat(out.matchBrackets).isTrue();
     assertThat(out.lineWrapping).isNull();
+    assertThat(out.indentWithTabs).isNull();
     assertThat(out.autoCloseBrackets).isNull();
     assertThat(out.showBase).isNull();
     assertThat(out.theme).isEqualTo(Theme.DEFAULT);
@@ -57,6 +58,7 @@
     out.hideLineNumbers = true;
     out.matchBrackets = false;
     out.lineWrapping = true;
+    out.indentWithTabs = true;
     out.autoCloseBrackets = true;
     out.showBase = true;
     out.theme = Theme.TWILIGHT;
@@ -89,6 +91,7 @@
     assertThat(out.hideLineNumbers).isEqualTo(in.hideLineNumbers);
     assertThat(out.matchBrackets).isNull();
     assertThat(out.lineWrapping).isEqualTo(in.lineWrapping);
+    assertThat(out.indentWithTabs).isEqualTo(in.indentWithTabs);
     assertThat(out.autoCloseBrackets).isEqualTo(in.autoCloseBrackets);
     assertThat(out.showBase).isEqualTo(in.showBase);
     assertThat(out.theme).isEqualTo(in.theme);
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/client/EditPreferencesInfo.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/client/EditPreferencesInfo.java
index 84c61b7..7ab22e1 100644
--- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/client/EditPreferencesInfo.java
+++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/client/EditPreferencesInfo.java
@@ -27,6 +27,7 @@
   public Boolean hideLineNumbers;
   public Boolean matchBrackets;
   public Boolean lineWrapping;
+  public Boolean indentWithTabs;
   public Boolean autoCloseBrackets;
   public Boolean showBase;
   public Theme theme;
@@ -45,6 +46,7 @@
     i.hideLineNumbers = false;
     i.matchBrackets = true;
     i.lineWrapping = false;
+    i.indentWithTabs = false;
     i.autoCloseBrackets = false;
     i.showBase = false;
     i.theme = Theme.DEFAULT;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/EditPreferences.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/EditPreferences.java
index 8fcea85..9cd2f17 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/EditPreferences.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/EditPreferences.java
@@ -33,6 +33,7 @@
     p.hideLineNumbers(in.hideLineNumbers);
     p.matchBrackets(in.matchBrackets);
     p.lineWrapping(in.lineWrapping);
+    p.indentWithTabs(in.indentWithTabs);
     p.autoCloseBrackets(in.autoCloseBrackets);
     p.showBase(in.showBase);
     p.theme(in.theme);
@@ -52,6 +53,7 @@
     p.hideLineNumbers = hideLineNumbers();
     p.matchBrackets = matchBrackets();
     p.lineWrapping = lineWrapping();
+    p.indentWithTabs = indentWithTabs();
     p.autoCloseBrackets = autoCloseBrackets();
     p.showBase = showBase();
     p.theme = theme();
@@ -94,6 +96,8 @@
 
   public final native void lineWrapping(boolean w) /*-{ this.line_wrapping = w }-*/;
 
+  public final native void indentWithTabs(boolean w) /*-{ this.indent_with_tabs = w }-*/;
+
   public final native void autoCloseBrackets(boolean c) /*-{ this.auto_close_brackets = c }-*/;
 
   public final native void showBase(boolean s) /*-{ this.show_base = s }-*/;
@@ -144,6 +148,8 @@
 
   public final native boolean lineWrapping() /*-{ return this.line_wrapping || false }-*/;
 
+  public final native boolean indentWithTabs() /*-{ return this.indent_with_tabs || false }-*/;
+
   public final native boolean
       autoCloseBrackets() /*-{ return this.auto_close_brackets || false }-*/;
 
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditPreferencesBox.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditPreferencesBox.java
index de2c739..328c3a0 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditPreferencesBox.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditPreferencesBox.java
@@ -69,6 +69,7 @@
   @UiField ToggleButton lineNumbers;
   @UiField ToggleButton matchBrackets;
   @UiField ToggleButton lineWrapping;
+  @UiField ToggleButton indentWithTabs;
   @UiField ToggleButton autoCloseBrackets;
   @UiField ToggleButton showBase;
   @UiField ListBox theme;
@@ -106,6 +107,7 @@
     lineNumbers.setValue(prefs.hideLineNumbers());
     matchBrackets.setValue(prefs.matchBrackets());
     lineWrapping.setValue(prefs.lineWrapping());
+    indentWithTabs.setValue(prefs.indentWithTabs());
     autoCloseBrackets.setValue(prefs.autoCloseBrackets());
     showBase.setValue(prefs.showBase());
     setTheme(prefs.theme());
@@ -215,6 +217,15 @@
     }
   }
 
+  @UiHandler("indentWithTabs")
+  void onIndentWithTabs(ValueChangeEvent<Boolean> e) {
+    prefs.indentWithTabs(e.getValue());
+    if (view != null) {
+      view.getEditor().setOption("indentWithTabs", prefs.indentWithTabs());
+    }
+  }
+
+
   @UiHandler("autoCloseBrackets")
   void onCloseBrackets(ValueChangeEvent<Boolean> e) {
     prefs.autoCloseBrackets(e.getValue());
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditPreferencesBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditPreferencesBox.ui.xml
index 6379b67..f5ec71e 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditPreferencesBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/editor/EditPreferencesBox.ui.xml
@@ -246,6 +246,13 @@
         </g:ToggleButton></td>
       </tr>
       <tr>
+        <th><ui:msg>Indent With Tabs</ui:msg></th>
+        <td><g:ToggleButton ui:field='indentWithTabs'>
+          <g:upFace><ui:msg>Off</ui:msg></g:upFace>
+          <g:downFace><ui:msg>On</ui:msg></g:downFace>
+        </g:ToggleButton></td>
+      </tr>
+      <tr>
         <th><ui:msg>Auto Close Brackets</ui:msg></th>
         <td><g:ToggleButton ui:field='autoCloseBrackets'>
           <g:upFace><ui:msg>Off</ui:msg></g:upFace>
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 babeafc..027fb40 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
@@ -581,6 +581,7 @@
             .set("keyMap", prefs.keyMapType().name().toLowerCase())
             .set("lineNumbers", prefs.hideLineNumbers())
             .set("lineWrapping", prefs.lineWrapping())
+            .set("indentWithTabs", prefs.indentWithTabs())
             .set("matchBrackets", prefs.matchBrackets())
             .set("mode", mode != null ? mode.mime() : null)
             .set("origLeft", editContent)