org.opencms.ade.galleries.client.preview.CmsPreviewUtil Maven / Gradle / Ivy
Show all versions of opencms-gwt Show documentation
/*
* This library is part of OpenCms -
* the Open Source Content Management System
*
* Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* For further information about Alkacon Software, please see the
* company website: http://www.alkacon.com
*
* For further information about OpenCms, please see the
* project website: http://www.opencms.org
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.opencms.ade.galleries.client.preview;
import org.opencms.gwt.client.util.CmsJSONMap;
import org.opencms.util.CmsStringUtil;
import java.util.Map;
import java.util.Map.Entry;
import com.google.gwt.core.client.JsArrayString;
/**
* Utility class for resource preview.
*
* @since 8.0.0
*/
public final class CmsPreviewUtil {
/** The close dialog function key. */
static final String KEY_DIALOG_CLOSE_FUNCTION = "closeDialog";
/** The dialog OK function key. */
static final String KEY_DIALOG_OK_FUNCTION = "dialogOk";
/** The enable dialog OK function key. */
static final String KEY_ENABLE_DIALOG_OK_FUNCTION = "enableDialogOk";
/** The get image info function key. */
static final String KEY_GET_IMAGE_INFO_FUNCTION = "getImageInfo";
/** The has enhanced image options function key. */
static final String KEY_HAS_ENHANCED_IMAGE_OPTIONS = "hasEnhancedImageOptions";
/** The close gallery dialog function key. */
static final String KEY_SET_DATA_IN_EDITOR_FUNCTION = "setDataInEditor";
/** The set image function key. */
static final String KEY_SET_IMAGE_FUNCTION = "setImage";
/** The set image link function key. */
static final String KEY_SET_IMAGE_LINK_FUNCTION = "setImageLink";
/** The set link function key. */
static final String KEY_SET_LINK_FUNCTION = "setLink";
/**
* Constructor.
*/
private CmsPreviewUtil() {
// hiding the constructor
}
/**
* Triggers the dialog OK action.
*/
public static native void closeDialog() /*-{
$wnd[@org.opencms.ade.galleries.client.preview.CmsPreviewUtil::KEY_DIALOG_CLOSE_FUNCTION]
();
}-*/;
/**
* Enables the dialog OK button within the rich text editor (FCKEditor, CKEditor, ...).
*
* @param enabled true
to enable the button
*/
public static native void enableEditorOk(boolean enabled)/*-{
$wnd[@org.opencms.ade.galleries.client.preview.CmsPreviewUtil::KEY_ENABLE_DIALOG_OK_FUNCTION]
(enabled);
}-*/;
/**
* Exports the functions of {@link org.opencms.ade.galleries.client.preview.I_CmsResourcePreview}
* to the window object for use via JSNI.
*
* @param previewName the preview name
* @param preview the preview
*/
public static native void exportFunctions(String previewName, I_CmsResourcePreview> preview) /*-{
$wnd[@org.opencms.ade.galleries.client.preview.CmsPreviewUtil::KEY_SET_DATA_IN_EDITOR_FUNCTION] = function() {
return [email protected]_CmsResourcePreview::setDataInEditor()();
};
}-*/;
/**
* Returns the xml-content field id.
*
* @return the field id
*/
public static native String getFieldId() /*-{
return $wnd[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::KEY_FIELD_ID];
}-*/;
/**
* Returns the available image format names for gallery widget mode.
*
* @return the available image format names
*/
public static String[] getFormatNames() {
JsArrayString formatNames = nativeGetFormatNames();
if ((formatNames == null) || (formatNames.length() == 0)) {
return null;
}
String[] result = new String[formatNames.length()];
for (int i = 0; i < formatNames.length(); i++) {
result[i] = formatNames.get(i);
}
return result;
}
/**
* Returns the available image formats for gallery widget mode.
*
* @return the available image formats
*/
public static String[] getFormats() {
JsArrayString tempArr = nativeGetFormats();
if ((tempArr == null) || (tempArr.length() == 0)) {
return null;
}
String[] result = new String[tempArr.length()];
for (int i = 0; i < tempArr.length(); i++) {
result[i] = tempArr.get(i);
}
return result;
}
/**
* Returns all available information of the selected image tag, or null, if no image is selected.
*
* @return a map with the following keys:
* alt, class, height, hspace, linkPath, linkTarget, longDesc, style, title, vspace, width
*
* all keys represent a tag attribute by the same name, only linkPath and linkTarget contain
* information on an surrounding link tag
*/
public static native CmsJSONMap getImageAttributes() /*-{
return $wnd[@org.opencms.ade.galleries.client.preview.CmsPreviewUtil::KEY_GET_IMAGE_INFO_FUNCTION]
();
}-*/;
/**
* Returns the availability of enhanced image options.
*
* @return true
if enhanced image options are available
*/
public static native boolean hasEnhancedImageOptions() /*-{
return $wnd[@org.opencms.ade.galleries.client.preview.CmsPreviewUtil::KEY_HAS_ENHANCED_IMAGE_OPTIONS]
() ? true : false;
}-*/;
/**
* Returns if the gallery widget is used in advanced mode.
*
* @return true
if format selector should be shown
*/
public static native boolean isAdvancedWidget()/*-{
var id = $wnd[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::KEY_HASH_ID];
var additional = $wnd.parent['cms_additional_' + id];
if (additional && additional['isAdvancedWidget']) {
return true;
}
return false;
}-*/;
/**
* Returns if the image format selector should be shown within gallery widget mode.
*
* @return true
if format selector should be shown
*/
public static native boolean isShowFormats()/*-{
var id = $wnd[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::KEY_HASH_ID];
var additional = $wnd.parent['cms_additional_' + id];
if (additional) {
return additional[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::CONFIG_USE_FORMATS];
}
return false;
}-*/;
/**
* Triggers the dialog OK action.
*/
public static native void setDataAndCloseDialog() /*-{
$wnd[@org.opencms.ade.galleries.client.preview.CmsPreviewUtil::KEY_DIALOG_OK_FUNCTION]
();
}-*/;
/**
* Sets the image tag within the rich text editor (FCKEditor, CKEditor, ...).
*
* @param path the image path
* @param attributes the image tag attributes
*/
public static void setImage(String path, Map attributes) {
CmsJSONMap attributesJS = CmsJSONMap.createJSONMap();
for (Entry entry : attributes.entrySet()) {
attributesJS.put(entry.getKey(), entry.getValue());
}
nativeSetImage(path, attributesJS);
}
/**
* Sets the image link within the rich text editor (FCKEditor, CKEditor, ...).
*
* @param path the image path
* @param attributes the image tag attributes
* @param linkPath the link path
* @param target the link target attribute
*/
public static void setImageLink(String path, Map attributes, String linkPath, String target) {
CmsJSONMap attributesJS = CmsJSONMap.createJSONMap();
for (Entry entry : attributes.entrySet()) {
attributesJS.put(entry.getKey(), entry.getValue());
}
nativeSetImageLink(path, attributesJS, linkPath, target);
}
/**
* Sets the resource link within the rich text editor (FCKEditor, CKEditor, ...).
*
* @param path the link path
* @param title the link title
* @param target the link target attribute
*/
public static void setLink(String path, String title, String target) {
nativeSetLink(path, CmsStringUtil.escapeHtml(title), target);
}
/**
* Sets the path of the selected resource in the input field of the xmlcontent.
*
* Widget mode: Use this function inside the xmlcontent.
*
* @param path the path to the selected resource
*/
public static native void setResourcePath(String path) /*-{
//the id of the input field in the xml content
var fieldId = $wnd[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::KEY_FIELD_ID];
if (fieldId != null && fieldId != "") {
var inputField = $wnd.parent.document.getElementById(fieldId);
inputField.setAttribute('value', path);
inputField.value = path;
try {
// toggle preview icon if possible
$wnd.parent.checkPreview(fieldId);
} catch (e) {
}
}
$wnd.setTimeout(function() {
$wnd.parent.cmsCloseDialog(fieldId);
}, 10);
}-*/;
/**
* Sets the path of the selected resource in the input field of the xmlcontent.
*
* Widget mode: Use this function inside the xmlcontent.
*
* @param path the path to the selected resource
* @param scale the scale parameter
* @param formatName the selected format name
* @param ratio the image ratio (width/height)
*/
public static native void setVfsImage(String path, String scale, String formatName, String ratio) /*-{
//the id of the input field in the xml content
var fieldId = $wnd[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::KEY_FIELD_ID];
if (fieldId != null && fieldId != "") {
var inputField = $wnd.parent.document.getElementById("img."
+ fieldId);
inputField.setAttribute("value", path);
inputField.value = path;
if (formatName != null) {
var formatBox = $wnd.parent.document.getElementById("format."
+ fieldId);
if (formatBox != null && formatBox.options != null) {
var selectIndex = -1;
for ( var i = 0; i < formatBox.options.length; i++) {
if (formatBox.options[i].value == formatName) {
formatBox.selectedIndex = i;
break;
}
}
if (selectIndex != -1) {
formatBox.selectedIndex = selectIndex;
$wnd.parent
.setImageFormat(
fieldId,
$wnd[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::KEY_HASH_ID]);
}
}
var formatField = $wnd.parent.document.getElementById("fmtval."
+ fieldId);
formatField.setAttribute("value", formatName);
formatField.value = formatName;
}
var ratioField = $wnd.parent.document.getElementById("imgrat."
+ fieldId);
ratioField.setAttribute("value", ratio);
ratioField.value = ratio;
var scaleField = $wnd.parent.document.getElementById("scale."
+ fieldId);
scaleField.setAttribute("value", scale);
scaleField.value = scale;
try {
// toggle preview icon if possible
$wnd.parent.checkVfsImagePreview(fieldId);
} catch (e) {
}
}
$wnd.setTimeout(function() {
$wnd.parent.cmsCloseDialog(fieldId);
}, 10);
}-*/;
/**
* Returns if the select button should be shown.
*
* @return true
if the select button should be shown
*/
public static native boolean shouldShowSelectButton()/*-{
return "true" == $wnd[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::KEY_SHOW_SELECT];
}-*/;
/**
* Returns the image format names.
*
* @return the image format names
*/
private static native JsArrayString nativeGetFormatNames()/*-{
var id = $wnd[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::KEY_HASH_ID];
var additional = $wnd.parent['cms_additional_' + id];
if (additional) {
return additional[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::CONFIG_IMAGE_FORMAT_NAMES];
}
return null;
}-*/;
/**
* Returns the available image formats for gallery widget mode.
*
* @return the available image formats
*/
private static native JsArrayString nativeGetFormats()/*-{
var id = $wnd[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::KEY_HASH_ID];
var additional = $wnd.parent['cms_additional_' + id];
if (additional) {
return additional[@org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants::CONFIG_IMAGE_FORMATS];
}
return null;
}-*/;
/**
* Calls the integrator's set image function to set the image tag within the rich text editor (FCKEditor, CKEditor, ...).
*
* @param path the image path
* @param attributes the image tag attributes
*/
private static native void nativeSetImage(String path, CmsJSONMap attributes)/*-{
if ($wnd[@org.opencms.ade.galleries.client.preview.CmsPreviewUtil::KEY_SET_IMAGE_FUNCTION] != null) {
$wnd[@org.opencms.ade.galleries.client.preview.CmsPreviewUtil::KEY_SET_IMAGE_FUNCTION]
(path, attributes);
}
}-*/;
/**
* Calls the integrator's set image link function to set the image link within the rich text editor (FCKEditor, CKEditor, ...).
*
* @param path the image path
* @param attributes the image tag attributes
* @param linkPath the link path
* @param target the link target attribute
*/
private static native void nativeSetImageLink(
String path,
CmsJSONMap attributes,
String linkPath,
String target)/*-{
$wnd[@org.opencms.ade.galleries.client.preview.CmsPreviewUtil::KEY_SET_IMAGE_LINK_FUNCTION]
(path, attributes, linkPath, target);
}-*/;
/**
* Calls the integrator's set link function to set the resource link within the rich text editor (FCKEditor, CKEditor, ...).
*
* @param path the link path
* @param title the link title
* @param target the link target attribute
*/
private static native void nativeSetLink(String path, String title, String target)/*-{
$wnd[@org.opencms.ade.galleries.client.preview.CmsPreviewUtil::KEY_SET_LINK_FUNCTION]
(path, title, target);
}-*/;
}