All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.widgets.A_CmsWidget Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

There is a newer version: 18.0
Show newest version
/*
 * 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 GmbH & Co. KG, 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.widgets;

import org.opencms.file.CmsObject;
import org.opencms.file.CmsResource;
import org.opencms.i18n.CmsEncoder;
import org.opencms.i18n.CmsMessages;
import org.opencms.main.OpenCms;
import org.opencms.util.CmsStringUtil;

import java.util.Locale;
import java.util.Map;
import java.util.Set;

/**
 * Base class for XML editor widgets.

* * @since 6.0.0 */ public abstract class A_CmsWidget implements I_CmsWidget { /** Inner class to generate the I_CmsWidgetDialog. */ public class CmsDummyWidgetDialog implements I_CmsWidgetDialog { /** The locale of this widget. */ private Locale m_locale; /** The massage of this widget. */ private CmsMessages m_message; /** The resource being edited. */ private CmsResource m_resource; /** Constructor.

* @param locale the locale of the dialog * @param message the message of the dialog */ public CmsDummyWidgetDialog(Locale locale, CmsMessages message) { m_locale = locale; m_message = message; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#button(java.lang.String, java.lang.String, java.lang.String, java.lang.String, int) */ public String button(String href, String target, String image, String label, int type) { return null; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#buttonBar(int) */ public String buttonBar(int segment) { return null; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#buttonBarHorizontalLine() */ public String buttonBarHorizontalLine() { return null; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#buttonBarSeparator(int, int) */ public String buttonBarSeparator(int leftPixel, int rightPixel) { return null; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#buttonBarSpacer(int) */ public String buttonBarSpacer(int width) { return null; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#buttonBarStartTab(int, int) */ public String buttonBarStartTab(int leftPixel, int rightPixel) { return null; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#dialogHorizontalSpacer(int) */ public String dialogHorizontalSpacer(int width) { return null; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#getButtonStyle() */ public int getButtonStyle() { return 0; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#getHelpMessageIds() */ public Set getHelpMessageIds() { return null; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#getLocale() */ public Locale getLocale() { return m_locale; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#getMessages() */ public CmsMessages getMessages() { return m_message; } /** * Gets the resource being edited. * * @return the resource being edited */ public CmsResource getResource() { return m_resource; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#getUserAgent() */ public String getUserAgent() { return null; } /** * Sets the resource being edited.

* * @param resource the resource being edited */ public void setResource(CmsResource resource) { m_resource = resource; } /** * @see org.opencms.widgets.I_CmsWidgetDialog#useNewStyle() */ public boolean useNewStyle() { return false; } } /** Postfix for melp message locale. */ public static final String HELP_POSTFIX = ".help"; /** Prefix for message locales. */ public static final String LABEL_PREFIX = "label."; /** The configuration options of this widget. */ private String m_configuration; /** * Default constructor.

*/ protected A_CmsWidget() { setConfiguration(""); } /** * Constructor for preprocessing the configuration string.

* * @param configuration the configuration string */ protected A_CmsWidget(String configuration) { setConfiguration(configuration); } /** * Returns the localized help key for the provided widget parameter.

* @param param the widget parameter to return the localized help key for * * @return the localized help key for the provided widget parameter */ public static String getHelpKey(I_CmsWidgetParameter param) { // calculate the key StringBuffer result = new StringBuffer(64); result.append(LABEL_PREFIX); result.append(param.getKey()); result.append(HELP_POSTFIX); return result.toString(); } /** * Returns the localized label key for the provided widget parameter.

* @param param the widget parameter to return the localized label key for * * @return the localized label key for the provided widget parameter */ public static String getLabelKey(I_CmsWidgetParameter param) { // calculate the key StringBuffer result = new StringBuffer(64); result.append(LABEL_PREFIX); result.append(param.getKey()); return result.toString(); } /** * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof A_CmsWidget) { // widgets are equal if they use the same class return getClass().getName().equals(obj.getClass().getName()); } return false; } /** * Returns the configuration string.

* * @return the configuration string */ public String getConfiguration() { return m_configuration; } /** * @see org.opencms.widgets.I_CmsWidget#getDialogHtmlEnd(org.opencms.file.CmsObject, I_CmsWidgetDialog, I_CmsWidgetParameter) */ public String getDialogHtmlEnd(CmsObject cms, I_CmsWidgetDialog widgetDialog, I_CmsWidgetParameter value) { return getHelpText(widgetDialog, value); } /** * @see org.opencms.widgets.I_CmsWidget#getDialogIncludes(org.opencms.file.CmsObject, I_CmsWidgetDialog) */ public String getDialogIncludes(CmsObject cms, I_CmsWidgetDialog widgetDialog) { return ""; } /** * @see org.opencms.widgets.I_CmsWidget#getDialogInitCall(org.opencms.file.CmsObject, I_CmsWidgetDialog) */ public String getDialogInitCall(CmsObject cms, I_CmsWidgetDialog widgetDialog) { return ""; } /** * @see org.opencms.widgets.I_CmsWidget#getDialogInitMethod(org.opencms.file.CmsObject, org.opencms.widgets.I_CmsWidgetDialog) */ public String getDialogInitMethod(CmsObject cms, I_CmsWidgetDialog widgetDialog) { return ""; } /** * @see org.opencms.widgets.I_CmsWidget#getHelpBubble(org.opencms.file.CmsObject, I_CmsWidgetDialog, I_CmsWidgetParameter) */ public String getHelpBubble(CmsObject cms, I_CmsWidgetDialog widgetDialog, I_CmsWidgetParameter param) { StringBuffer result = new StringBuffer(128); String locKey = getHelpKey(param); String locValue = widgetDialog.getMessages().key(locKey, true); if (!widgetDialog.useNewStyle()) { // use real ID for XML contents to avoid display issues locKey = param.getId(); } if (locValue == null) { // there was no help message found for this key, so return a spacer cell return widgetDialog.dialogHorizontalSpacer(16); } else { result.append(""); result.append("\"\" for HTML in help text locValue = CmsStringUtil.substitute(locValue, "\"", """); // dynamic help texts in xml content editor result.append(getJsHelpMouseHandler(widgetDialog, locKey, CmsStringUtil.escapeJavaScript(locValue))); } result.append(">"); return result.toString(); } } /** * @see org.opencms.widgets.I_CmsWidget#getHelpText(I_CmsWidgetDialog, I_CmsWidgetParameter) */ public String getHelpText(I_CmsWidgetDialog widgetDialog, I_CmsWidgetParameter param) { String helpId = getHelpKey(param); Set helpIdsShown = widgetDialog.getHelpMessageIds(); if (helpIdsShown.contains(helpId)) { // help hey has already been included in output return ""; } helpIdsShown.add(helpId); // calculate the key String locValue = widgetDialog.getMessages().key(helpId, true); if (locValue == null) { // there was no help message found for this key, so return an empty string return ""; } else { if (widgetDialog.useNewStyle()) { StringBuffer result = new StringBuffer(128); result.append("

"); result.append(locValue); result.append("
\n"); return result.toString(); } else { // create no static divs for xml content editor return ""; } } } /** * @see org.opencms.widgets.I_CmsWidget#getWidgetStringValue(org.opencms.file.CmsObject, org.opencms.widgets.I_CmsWidgetDialog, org.opencms.widgets.I_CmsWidgetParameter) */ public String getWidgetStringValue(CmsObject cms, I_CmsWidgetDialog widgetDialog, I_CmsWidgetParameter param) { if (param != null) { return param.getStringValue(cms); } return null; } /** * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return getClass().getName().hashCode(); } /** * @see org.opencms.widgets.I_CmsWidget#isCompactViewEnabled() */ public boolean isCompactViewEnabled() { return true; } /** * @see org.opencms.widgets.I_CmsWidget#setConfiguration(java.lang.String) */ public void setConfiguration(String configuration) { m_configuration = configuration; } /** * @see org.opencms.widgets.I_CmsWidget#setEditorValue(org.opencms.file.CmsObject, java.util.Map, org.opencms.widgets.I_CmsWidgetDialog, org.opencms.widgets.I_CmsWidgetParameter) */ public void setEditorValue( CmsObject cms, Map formParameters, I_CmsWidgetDialog widgetDialog, I_CmsWidgetParameter param) { String[] values = formParameters.get(param.getId()); if ((values != null) && (values.length > 0)) { param.setStringValue(cms, values[0]); } } /** * Returns the HTML for the JavaScript mouse handlers that show / hide the help text.

* * This is required since the handler differs between the "Dialog" and the "Administration" mode.

* * @param widgetDialog the dialog where the widget is displayed on * @param key the key for the help bubble * @param value the localized help text, has to be an escaped String for JS usage, is only used in XML content editor * * @return the HTML for the JavaScript mouse handlers that show / hide the help text */ protected String getJsHelpMouseHandler(I_CmsWidgetDialog widgetDialog, String key, String value) { String jsShow; String jsHide; String keyHide; if (widgetDialog.useNewStyle()) { // Administration style jsShow = "sMH"; jsHide = "hMH"; keyHide = "'" + key + "'"; } else { // Dialog style jsShow = "showHelpText"; jsHide = "hideHelpText"; keyHide = ""; } StringBuffer result = new StringBuffer(128); result.append(" onmouseover=\""); result.append(jsShow); result.append("('"); result.append(key); if (!widgetDialog.useNewStyle()) { result.append("', '"); result.append(value); } result.append("');\" onmouseout=\""); result.append(jsHide); result.append("("); result.append(keyHide); result.append(");\""); return result.toString(); } /** * Creates the tags to include external javascript files.

* * @param fileName the absolute path to the javascript file * @return the tags to include external javascript files */ protected String getJSIncludeFile(String fileName) { StringBuffer result = new StringBuffer(8); result.append(""); return result.toString(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy