📄 fckeditor.java
字号:
/* * FCKeditor - The text editor for internet * Copyright (C) 2003-2005 Frederico Caldeira Knabben * * Licensed under the terms of the GNU Lesser General Public License: * http://www.opensource.org/licenses/lgpl-license.php * * For further information visit: * http://www.fckeditor.net/ * * File Name: FCKeditor.java * FCKeditor control class. * * Version: 2.3 * Modified: 2005-08-11 16:29:00 * * File Authors: * Simone Chiaretta (simo@users.sourceforge.net) */package com.fredck.FCKeditor;import javax.servlet.http.HttpServletRequest;/** * The main class of the class lib.<br> * It's the container for all properties and the class that generate the output based on browser capabilities and configurations passed by the developer. * * @author Simone Chiaretta (simo@users.sourceforge.net) */public class FCKeditor { private FCKeditorConfigurations oConfig; private String instanceName; private String value = ""; private String basePath; private String toolbarSet = "Default"; private String width = "100%"; private String height = "200"; HttpServletRequest request; /** * Get the unique name of the editor * * @return name */ public String getInstanceName() { return instanceName; } /** * Set the unique name of the editor * * @param value name */ public void setInstanceName(String value) { instanceName = value; } /** * Get the initial value to be edited.<br> * In HTML code * * @return value */ public String getValue() { return value; } /** * Set the initial value to be edited.<br> * In HTML code * * @param value value */ public void setValue(String value) { this.value = value; } /** * Get the dir where the FCKeditor files reside on the server * * @return path */ public String getBasePath() { return basePath; } /** * Set the dir where the FCKeditor files reside on the server.<br> *<b>Remarks</b>:<br> *Avoid using relative paths. It is preferable to set the base path starting from the root (/).<br> *Always finish the path with a slash (/). * * @param value path */ public void setBasePath(String value) { basePath = value; } /** * Get the name of the toolbar to display * * @return toolbar name */ public String getToolbarSet() { return toolbarSet; } /** * Set the name of the toolbar to display * * @param value toolbar name */ public void setToolbarSet(String value) { toolbarSet = value; } /** * Get the width of the textarea * * @return width */ public String getWidth() { return width; } /** * Set the width of the textarea * * @param value width */ public void setWidth(String value) { width = value; } /** * Get the height of the textarea * * @return height */ public String getHeight() { return height; } /** * Set the height of the textarea * * @param value height */ public void setHeight(String value) { height = value; } /** * Get the advanced configuation set.<br> * Adding element to this collection you can override the settings specified in the config.js file. * * @return configuration collection */ public FCKeditorConfigurations getConfig() { return oConfig; } /** * Set the advanced configuation set. * * @param value configuration collection */ public void setConfig(FCKeditorConfigurations value) { oConfig = value; } /** * Initialize the object setting all value to the default ones. * <p> * <ul> * <li>width: 100%</li> * <li>height: 200</li> * <li>toolbar name: Default</li> * <li>basePath: context root + "/FCKeditor/"</li> * </ul> * </p> * * @param req request object */ public FCKeditor(HttpServletRequest req) { request = req; basePath = request.getContextPath() + "/FCKeditor/"; oConfig = new FCKeditorConfigurations(); } /** * Initialize the object setting the unique name and then all value to the default ones. * <p> * <ul> * <li>width: 100%</li> * <li>height: 200</li> * <li>toolbar name: Default</li> * <li>basePath: context root + "/FCKeditor/"</li> * </ul> * </p> * * @param req request object * @param parInstanceName unique name */ public FCKeditor(HttpServletRequest req, String parInstanceName) { request = req; basePath = request.getContextPath() + "/FCKeditor/"; instanceName = parInstanceName; oConfig = new FCKeditorConfigurations(); } /** * Initialize the object setting all basic configurations.<br> * * The basePath is context root + "/FCKeditor/" * * @param req request object * @param parInstanceName unique name * @param parWidth width * @param parHeight height * @param parToolbarSet toolbarSet name * @param parValue initial value */ public FCKeditor(HttpServletRequest req, String parInstanceName, String parWidth, String parHeight, String parToolbarSet, String parValue) { request = req; basePath = request.getContextPath() + "/FCKeditor/"; instanceName = parInstanceName; width = parWidth; height = parHeight; toolbarSet = parToolbarSet; value = parValue; oConfig = new FCKeditorConfigurations(); } private boolean isCompatible() { String userAgent = request.getHeader("user-agent"); if (userAgent == null) return false; userAgent = userAgent.toLowerCase(); if ((userAgent.indexOf("msie") != -1) && (userAgent.indexOf("mac") == -1) && (userAgent.indexOf("opera") == -1)) { if (retrieveBrowserVersion(userAgent) >= 5.5) return true; } else if (userAgent.indexOf("gecko") != -1) { if (retrieveBrowserVersion(userAgent) >= 20030210) return true; } return false; } private double retrieveBrowserVersion(String userAgent) { if (userAgent.indexOf("msie") > -1) { String str = userAgent.substring(userAgent.indexOf("msie") + 5); return Double.parseDouble(str.substring(0, str.indexOf(";"))); } else { String str = userAgent.substring(userAgent.indexOf("gecko") + 6); return Double.parseDouble(str.substring(0, 8)); } } private String HTMLEncode(String txt) { txt = txt.replaceAll("&", "&"); txt = txt.replaceAll("<", "<"); txt = txt.replaceAll(">", ">"); txt = txt.replaceAll("\"", """); txt = txt.replaceAll("'", "’"); return txt; } /** * Generate the HTML Code for the editor. * <br> * Evalute the browser capabilities and generate the editor if IE 5.5 or Gecko 20030210 or greater, * or a simple textarea otherwise. * * @return html code */ public String create() { StringBuffer strEditor = new StringBuffer(); strEditor.append("<div>"); String encodedValue = HTMLEncode(value); if (isCompatible()) { strEditor.append("<input type=\"hidden\" id=\"" + instanceName + "\" name=\"" + instanceName + "\" value=\"" + encodedValue + "\">"); strEditor.append(createConfigHTML()); strEditor.append(createIFrameHTML()); } else { strEditor.append("<TEXTAREA name=\"" + instanceName + "\" rows=\"4\" cols=\"40\" style=\"WIDTH: " + width + "; HEIGHT: " + height + "\" wrap=\"virtual\">" + encodedValue + "</TEXTAREA>"); } strEditor.append("</div>"); return strEditor.toString(); } private String createConfigHTML() { String configStr = oConfig.getUrlParams(); if (!configStr.equals("")) configStr = configStr.substring(1); return "<input type=\"hidden\" id=\"" + instanceName + "___Config\" value=\"" + configStr + "\">"; } private String createIFrameHTML() { String sLink = basePath + "editor/fckeditor.html?InstanceName=" + instanceName; if (!toolbarSet.equals("")) sLink += "&Toolbar=" + toolbarSet; return "<iframe id=\"" + instanceName + "___Frame\" src=\"" + sLink + "\" width=\"" + width + "\" height=\"" + height + "\" frameborder=\"no\" scrolling=\"no\"></iframe>"; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -