/**
* OpenKM, Open Document Management System (http://www.openkm.com)
* Copyright (c) 2006-2011 Paco Avila & Josep Llort
*
* No bytes were intentionally harmed during the development of this application.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package com.openkm.frontend.client.util;
import java.util.Map;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import com.openkm.frontend.client.Main;
import com.openkm.frontend.client.contants.service.RPCService;
public class Util {
/**
* Generates HTML for item with an attached icon.
*
* @param imageUrl the url of the icon image
* @param title the title of the item
* @return the resultant HTML
*/
public static String imageItemHTML(String imageUrl, String title) {
return "<span style='text-align:left; margin-right:4px;'><img align=\"absmidle\" style='margin-right:4px; white-space:nowrap;' src='" + imageUrl.toLowerCase() + "'>" + title + "</span>";
}
/**
* Generates HTML for item with an attached icon.
*
* @param imageUrl the url of the icon image
* @param title the title of the item
* @return the resultant HTML
*/
public static String imageItemHTML(String imageUrl, String title, String align) {
return "<span style='text-align:left; margin-right:4px;'><img align=\""+align+"\" style='margin-right:4px; white-space:nowrap;' src='" + imageUrl.toLowerCase() + "'>" + title + "</span>";
}
/**
* Generates HTML for item with an attached icon.
*
* @param imageUrl the url of the icon image
* @return the resultant HTML
*/
public static String imageItemHTML(String imageUrl) {
return "<img align=\"absmidle\" style='margin-right:4px' src='" + imageUrl.toLowerCase() + "'>";
}
/**
* Generates HTML image code with style.
*
* @param imageUrl the url of the icon image
* @param alt image alt
* @param style the style of the image
* @return the resultant HTML
*/
public static String imageHTML(String imageUrl, String alt, String style) {
if (!style.equals("")){
return "<img align=\"absmidle\"" + style + " src='" + imageUrl.toLowerCase() + "'>";
} else {
return imageHTML(imageUrl, alt);
}
}
/**
* Generates HTML image code with style.
*
* @param imageUrl the url of the icon image
* @param alt the image alt
* @return the resultant HTML
*/
public static String imageHTML(String imageUrl, String alt) {
return "<img border=\"0\" align=\"absmidle\" alt=\""+ alt +"\" title=\""+ alt +"\" src='" + imageUrl.toLowerCase() + "'>";
}
/**
* Generates HTML image code with style.
*
* @param imageUrl the url of the icon image
* @return the resultant HTML
*/
public static String imageHTML(String imageUrl) {
return imageHTML(imageUrl, "");
}
/**
* Generate HTML icon for mime-type document
*
* @param mime The document mime-type
* @return the html image of mime-type file
*/
public static String mimeImageHTML(String mime) {
return "<img align=\"absmidle\" style=\"margin-right:4px\" src=\""+Main.CONTEXT+"/mime/"+mime+"\"'>";
}
/**
* Return the menu html value
*
* @param imageUrl The image url
* @param text The text value
* @return
*/
public static String flagMenuHTML(String flag, String text) {
return "<img style='margin-right:8px; margin-left:2px; vertical-align:middle;' "+
"src=\""+Main.CONTEXT+"/flag/"+flag+"\"'>" + text;
}
/**
* Return the menu html value
*
* @param imageUrl The image url
* @param text The text value
* @return
*/
public static String menuHTML(String imageUrl, String text) {
return "<img style='margin-right:8px; margin-left:2px; vertical-align:middle;' src='"
+ imageUrl + "'>" + text;
}
/**
* Creates an HTML fragment that places an image & caption together, for use
* in a group header.
*
* @param imageUrl the url of the icon image to be used
* @param caption the group caption
* @return the header HTML fragment
*/
public static String createHeaderHTML(String imageUrl, String caption) {
return "<table align='left'><tr>" + "<td><img src='" + imageUrl + "'></td>"
+ "<td style='vertical-align:middle'><b style='white-space:nowrap; cursor: default;'>"
+ caption + "</b></td>" + "</tr></table>";
}
/**
* Creates an horizontal spacer
*
* @param width The desired width space
* @return an HTML element meaning the with
*/
public static HTML hSpace(String width) {
HTML spacer = new HTML("");
spacer.setWidth(width);
return spacer;
}
/**
* Creates an vertical spacer
*
* @param height The desired height space
* @return an HTML element meaning the height
*/
public static HTML vSpace(String height) {
HTML spacer = new HTML("");
spacer.setHeight(height);
return spacer;
}
/**
* Creates an square spacer
*
* @param width The desired width space
* @param height The desired height space
*
* @return an HTML element meaning the with and height
*/
public static HTML space(String width, String height) {
HTML spacer = new HTML("");
spacer.setWidth(width);
spacer.setHeight(height);
return spacer;
}
/**
* Creates an HTML to opens a url with text on a new window
*
* @param text The text url description
* @param uri The url to open
* @return
*/
public static String windowOpen(String text, String uri) {
return "<span onclick=\"javascript:window.open('"+ uri +"')\">" + text + "</span>";
}
/**
* isJREInstalled
*
* @return
*/
public static boolean isJREInstalled() {
String[] jreList = getJREs();
if (jreList != null && jreList.length > 0) {
return true;
} else {
return false;
}
}
/**
* Download file by UUID
*
* @param uuid
* @param params
*/
public static void downloadFileByUUID(String uuid, String params) {
if (!params.equals("") && !params.endsWith("&")) {
params += "&";
}
final Element downloadIframe = RootPanel.get("__download").getElement();
String url = RPCService.DownloadServlet + "?" + params + "uuid=" + URL.encodeQueryString(uuid);
DOM.setElementAttribute(downloadIframe, "src", url);
}
/**
* Download file
*
* @param path
* @param params
*/
public static void downloadFile(String path, String params) {
if (!params.equals("") && !params.endsWith("&")) {
params += "&";
}
final Element downloadIframe = RootPanel.get("__download").getElement();
String url = RPCService.DownloadServlet + "?" + params + "id=" + URL.encodeQueryString(path);
DOM.setElementAttribute(downloadIframe, "src", url);
}
/**
* Download file
*
* @param uuid
*/
public static void downloadFilePdf(String uuid) {
final Element downloadIframe = RootPanel.get("__download").getElement();
String url = RPCService.ConverterServlet + "?inline=false&toPdf=true&uuid=" + URL.encodeQueryString(uuid);
DOM.setElementAttribute(downloadIframe, "src", url);
}
/**
* executeReport
*
* @param id
* @param params
*/
public static void executeReport(int id, Map<String,String> params) {
String parameters = "";
if (!params.isEmpty()) {
for (String key : params.keySet()) {
parameters += "&" + key + "=" + params.get(key);
}
}
final Element downloadIframe = RootPanel.get("__download").getElement();
String url = RPCService.ReportServlet + "?" + "id=" + id + parameters;
DOM.setElementAttribute(downloadIframe, "src", url);
}
/**
* print file
*
* @param uuid
*/
public static void print(String uuid) {
// Not implemented
}
/**
* markHTMLTextAsBold
*
* @param text
* @param mark
*/
public static String getTextAsBoldHTML(String text, boolean mark) {
if (mark) {
return "<b>" + text + "</b>";
} else {
return text;
}
}
/**
* Get parent item path from path.
*
* @param path The complete item path.
* @return The parent item path.
*/
public static String getParent(String path) {
int lastSlash = path.lastIndexOf('/');
String ret = (lastSlash > 0)?path.substring(0, lastSlash):"";
return ret;
}
/**
* Get item name from path.
*
* @param path The complete item path.
* @return The name of the item.
*/
public static String getName(String path) {
String ret = path.substring(path.lastIndexOf('/')+1);
return ret;
}
/**
* Change on fly the actual css
*
* @param title The css name
*/
public static native void changeCss(String title) /*-{
new $wnd.changeCss(title);
}-*/;
/**
* Format file size in Bytes, KBytes or MBytes.
* @param size The file size in bytes.
* @return The formated file size.
*/
public static native String formatSize(double size) /*-{
if (size / 1024 < 1) {
str = size + " Bytes";
} else if (size / 1048576 < 1) {
str = (size / 1024).toFixed(1) + " KB";
} else if (size / 1073741824 < 1) {
str = (size / 1048576).toFixed(1) + " MB";
} else if (size / 1099511627776 < 1) {
str = (size / 1073741824).toFixed(1) + " GB";
} else {
str = "BIG";
}
return str;
}-*/;
/**
* Get browser language
* @return The language in ISO 639 format.
*/
public static native String getBrowserLanguage() /*-{
var lang = navigator.language? navigator.language : navigator.userLanguage;
if (lang) {
return lang;
} else {
return "en";
}
}-*/;
/**
* returns 'opera', 'safari', 'ie6', 'ie7', 'ie8', 'ie9', 'gecko' or 'unknown'.
*/
public static native String getUserAgent() /*-{
try {
if ( window.opera ) return 'opera';
var ua = navigator.userAgent.toLowerCase();
if ( ua.indexOf('chrome') != -1 ) return 'chrome';
if ( ua.indexOf('webkit' ) != -1 ) return 'safari';
if ( ua.indexOf('msie 6.0') != -1 ) return 'ie6';
if ( ua.indexOf('msie 7.0') != -1 ) return 'ie7';
if ( ua.indexOf('msie 8.0') != -1 ) return 'ie8';
if ( ua.indexOf('msie 9.0') != -1 ) return 'ie9';
if ( ua.indexOf('gecko') != -1 ) return 'gecko';
if ( ua.indexOf('opera') != -1 ) return 'opera';
return 'unknown';
} catch ( e ) { return 'unknown' }
}-*/;
public static native void removeMediaPlayer() /*-{
$wnd.swfobject.removeSWF("jsmediaplayer");
}-*/;
public static native void createMediaPlayer(String mediaUrl, String mediaProvider, String width, String height) /*-{
$wnd.swfobject.embedSWF("../js/mediaplayer/player.swf", "mediaplayercontainer", width, height, "9.0.0", "../js/mediaplayer/expressinstall.swf", {file:mediaUrl,provider:mediaProvider,autostart:"true",width:width,height:height}, {allowscriptaccess:"always",allowfullscreen: "true"}, {id:"jsmediaplayer",name:"jsmediaplayer"});
}-*/;
public static native void createPDFViewerZviewer(String pdfUrl, String width, String height) /*-{
pdfUrl = encodeURIComponent(pdfUrl);
$wnd.swfobject.embedSWF("../js/zviewer/zviewer.swf", "pdfviewercontainer", width, height, "9.0.0", "../js/mediaplayer/expressinstall.swf", {doc_url:pdfUrl}, {allowFullScreen:"true",menu:"false",bgcolor:"#efefef"}, {id:"jspdfviewer",name:"jspdfviewer"});
}-*/;
public static native void createPDFViewerFlexPaper(String pdfUrl, String width, String height, String printEnabled) /*-{
pdfUrl = encodeURIComponent(pdfUrl);
$wnd.swfobject.embedSWF("../js/flexpaper/FlexPaperViewer.swf", "pdfviewercontainer",width, height,"10.0.0", "playerProductInstall.swf",
{
SwfFile : pdfUrl,
Scale : 0.6,
ZoomTransition : "easeOut",
ZoomTime : 0.5,
ZoomInterval : 0.1,
FitPageOnLoad : false,
FitWidthOnLoad : true,
PrintEnabled : printEnabled,
FullScreenAsMaxWindow : false,
ProgressiveLoading : true,
PrintToolsVisible : printEnabled,
ViewModeToolsVisible : true,
ZoomToolsVisible : true,
FullScreenVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,
localeChain: "en_US"
},
{
quality:"high",
bgcolor:"#ffffff",
allowscriptaccess:"sameDomain",
allowfullscreen:"true"
},
{
id:"FlexPaperViewer",
name:"FlexPaperViewer"
});
}-*/;
public static native String[] getJREs() /*-{
return $wnd.deployJava.getJREs();
}-*/;
public static native void createLinkClipboardButton(String textToCopy, String containerName) /*-{
$wnd.swfobject.embedSWF("../clippy.swf", containerName, 14, 14, "9.0.0", "../clippy.swf", {text:textToCopy}, {quality:"high",scale:"noscale",bgcolor:"#FFFFFF"}, {id:"clippy",name:"clippy"});
}-*/;
public static native void createURLClipboardButton(String textToCopy) /*-{
$wnd.swfobject.embedSWF("../clippy.swf", "urlclipboardcontainer", 14, 14, "9.0.0", "../clippy.swf", {text:textToCopy}, {quality:"high",scale:"noscale",bgcolor:"#FFFFFF"}, {id:"clippy",name:"clippy"});
}-*/;
public static native void createWebDavClipboardButton(String textToCopy) /*-{
$wnd.swfobject.embedSWF("../clippy.swf", "webdavclipboardcontainer", 14, 14, "9.0.0", "../clippy.swf", {text:textToCopy}, {quality:"high",scale:"noscale",bgcolor:"#FFFFFF"}, {id:"clippy",name:"clippy"});
}-*/;
public static native void createFolderURLClipboardButton(String textToCopy) /*-{
$wnd.swfobject.embedSWF("../clippy.swf", "folderurlclipboardcontainer", 14, 14, "9.0.0", "../clippy.swf", {text:textToCopy}, {quality:"high",scale:"noscale",bgcolor:"#FFFFFF"}, {id:"clippy",name:"clippy"});
}-*/;
public static native void createFolderWebDavClipboardButton(String textToCopy) /*-{
$wnd.swfobject.embedSWF("../clippy.swf", "folderwebdavclipboardcontainer", 14, 14, "9.0.0", "../clippy.swf", {text:textToCopy}, {quality:"high",scale:"noscale",bgcolor:"#FFFFFF"}, {id:"clippy",name:"clippy"});
}-*/;
}