/******************************************************************************* * Copyright (c) 2007-2009 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 * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.seam.vpe.template; import static org.jboss.tools.vpe.xulrunner.util.XPCOM.queryInterface; 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.HTML; import org.mozilla.interfaces.nsIDOMDocument; import org.mozilla.interfaces.nsIDOMElement; import org.mozilla.interfaces.nsIDOMNode; import org.mozilla.interfaces.nsIDOMNodeList; import org.w3c.dom.Element; import org.w3c.dom.Node; public class SeamMailBodyTemplate extends VpeAbstractTemplate { private static final String ATTR_TYPE = "type"; //$NON-NLS-1$ private static final String ATTR_VALUE_PLAIN = "plain"; //$NON-NLS-1$ public VpeCreationData create(VpePageContext pageContext, Node sourceNode, nsIDOMDocument visualDocument) { Element sourceElement = (Element) sourceNode; nsIDOMNode visualNode = null; if (sourceElement.hasChildNodes()) { visualNode = visualDocument.createElement(HTML.TAG_DIV); } return new VpeCreationData(visualNode); } private nsIDOMNode clearAllStyleAttrs(nsIDOMNode visualNode) { if (visualNode.getNodeType() == nsIDOMNode.ELEMENT_NODE) { nsIDOMElement visualElement = queryInterface(visualNode, nsIDOMElement.class); visualElement.removeAttribute(HTML.ATTR_CLASS); visualElement.removeAttribute(HTML.ATTR_STYLE); } if (visualNode != null) { nsIDOMNodeList children = visualNode.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { clearAllStyleAttrs(children.item(i)); } } return visualNode; } @Override public void validate(VpePageContext pageContext, Node sourceNode, nsIDOMDocument visualDocument, VpeCreationData data) { super.validate(pageContext, sourceNode, visualDocument, data); String attrValue =((Element)sourceNode).getAttribute(ATTR_TYPE); if (attrValue!=null && ATTR_VALUE_PLAIN.equals(attrValue.trim())) { nsIDOMNode parentNode = data.getNode(); if (parentNode!=null) { nsIDOMNodeList nodeList = parentNode.getChildNodes(); for (int i = 0; i < nodeList.getLength(); i++) { clearAllStyleAttrs(nodeList.item(i)); } } } } }