| // Copyright (C) 2014 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package com.google.gerrit.client.info; |
| |
| import com.google.gerrit.client.rpc.NativeMap; |
| import com.google.gerrit.client.rpc.NativeString; |
| import com.google.gerrit.client.rpc.Natives; |
| import com.google.gerrit.reviewdb.client.AccountGeneralPreferences; |
| import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.DateFormat; |
| import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.DiffView; |
| import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.DownloadCommand; |
| import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.ReviewCategoryStrategy; |
| import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.TimeFormat; |
| import com.google.gwt.core.client.JavaScriptObject; |
| import com.google.gwt.core.client.JsArray; |
| |
| import java.util.HashMap; |
| import java.util.List; |
| import java.util.Map; |
| |
| public class AccountPreferencesInfo extends JavaScriptObject { |
| public static AccountPreferencesInfo create() { |
| return createObject().cast(); |
| } |
| |
| public static AccountPreferencesInfo createDefault() { |
| 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() { |
| short changesPerPage = |
| get("changes_per_page", AccountGeneralPreferences.DEFAULT_PAGESIZE); |
| return 0 < changesPerPage |
| ? changesPerPage |
| : AccountGeneralPreferences.DEFAULT_PAGESIZE; |
| } |
| private final native short get(String n, int d) |
| /*-{ return this.hasOwnProperty(n) ? this[n] : d }-*/; |
| |
| public final native boolean showSiteHeader() |
| /*-{ return this.show_site_header || false }-*/; |
| |
| public final native boolean useFlashClipboard() |
| /*-{ return this.use_flash_clipboard || false }-*/; |
| |
| public final native String downloadScheme() |
| /*-{ return this.download_scheme }-*/; |
| |
| public final DownloadCommand downloadCommand() { |
| String s = downloadCommandRaw(); |
| return s != null ? DownloadCommand.valueOf(s) : null; |
| } |
| private final native String downloadCommandRaw() |
| /*-{ return this.download_command }-*/; |
| |
| public final native boolean copySelfOnEmail() |
| /*-{ return this.copy_self_on_email || false }-*/; |
| |
| public final DateFormat dateFormat() { |
| String s = dateFormatRaw(); |
| return s != null ? DateFormat.valueOf(s) : null; |
| } |
| private final native String dateFormatRaw() |
| /*-{ return this.date_format }-*/; |
| |
| public final TimeFormat timeFormat() { |
| String s = timeFormatRaw(); |
| return s != null ? TimeFormat.valueOf(s) : null; |
| } |
| private final native String timeFormatRaw() |
| /*-{ return this.time_format }-*/; |
| |
| public final native boolean relativeDateInChangeTable() |
| /*-{ return this.relative_date_in_change_table || false }-*/; |
| |
| public final native boolean sizeBarInChangeTable() |
| /*-{ return this.size_bar_in_change_table || false }-*/; |
| |
| public final native boolean legacycidInChangeTable() |
| /*-{ return this.legacycid_in_change_table || false }-*/; |
| |
| public final native boolean muteCommonPathPrefixes() |
| /*-{ return this.mute_common_path_prefixes || false }-*/; |
| |
| public final ReviewCategoryStrategy reviewCategoryStrategy() { |
| String s = reviewCategeoryStrategyRaw(); |
| return s != null ? ReviewCategoryStrategy.valueOf(s) : ReviewCategoryStrategy.NONE; |
| } |
| private final native String reviewCategeoryStrategyRaw() |
| /*-{ return this.review_category_strategy }-*/; |
| |
| public final DiffView diffView() { |
| String s = diffViewRaw(); |
| return s != null ? DiffView.valueOf(s) : null; |
| } |
| private final native String diffViewRaw() |
| /*-{ return this.diff_view }-*/; |
| |
| public final native JsArray<TopMenuItem> my() |
| /*-{ return this.my; }-*/; |
| |
| public final native void changesPerPage(short n) |
| /*-{ this.changes_per_page = n }-*/; |
| |
| public final native void showSiteHeader(boolean s) |
| /*-{ this.show_site_header = s }-*/; |
| |
| public final native void useFlashClipboard(boolean u) |
| /*-{ this.use_flash_clipboard = u }-*/; |
| |
| public final native void downloadScheme(String d) |
| /*-{ this.download_scheme = d }-*/; |
| |
| public final void downloadCommand(DownloadCommand d) { |
| downloadCommandRaw(d != null ? d.toString() : null); |
| } |
| public final native void downloadCommandRaw(String d) |
| /*-{ this.download_command = d }-*/; |
| |
| public final native void copySelfOnEmail(boolean c) |
| /*-{ this.copy_self_on_email = c }-*/; |
| |
| public final void dateFormat(DateFormat f) { |
| dateFormatRaw(f != null ? f.toString() : null); |
| } |
| private final native void dateFormatRaw(String f) |
| /*-{ this.date_format = f }-*/; |
| |
| public final void timeFormat(TimeFormat f) { |
| timeFormatRaw(f != null ? f.toString() : null); |
| } |
| private final native void timeFormatRaw(String f) |
| /*-{ this.time_format = f }-*/; |
| |
| public final native void relativeDateInChangeTable(boolean d) |
| /*-{ this.relative_date_in_change_table = d }-*/; |
| |
| public final native void sizeBarInChangeTable(boolean s) |
| /*-{ this.size_bar_in_change_table = s }-*/; |
| |
| public final native void legacycidInChangeTable(boolean s) |
| /*-{ this.legacycid_in_change_table = s }-*/; |
| |
| public final native void muteCommonPathPrefixes(boolean s) |
| /*-{ this.mute_common_path_prefixes = s }-*/; |
| |
| public final void reviewCategoryStrategy(ReviewCategoryStrategy s) { |
| reviewCategoryStrategyRaw(s != null ? s.toString() : null); |
| } |
| private final native void reviewCategoryStrategyRaw(String s) |
| /*-{ this.review_category_strategy = s }-*/; |
| |
| public final void diffView(DiffView d) { |
| diffViewRaw(d != null ? d.toString() : null); |
| } |
| private final native void diffViewRaw(String d) |
| /*-{ this.diff_view = d }-*/; |
| |
| public final void setMyMenus(List<TopMenuItem> myMenus) { |
| initMy(); |
| for (TopMenuItem n : myMenus) { |
| addMy(n); |
| } |
| } |
| final native void initMy() /*-{ this.my = []; }-*/; |
| final native void addMy(TopMenuItem m) /*-{ this.my.push(m); }-*/; |
| |
| public final Map<String, String> urlAliases() { |
| Map<String, String> urlAliases = new HashMap<>(); |
| for (String k : Natives.keys(_urlAliases())) { |
| urlAliases.put(k, urlAliasToken(k)); |
| } |
| return urlAliases; |
| } |
| |
| private final native String urlAliasToken(String m) /*-{ return this.url_aliases[m]; }-*/; |
| private final native NativeMap<NativeString> _urlAliases() /*-{ return this.url_aliases; }-*/; |
| |
| public final void setUrlAliases(Map<String, String> urlAliases) { |
| initUrlAliases(); |
| for (Map.Entry<String, String> e : urlAliases.entrySet()) { |
| putUrlAlias(e.getKey(), e.getValue()); |
| } |
| } |
| private final native void putUrlAlias(String m, String t) /*-{ this.url_aliases[m] = t; }-*/; |
| private final native void initUrlAliases() /*-{ this.url_aliases = {}; }-*/; |
| |
| protected AccountPreferencesInfo() { |
| } |
| } |