001: /*
002: * File : $Source: /usr/local/cvs/opencms/src/org/opencms/workplace/CmsDialogSelector.java,v $
003: * Date : $Date: 2008-02-27 12:05:45 $
004: * Version: $Revision: 1.24 $
005: *
006: * This library is part of OpenCms -
007: * the Open Source Content Management System
008: *
009: * Copyright (c) 2002 - 2008 Alkacon Software GmbH (http://www.alkacon.com)
010: *
011: * This library is free software; you can redistribute it and/or
012: * modify it under the terms of the GNU Lesser General Public
013: * License as published by the Free Software Foundation; either
014: * version 2.1 of the License, or (at your option) any later version.
015: *
016: * This library is distributed in the hope that it will be useful,
017: * but WITHOUT ANY WARRANTY; without even the implied warranty of
018: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: * Lesser General Public License for more details.
020: *
021: * For further information about Alkacon Software GmbH, please see the
022: * company website: http://www.alkacon.com
023: *
024: * For further information about OpenCms, please see the
025: * project website: http://www.opencms.org
026: *
027: * You should have received a copy of the GNU Lesser General Public
028: * License along with this library; if not, write to the Free Software
029: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
030: */
031:
032: package org.opencms.workplace;
033:
034: import org.opencms.i18n.CmsEncoder;
035: import org.opencms.jsp.CmsJspActionElement;
036: import org.opencms.main.CmsLog;
037: import org.opencms.main.OpenCms;
038:
039: import org.apache.commons.logging.Log;
040:
041: /**
042: * Selects the dialog which should be displayed by OpenCms depending on the configuration value.<p>
043: *
044: * You can define the class of your dialog handler in the OpenCms XML configuration files.
045: * The following files use this class:
046: * <ul>
047: * <li>/commons/property_html
048: * <li>/commons/delete_html
049: * <li>/commons/lock_html
050: * <li>/commons/lockchange_html
051: * <li>/commons/unlock_html
052: * </ul>
053: * <p>
054: *
055: * @author Andreas Zahner
056: *
057: * @version $Revision: 1.24 $
058: *
059: * @since 6.0.0
060: *
061: * @see org.opencms.workplace.I_CmsDialogHandler
062: */
063: public class CmsDialogSelector {
064:
065: // Constants for the dialog handler key names used for the runtime properties.
066: // For each handler, a constant has to be added here.
067: /** Constant for the delete dialog handler key name. */
068: public static final String DIALOG_DELETE = "class_dialog_delete";
069: /** Constant for the lock dialog handler key name. */
070: public static final String DIALOG_LOCK = "class_dialog_lock";
071: /** Constant for the property dialog handler key name. */
072: public static final String DIALOG_PROPERTY = "class_dialog_property";
073:
074: /** The log object for this class. */
075: private static final Log LOG = CmsLog
076: .getLog(CmsDialogSelector.class);
077: private String m_handler;
078:
079: // necessary member variables
080: private CmsJspActionElement m_jsp;
081: private String m_paramResource;
082:
083: /**
084: * Public constructor with JSP action element.<p>
085: *
086: * @param jsp an initialized JSP action element
087: * @param handler the key name of the dialog handler (use the constants in your classes!)
088: */
089: public CmsDialogSelector(CmsJspActionElement jsp, String handler) {
090:
091: setJsp(jsp);
092: setHandler(handler);
093: setParamResource(CmsEncoder.decode(jsp.getRequest()
094: .getParameter(CmsDialog.PARAM_RESOURCE)));
095: }
096:
097: /**
098: * Returns the uri of the dialog which will be displayed.<p>
099: *
100: * @return the uri of the property dialog
101: */
102: public String getSelectedDialogUri() {
103:
104: if (LOG.isDebugEnabled()) {
105: LOG.debug(Messages.get().getBundle().key(
106: Messages.LOG_DIALOG_HANDLER_CLASS_2,
107: getClass().getName(), getHandler()));
108: LOG.debug(Messages.get().getBundle().key(
109: Messages.LOG_PARAM_RESOURCE_2,
110: getClass().getName(), getParamResource()));
111: }
112: // get the handler class from the OpenCms runtime property
113: I_CmsDialogHandler dialogClass = (I_CmsDialogHandler) OpenCms
114: .getWorkplaceManager().getDialogHandler(getHandler());
115: if (dialogClass == null) {
116: // error getting the dialog class, return to file list
117: return CmsWorkplace.FILE_EXPLORER_FILELIST;
118: }
119: // get the dialog URI from the class defined in the configuration
120: return dialogClass.getDialogUri(getParamResource(), getJsp());
121: }
122:
123: /**
124: * Returns the key name of the dialog handler.<p>
125: *
126: * @return the key name of the dialog handler
127: */
128: private String getHandler() {
129:
130: return m_handler;
131: }
132:
133: /**
134: * Returns the CmsJspActionElement.<p>
135: *
136: * @return the CmsJspActionElement
137: */
138: private CmsJspActionElement getJsp() {
139:
140: return m_jsp;
141: }
142:
143: /**
144: * Returns the resource parameter String.<p>
145: *
146: * @return the resource parameter String
147: */
148: private String getParamResource() {
149:
150: return m_paramResource;
151: }
152:
153: /**
154: * Sets the key name of the dialog handler.<p>
155: *
156: * @param handler the key name of the dialog handler
157: */
158: private void setHandler(String handler) {
159:
160: m_handler = handler;
161: }
162:
163: /**
164: * Sets the CmsJspActionElement.<p>
165: *
166: * @param jsp the CmsJspActionElement
167: */
168: private void setJsp(CmsJspActionElement jsp) {
169:
170: m_jsp = jsp;
171: }
172:
173: /**
174: * Sets the resource parameter String.<p>
175: *
176: * @param resource the resource parameter String
177: */
178: private void setParamResource(String resource) {
179:
180: m_paramResource = resource;
181: }
182:
183: }
|