001 /*
002 * Sonar, open source software quality management tool.
003 * Copyright (C) 2009 SonarSource SA
004 * mailto:contact AT sonarsource DOT com
005 *
006 * Sonar is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU Lesser General Public
008 * License as published by the Free Software Foundation; either
009 * version 3 of the License, or (at your option) any later version.
010 *
011 * Sonar is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014 * Lesser General Public License for more details.
015 *
016 * You should have received a copy of the GNU Lesser General Public
017 * License along with Sonar; if not, write to the Free Software
018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
019 */
020 package org.sonar.api.web.gwt.client;
021
022 import com.google.gwt.i18n.client.Dictionary;
023 import com.google.gwt.i18n.client.NumberFormat;
024 import com.google.gwt.user.client.DOM;
025 import com.google.gwt.user.client.Element;
026 import com.google.gwt.user.client.Window;
027 import org.sonar.api.web.gwt.client.webservices.Resource;
028
029 import java.util.Set;
030
031 /**
032 * @since 1.10
033 */
034 public final class Utils {
035 private Utils() {
036 }
037
038 public static String getConfiguration(String key) {
039 return getConfiguration(key, null);
040 }
041
042 public static String getConfiguration(String key, String defaultValue) {
043 String result = getDictionaryEntry("config", key);
044 if (result == null) {
045 result = defaultValue;
046 }
047 return result;
048 }
049
050 public static native void setConfiguration(String key, String val) /*-{
051 $wnd.config[key] = val;
052 }-*/;
053
054 public static String getRequestParameter(String key) {
055 return getDictionaryEntry("request_parameters", key);
056 }
057
058 public static Set<String> getConfigurationKeys() {
059 return getDictionaryKeys("config");
060 }
061
062 public static Set<String> getRequestParameterNames() {
063 return getDictionaryKeys("request_parameters");
064 }
065
066 private static String getDictionaryEntry(String dictionaryName, String key) {
067 try {
068 Dictionary dic = Dictionary.getDictionary(dictionaryName);
069 if (dic != null) {
070 return dic.get(key);
071 }
072 return null;
073
074 } catch (Exception e) {
075 return null;
076 }
077 }
078
079 private static Set<String> getDictionaryKeys(String dictionaryName) {
080 Dictionary dic = Dictionary.getDictionary(dictionaryName);
081 if (dic != null) {
082 return dic.keySet();
083 }
084 return null;
085 }
086
087 public static String widgetGWTIdJSEncode(String widgetGWTId) {
088 return widgetGWTId.replace('.', '_');
089 }
090
091 public static String getServerUrl() {
092 return getConfiguration("sonar_url");
093 }
094
095 public static String getServerApiUrl() {
096 return getServerUrl() + "/api";
097 }
098
099 public static String escapeHtml(String maybeHtml) {
100 final Element div = DOM.createDiv();
101 DOM.setInnerText(div, maybeHtml);
102 return DOM.getInnerHTML(div);
103 }
104
105 public static String formatPercent(String percentage) {
106 return percentage == null || percentage.equals("") ? "" : formatPercent(new Double(percentage));
107 }
108
109 public static String formatPercent(double percentage) {
110 return NumberFormat.getFormat("0.0").format(percentage) + "%";
111 }
112
113 public static String formatNumber(String number) {
114 return number == null || number.equals("") ? "" : formatNumber(new Double(number));
115 }
116
117 public static String formatNumber(double number) {
118 return NumberFormat.getDecimalFormat().format(number);
119 }
120
121 public static native void showError(String message) /*-{
122 $wnd.error(message);
123 }-*/;
124
125 public static native void showWarning(String message) /*-{
126 $wnd.warning(message);
127 }-*/;
128
129 public static native void showInfo(String message) /*-{
130 $wnd.info(message);
131 }-*/;
132
133 /**
134 * Display the resource in a popup.
135 *
136 * @param resource the resource to display, not null
137 * @param metricKey the metric to highlight (optional : can be null)
138 */
139 public static void openResourcePopup(final Resource resource, final String metricKey) {
140 String url = Utils.getServerUrl() + "/resource/index/" + resource.getId();
141 if (metricKey != null) {
142 url += "?" + ResourceDictionary.CONF_V_METRIC_KEY + "=" + metricKey;
143 }
144 Window.open(url, "resource", "height=800,width=900,scrollbars=1,resizable=1");
145 }
146 }
147
148