/**
* 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.widget.properties;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.openkm.frontend.client.Main;
import com.openkm.frontend.client.contants.service.RPCService;
import com.openkm.frontend.client.extension.widget.preview.PreviewExtension;
import com.openkm.frontend.client.util.Util;
/**
* Notes
*
* @author jllort
*
*/
public class Preview extends Composite {
private HorizontalPanel hPanel;
private HTML text;
private HTML space;
private HTML video;
private int width = 0;
private int height = 0;
private boolean previewAvailable = false;
String mediaUrl = "";
private String mediaProvider = "";
/**
* Preview
*/
public Preview() {
hPanel = new HorizontalPanel();
text= new HTML("<div id=\"pdfviewercontainer\"></div>\n");
space = new HTML("");
video = new HTML("<div id=\"mediaplayercontainer\"></div>\n");
hPanel.add(text);
hPanel.add(space);
hPanel.add(video);
hPanel.setCellHorizontalAlignment(text, HasAlignment.ALIGN_CENTER);
hPanel.setCellVerticalAlignment(text, HasAlignment.ALIGN_MIDDLE);
hPanel.setCellHorizontalAlignment(video, HasAlignment.ALIGN_CENTER);
hPanel.setCellVerticalAlignment(video, HasAlignment.ALIGN_MIDDLE);
hPanel.setCellHeight(space, "10");
initWidget(hPanel);
}
/* (non-Javadoc)
* @see com.google.gwt.user.client.ui.UIObject#setPixelSize(int, int)
*/
public void setPixelSize(int width, int height) {
super.setPixelSize(width, height);
this.width = width;
this.height = height;
}
public void showEmbedSWF(String Uuid) {
hideWidgetExtension();
text.setVisible(true);
space.setVisible(false);
video.setVisible(false);
if (previewAvailable) {
String url = RPCService.ConverterServlet +"?inline=true&toSwf=true&uuid=" + URL.encodeComponent(Uuid);
text.setHTML("<div id=\"pdfviewercontainer\"></div>\n"); // needed for rewriting purpose
if (Main.get().workspaceUserProperties.getWorkspace().getPreviewer().equals("flexpaper")) {
if (Main.get().workspaceUserProperties.getWorkspace().isPrintPreview()) {
Util.createPDFViewerFlexPaper(url, ""+width, ""+height, "true");
} else {
Util.createPDFViewerFlexPaper(url, ""+width, ""+height, "false");
}
} else {
Util.createPDFViewerZviewer(url, ""+width, ""+height);
}
} else {
text.setHTML("<div id=\"pdfviewercontainer\" align=\"center\"><br><br>" + Main.i18n("preview.unavailable") + "</div>\n"); // needed for rewriting purpose
}
}
/**
* Set the media file to reproduce
*
* @param mediaUrl The media file url
*/
public void showMediaFile(String mediaUrl, String mimeType) {
hideWidgetExtension();
text.setVisible(false);
space.setVisible(true);
video.setVisible(true);
this.mediaUrl = mediaUrl;
Util.removeMediaPlayer();
video.setHTML("<div id=\"mediaplayercontainer\"></div>\n");
if (mimeType.equals("audio/mpeg")) {
mediaProvider = "sound";
} else if (mimeType.equals("video/x-flv") || mimeType.equals("video/mp4")) {
mediaProvider = "video";
} else if (mimeType.equals("application/x-shockwave-flash")) {
mediaProvider = "";
}
// Size ratio
int width= 400;
int height = 280;
// Controls size square ( adapts )
if (this.width>1.4*this.height) {
height = this.height;
width = new Double(1.4*this.height).intValue();
} else {
width = this.width;
height = new Double(this.width/1.4).intValue();
}
Util.createMediaPlayer(mediaUrl, mediaProvider, ""+(width-10), ""+(height-10));
}
/**
* setPreviewExtension
*
* @param preview
* @param url
*/
public void showPreviewExtension(PreviewExtension preview, String url) {
hideWidgetExtension();
text.setVisible(false);
space.setVisible(false);
video.setVisible(false);
if (previewAvailable) {
if (hPanel.getWidgetIndex(preview.getWidget())<0) {
hPanel.add(preview.getWidget());
} else {
preview.setVisible(true);
}
preview.createViewer(url, width, height);
}
}
/**
* hideWidgetExtension
*/
private void hideWidgetExtension() {
if (hPanel.getWidgetCount()>3) {
for (int i=2; i<hPanel.getWidgetCount(); i++){
hPanel.getWidget(i).setVisible(false);
}
}
}
/**
* Sets the boolean value if previewing document is available
*
* @param previewAvailable
*/
public void setPreviewAvailable(boolean previewAvailable) {
this.previewAvailable = previewAvailable;
}
/**
* langRefresh
*/
public void langRefresh() {
if (!previewAvailable) {
text.setHTML("<div id=\"pdfviewercontainer\" align=\"center\"><br><br>" + Main.i18n("preview.unavailable") + "</div>\n"); // needed for rewriting purpose
}
}
}