On change of user preferences create AccountInfoPreferences directly

To send the new user preferences to the server an
AccountGeneralPreferences object was created which was then converted
into an AccountInfoPreferences object. Rather create the
AccountInfoPreferences object directly without instantiating any
AccountGeneralPreferences object.

Change-Id: I1f7589c631388966e58930fd6b580c49c42dbd75
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/AccountPreferencesInfo.java b/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/AccountPreferencesInfo.java
index 96bdaef..4482fd0 100644
--- a/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/AccountPreferencesInfo.java
+++ b/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/AccountPreferencesInfo.java
@@ -31,31 +31,25 @@
     return createObject().cast();
   }
 
-  public static AccountPreferencesInfo create(AccountGeneralPreferences in,
-      List<TopMenuItem> myMenus) {
-    AccountPreferencesInfo p = createObject().cast();
-    p.changesPerPage(in.getMaximumPageSize());
-    p.showSiteHeader(in.isShowSiteHeader());
-    p.useFlashClipboard(in.isUseFlashClipboard());
-    p.downloadScheme(in.getDownloadUrl());
-    p.downloadCommand(in.getDownloadCommand());
-    p.copySelfOnEmail(in.isCopySelfOnEmails());
-    p.dateFormat(in.getDateFormat());
-    p.timeFormat(in.getTimeFormat());
-    p.relativeDateInChangeTable(in.isRelativeDateInChangeTable());
-    p.sizeBarInChangeTable(in.isSizeBarInChangeTable());
-    p.legacycidInChangeTable(in.isLegacycidInChangeTable());
-    p.muteCommonPathPrefixes(in.isMuteCommonPathPrefixes());
-    p.reviewCategoryStrategy(in.getReviewCategoryStrategy());
-    p.diffView(in.getDiffView());
-    if (myMenus != null) {
-      p.setMyMenus(myMenus);
-    }
-    return p;
-  }
-
   public static AccountPreferencesInfo createDefault() {
-    return create(AccountGeneralPreferences.createDefault(), null);
+    AccountGeneralPreferences defaultPrefs =
+        AccountGeneralPreferences.createDefault();
+    AccountPreferencesInfo p = createObject().cast();
+    p.changesPerPage(defaultPrefs.getMaximumPageSize());
+    p.showSiteHeader(defaultPrefs.isShowSiteHeader());
+    p.useFlashClipboard(defaultPrefs.isUseFlashClipboard());
+    p.downloadScheme(defaultPrefs.getDownloadUrl());
+    p.downloadCommand(defaultPrefs.getDownloadCommand());
+    p.copySelfOnEmail(defaultPrefs.isCopySelfOnEmails());
+    p.dateFormat(defaultPrefs.getDateFormat());
+    p.timeFormat(defaultPrefs.getTimeFormat());
+    p.relativeDateInChangeTable(defaultPrefs.isRelativeDateInChangeTable());
+    p.sizeBarInChangeTable(defaultPrefs.isSizeBarInChangeTable());
+    p.legacycidInChangeTable(defaultPrefs.isLegacycidInChangeTable());
+    p.muteCommonPathPrefixes(defaultPrefs.isMuteCommonPathPrefixes());
+    p.reviewCategoryStrategy(defaultPrefs.getReviewCategoryStrategy());
+    p.diffView(defaultPrefs.getDiffView());
+    return p;
   }
 
   public final short changesPerPage() {
@@ -194,7 +188,7 @@
   private final native void diffViewRaw(String d)
   /*-{ this.diff_view = d }-*/;
 
-  final void setMyMenus(List<TopMenuItem> myMenus) {
+  public final void setMyMenus(List<TopMenuItem> myMenus) {
     initMy();
     for (TopMenuItem n : myMenus) {
       addMy(n);
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java
index 5c27eec..2b20ad6 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java
@@ -334,39 +334,39 @@
   }
 
   private void doSave() {
-    AccountGeneralPreferences p = new AccountGeneralPreferences();
-    p.setShowSiteHeader(showSiteHeader.getValue());
-    p.setUseFlashClipboard(useFlashClipboard.getValue());
-    p.setCopySelfOnEmails(copySelfOnEmails.getValue());
-    p.setMaximumPageSize(getListBox(maximumPageSize, DEFAULT_PAGESIZE));
-    p.setDateFormat(getListBox(dateFormat,
+    AccountPreferencesInfo p = AccountPreferencesInfo.create();
+    p.showSiteHeader(showSiteHeader.getValue());
+    p.useFlashClipboard(useFlashClipboard.getValue());
+    p.copySelfOnEmail(copySelfOnEmails.getValue());
+    p.changesPerPage(getListBox(maximumPageSize, DEFAULT_PAGESIZE));
+    p.dateFormat(getListBox(dateFormat,
         AccountGeneralPreferences.DateFormat.STD,
         AccountGeneralPreferences.DateFormat.values()));
-    p.setTimeFormat(getListBox(timeFormat,
+    p.timeFormat(getListBox(timeFormat,
         AccountGeneralPreferences.TimeFormat.HHMM_12,
         AccountGeneralPreferences.TimeFormat.values()));
-    p.setRelativeDateInChangeTable(relativeDateInChangeTable.getValue());
-    p.setSizeBarInChangeTable(sizeBarInChangeTable.getValue());
-    p.setLegacycidInChangeTable(legacycidInChangeTable.getValue());
-    p.setMuteCommonPathPrefixes(muteCommonPathPrefixes.getValue());
-    p.setReviewCategoryStrategy(getListBox(reviewCategoryStrategy,
+    p.relativeDateInChangeTable(relativeDateInChangeTable.getValue());
+    p.sizeBarInChangeTable(sizeBarInChangeTable.getValue());
+    p.legacycidInChangeTable(legacycidInChangeTable.getValue());
+    p.muteCommonPathPrefixes(muteCommonPathPrefixes.getValue());
+    p.reviewCategoryStrategy(getListBox(reviewCategoryStrategy,
         ReviewCategoryStrategy.NONE,
         ReviewCategoryStrategy.values()));
-    p.setDiffView(getListBox(diffView,
+    p.diffView(getListBox(diffView,
         AccountGeneralPreferences.DiffView.SIDE_BY_SIDE,
         AccountGeneralPreferences.DiffView.values()));
 
-    enable(false);
-    save.setEnabled(false);
-
     List<TopMenuItem> items = new ArrayList<>();
     for (List<String> v : myMenus.getValues()) {
       items.add(TopMenuItem.create(v.get(0), v.get(1)));
     }
+    p.setMyMenus(items);
+
+    enable(false);
+    save.setEnabled(false);
 
     AccountApi.self().view("preferences")
-        .put(AccountPreferencesInfo.create(p, items),
-            new GerritCallback<AccountPreferencesInfo>() {
+        .put(p, new GerritCallback<AccountPreferencesInfo>() {
           @Override
           public void onSuccess(AccountPreferencesInfo prefs) {
             Gerrit.setUserPreferences(prefs);