blob: 340b67cdfb47b80315033cd6b625388bcff3d20d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Sybase, Inc. and others.
*
* All rights reserved. This program and the accompanying materials
* are 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:
* Sybase, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.pagedesigner.dom;
import javax.xml.namespace.QName;
import org.eclipse.jst.pagedesigner.adapters.IBodyInfo;
import org.eclipse.jst.pagedesigner.adapters.internal.BodyInfo;
import org.eclipse.jst.pagedesigner.editors.palette.impl.PaletteItemDescriptor;
import org.eclipse.jst.pagedesigner.utils.CMUtil;
import org.eclipse.jst.pagedesigner.utils.CommandUtil;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.Text;
/**
* Simple utility class.
*
* @author mengbo
* @version 1.5
*/
public class ValidatorSupport {
public static boolean checkContainer(IDOMPosition position, QName qname) {
return checkContainer(position, new QName[] { qname });
}
public static boolean checkContainer(IDOMPosition position, QName qname[]) {
Node node = position.getContainerNode();
while (node != null) {
if (node instanceof Text) {
node = node.getParentNode();
continue;
}
if (node instanceof Element) {
Element ele = (Element) node;
String url = CMUtil.getElementNamespaceURI(ele);
String tag = ele.getLocalName();
for (int i = 0; i < qname.length; i++) {
if (tag.equalsIgnoreCase(qname[i].getLocalPart())) {
if (url == null) {
// this means something wrong. To be error tolerant,
// we treat it
// as if url is same
return true;
} else if (url.equals(qname[i].getNamespaceURI())) {
return true;
}
}
}
node = node.getParentNode();
continue;
}
break;
}
return false;
}
public static IDOMPosition insertContainer(IDOMPosition position,
QName container) {
PaletteItemDescriptor itemDes = new PaletteItemDescriptor();
itemDes.setURI(container.getNamespaceURI());
itemDes.setTagName(container.getLocalPart());
itemDes.setDefaultPrefix("h");
IDOMModel model = ((IDOMNode) position.getContainerNode()).getModel();
Element form = CommandUtil.excuteInsertion(itemDes, model, position);
if (form != null) {
DOMPosition pos = new DOMPosition(form, 0);
return pos;
} else {
return null;
}
}
public static IBodyInfo getBodyInfo() {
return BodyInfo.getInstance();
}
}