/*******************************************************************************
* Copyright (c) 2007-2011 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributor:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.jsf.vpe.richfaces.template;
import org.jboss.tools.jsf.vpe.richfaces.ComponentUtil;
import org.jboss.tools.vpe.editor.context.VpePageContext;
import org.jboss.tools.vpe.editor.template.VpeAbstractTemplate;
import org.jboss.tools.vpe.editor.template.VpeCreationData;
import org.jboss.tools.vpe.editor.util.Constants;
import org.jboss.tools.vpe.editor.util.HTML;
import org.jboss.tools.vpe.editor.util.VpeStyleUtil;
import org.mozilla.interfaces.nsIDOMDocument;
import org.mozilla.interfaces.nsIDOMElement;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public class RichFaces4EditorTemplate extends VpeAbstractTemplate {
private static final String STYLE_PATH = "editor/editor4.css"; //$NON-NLS-1$
private static final String CSS_CKE_SKIN_RF_CLASS = "cke_skin_richfaces"; //$NON-NLS-1$
private static final String CSS_CKE_WRAPPER_CLASS = "cke_wrapper"; //$NON-NLS-1$
private static final String CSS_CKE_EDITOR_CLASS = "cke_editor"; //$NON-NLS-1$
private static final String CSS_CKE_TOP_CLASS = "cke_top"; //$NON-NLS-1$
private static final String CSS_CKE_CONTENTS_CLASS = "cke_contents"; //$NON-NLS-1$
private static final String CSS_CKE_BOTTOM_CLASS = "cke_bottom"; //$NON-NLS-1$
private static final String CSS_CKE_TOOLBOX_CLASS = "cke_toolbox"; //$NON-NLS-1$
private static final String CSS_CKE_TOOLBOX_COLLAPSER_CLASS = "cke_toolbox_collapser"; //$NON-NLS-1$
private static final String CSS_CKE_RESIZER_CLASS = "cke_resizer"; //$NON-NLS-1$
private static final String CSS_CKE_PATH_CLASS = "cke_path"; //$NON-NLS-1$
private static final String CSS_CKE_TOOLBAR_CLASS = "cke_toolbar"; //$NON-NLS-1$
private static final String CSS_CKE_TOOLGROUP_CLASS = "cke_toolgroup"; //$NON-NLS-1$
private static final String CSS_TOOLBAR_IMAGE_CLASS = "jbds_rf_editor_toolbar_image_internal_css_class"; //$NON-NLS-1$
private static final String CSS_TEXTAREA_CLASS = "jbds_rf_editor_content_textarea_internal_css_class"; //$NON-NLS-1$
@Override
public VpeCreationData create(VpePageContext pageContext, Node sourceNode,
nsIDOMDocument visualDocument) {
Element sourceElement = (Element) sourceNode;
/*
* Add required css file
*/
ComponentUtil.setCSSLink(pageContext, STYLE_PATH, "editor4"); //$NON-NLS-1$
nsIDOMElement topSpan = visualDocument.createElement(HTML.TAG_SPAN);
nsIDOMElement spanWrapper = visualDocument.createElement(HTML.TAG_SPAN);
nsIDOMElement table = visualDocument.createElement(HTML.TAG_TABLE);
nsIDOMElement tbody = visualDocument.createElement(HTML.TAG_TBODY);
nsIDOMElement tr1 = visualDocument.createElement(HTML.TAG_TR);
nsIDOMElement tr2 = visualDocument.createElement(HTML.TAG_TR);
nsIDOMElement tr3 = visualDocument.createElement(HTML.TAG_TR);
nsIDOMElement td1 = visualDocument.createElement(HTML.TAG_TD);
nsIDOMElement td2 = visualDocument.createElement(HTML.TAG_TD);
nsIDOMElement td3 = visualDocument.createElement(HTML.TAG_TD);
/*
* Process Source Element attributes
*/
if (sourceElement.hasAttribute(HTML.ATTR_WIDTH)) {
topSpan.setAttribute(HTML.ATTR_STYLE, HTML.ATTR_WIDTH + Constants.COLON +
VpeStyleUtil.addPxIfNecessary(sourceElement.getAttribute(HTML.ATTR_WIDTH)));
}
if (sourceElement.hasAttribute(HTML.ATTR_HEIGHT)) {
td2.setAttribute(HTML.ATTR_STYLE, HTML.ATTR_HEIGHT + Constants.COLON +
VpeStyleUtil.addPxIfNecessary(sourceElement.getAttribute(HTML.ATTR_HEIGHT)));
}
/*
* TOP ROW
*/
nsIDOMElement divToolbox = visualDocument.createElement(HTML.TAG_DIV);
nsIDOMElement a = visualDocument.createElement(HTML.TAG_SPAN);
nsIDOMElement span1 = visualDocument.createElement(HTML.TAG_SPAN);
nsIDOMElement span2 = visualDocument.createElement(HTML.TAG_SPAN);
nsIDOMElement span3img = visualDocument.createElement(HTML.TAG_SPAN);
span1.setAttribute(HTML.ATTR_CLASS, CSS_CKE_TOOLBAR_CLASS);
span2.setAttribute(HTML.ATTR_CLASS, CSS_CKE_TOOLGROUP_CLASS);
span3img.setAttribute(HTML.ATTR_CLASS, CSS_TOOLBAR_IMAGE_CLASS);
span2.appendChild(span3img);
span1.appendChild(span2);
divToolbox.appendChild(span1);
divToolbox.appendChild(a);
/*
* MIDDLE TEXT AREA ROW
*/
nsIDOMElement textArea = visualDocument.createElement(HTML.TAG_TEXTAREA);
/*
* BOTTOM ROW
*/
nsIDOMElement divResizer = visualDocument.createElement(HTML.TAG_DIV);
nsIDOMElement divPath = visualDocument.createElement(HTML.TAG_DIV);
/*
* Add css style classes
*/
topSpan.setAttribute(HTML.ATTR_CLASS, CSS_CKE_SKIN_RF_CLASS);
spanWrapper.setAttribute(HTML.ATTR_CLASS, CSS_CKE_WRAPPER_CLASS);
table.setAttribute(HTML.ATTR_CLASS, CSS_CKE_EDITOR_CLASS);
td1.setAttribute(HTML.ATTR_CLASS, CSS_CKE_TOP_CLASS);
td2.setAttribute(HTML.ATTR_CLASS, CSS_CKE_CONTENTS_CLASS);
td3.setAttribute(HTML.ATTR_CLASS, CSS_CKE_BOTTOM_CLASS);
divToolbox.setAttribute(HTML.ATTR_CLASS, CSS_CKE_TOOLBOX_CLASS);
a.setAttribute(HTML.ATTR_CLASS, CSS_CKE_TOOLBOX_COLLAPSER_CLASS);
textArea.setAttribute(HTML.ATTR_CLASS, CSS_TEXTAREA_CLASS);
divResizer.setAttribute(HTML.ATTR_CLASS, CSS_CKE_RESIZER_CLASS);
divPath.setAttribute(HTML.ATTR_CLASS, CSS_CKE_PATH_CLASS);
/*
* Nesting the elements
*/
td1.appendChild(divToolbox);
td1.appendChild(a);
td2.appendChild(textArea);
td3.appendChild(divResizer);
td3.appendChild(divPath);
tr1.appendChild(td1);
tr2.appendChild(td2);
tr3.appendChild(td3);
tbody.appendChild(tr1);
tbody.appendChild(tr2);
tbody.appendChild(tr3);
table.appendChild(tbody);
spanWrapper.appendChild(table);
topSpan.appendChild(spanWrapper);
/*
* Create VpeCreationData
*/
VpeCreationData creationData = new VpeCreationData(topSpan);
return creationData;
}
}