/**
* Copyright (C) 2009 eXo Platform SAS.
*
* This 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 software 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.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.exoplatform.webui.form.wysiwyg;
import java.io.Writer;
import javax.servlet.http.HttpServletRequest;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.form.UIFormInputBase;
/*
* Created by The eXo Platform SAS
* @author : Hoa.Pham
* hoa.pham@exoplatform.com
* Jun 23, 2008
*/
/**
* The Class UIFormWYSIWYGInput.
*/
public class UIFormWYSIWYGInput extends UIFormInputBase<String> {
public static final String BASIC_TOOLBAR = "Basic".intern();
public static final String DEFAULT_TOOLBAR = "Default".intern();
private FCKEditorConfig fckConfig;
@Deprecated
private boolean useBasicToolbar = true;
private boolean sourceModeOnStartup = false;
private String toolBarName;
private String width;
private String height;
/**
* Instantiates a new uI form wysiwyg input.
*
* @param name the name
* @param bindingField the binding field
* @param value the value
* @param isBasic the is basic
*/
@Deprecated
public UIFormWYSIWYGInput(String name, String bindingField, String value, boolean isBasic) {
super(name, bindingField, String.class);
useBasicToolbar = isBasic;
this.value_ = value;
}
public UIFormWYSIWYGInput(String name, String bindingField, String value) {
super(name, bindingField, String.class);
this.value_ = value;
}
/**
* Gets the fCK config.
*
* @return the fCK config
*/
public FCKEditorConfig getFCKConfig() {
return fckConfig;
}
/**
* Sets the fCK config.
*
* @param config the new fCK config
*/
public void setFCKConfig(FCKEditorConfig config) {
this.fckConfig = config;
}
public boolean getSourceModeOnStartup() {
return this.sourceModeOnStartup;
}
public void setSourceModeOnStartup(boolean b) {
this.sourceModeOnStartup = b;
}
public String getToolBarName() {
return this.toolBarName;
}
public void setToolBarName(String name) {
this.toolBarName = name;
}
public String getWidth() {
return this.width;
}
public void setWidth(String s) {
this.width = s;
}
public String getHeight() {
return this.height;
}
public void setHeight(String s) {
this.height = s;
};
/*
* (non-Javadoc)
*
* @see org.exoplatform.webui.form.UIFormInputBase#decode(java.lang.Object,
* org.exoplatform.webui.application.WebuiRequestContext)
*/
public void decode(Object input, WebuiRequestContext context) {
value_ = (String) input;
if (value_ != null && value_.length() == 0)
value_ = null;
}
/*
* (non-Javadoc)
*
* @see org.exoplatform.webui.core.UIComponent#processRender(org.exoplatform.webui.application.WebuiRequestContext)
*/
public void processRender(WebuiRequestContext context) throws Exception {
HttpServletRequest request = ((WebuiRequestContext) context.getParentAppRequestContext()).getRequest();
FCKEditor editor = new FCKEditor(request, getName());
if (fckConfig == null) {
FCKEditorConfig editorConfig = new FCKEditorConfig();
configureFCKConfig(editorConfig);
editor.setConfig(editorConfig);
} else {
configureFCKConfig(fckConfig);
editor.setConfig(fckConfig);
}
if (toolBarName != null && toolBarName.length() > 0) {
editor.setToolbarSet(toolBarName);
} else {
editor.setToolbarSet(BASIC_TOOLBAR);
}
if (value_ == null)
value_ = "";
if (height != null && height.length() > 0) {
editor.setHeight(height);
}
if (width != null && width.length() > 0) {
editor.setWidth(width);
}
editor.setValue(value_);
Writer w = context.getWriter();
w.write(editor.createHtml());
if (this.isMandatory())
w.write(" *");
}
private void configureFCKConfig(final FCKEditorConfig config) {
WebuiRequestContext requestContext = WebuiRequestContext.getCurrentInstance();
String currentLanguage = requestContext.getLocale().getLanguage();
config.put("AutoDetectLanguage", "false");
config.put("DefaultLanguage", currentLanguage);
config.put("SourceModeOnStartup", Boolean.toString(sourceModeOnStartup));
}
}