use of org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery in project webtools.sourceediting by eclipse.
the class ElementNodeCleanupHandler method isEmptyElement.
private boolean isEmptyElement(IDOMElement element) {
Document document = element.getOwnerDocument();
if (document == null)
// undefined tag, return default
return false;
ModelQuery modelQuery = ModelQueryUtil.getModelQuery(document);
if (modelQuery == null)
// undefined tag, return default
return false;
CMElementDeclaration decl = modelQuery.getCMElementDeclaration(element);
if (decl == null)
// undefined tag, return default
return false;
return (decl.getContentType() == CMElementDeclaration.EMPTY);
}
use of org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery in project webtools.sourceediting by eclipse.
the class ElementNodeCleanupHandler method getRequiredAttrs.
protected List getRequiredAttrs(Node node) {
List result = new ArrayList();
ModelQuery modelQuery = getModelQuery(node);
if (modelQuery != null) {
CMElementDeclaration elementDecl = modelQuery.getCMElementDeclaration((Element) node);
if (elementDecl != null) {
CMNamedNodeMap attrMap = elementDecl.getAttributes();
Iterator it = attrMap.iterator();
CMAttributeDeclaration attr = null;
while (it.hasNext()) {
attr = (CMAttributeDeclaration) it.next();
if (attr.getUsage() == CMAttributeDeclaration.REQUIRED) {
result.add(attr);
}
}
}
}
return result;
}
use of org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery in project webtools.sourceediting by eclipse.
the class DOMExtensionDetailsContentProvider method getItems.
public Object[] getItems(Object input) {
HashMap resultMap = new HashMap();
if (input instanceof Element) {
Element element = (Element) input;
// here we compute items for the attributes that physically in the document
//
NamedNodeMap attributes = element.getAttributes();
for (int i = 0; i < attributes.getLength(); i++) {
Attr attr = (Attr) attributes.item(i);
if (// $NON-NLS-1$ //$NON-NLS-2$
!XMLNS.equals(attr.getName()) && !XMLNS.equals(attr.getPrefix())) {
resultMap.put(attr.getName(), DOMExtensionItem.createItemForElementAttribute(element, attr));
}
}
// here we compute an item for the text node that is physically in the document
//
String textNodeValue = new TreeContentHelper().getNodeValue(element);
if (textNodeValue != null) {
resultMap.put(TEXT_NODE_KEY, DOMExtensionItem.createItemForElementText(element));
}
ModelQuery modelQuery = ModelQueryUtil.getModelQuery(element.getOwnerDocument());
if (modelQuery != null) {
CMElementDeclaration ed = modelQuery.getCMElementDeclaration(element);
if (ed != null) {
// here we compute items for the attributes that may be added to the document according to the grammar
//
List list = modelQuery.getAvailableContent(element, ed, ModelQuery.INCLUDE_ATTRIBUTES);
for (Iterator i = list.iterator(); i.hasNext(); ) {
CMAttributeDeclaration ad = (CMAttributeDeclaration) i.next();
if (ad != null && resultMap.get(ad.getNodeName()) == null) {
resultMap.put(ad.getNodeName(), DOMExtensionItem.createItemForElementAttribute(element, ad));
}
}
if (resultMap.get(TEXT_NODE_KEY) == null) {
// here we compute an item for the text node that may be added to the document according to the grammar
//
int contentType = ed.getContentType();
if (contentType == CMElementDeclaration.PCDATA || contentType == CMElementDeclaration.MIXED) {
resultMap.put(TEXT_NODE_KEY, DOMExtensionItem.createItemForElementText(element));
}
}
}
}
Collection collection = resultMap.values();
//
for (Iterator i = collection.iterator(); i.hasNext(); ) {
initPropertyEditorConfiguration((DOMExtensionItem) i.next());
}
DOMExtensionItem[] items = new DOMExtensionItem[collection.size()];
resultMap.values().toArray(items);
//
if (items.length > 0) {
Comparator comparator = new Comparator() {
public int compare(Object arg0, Object arg1) {
DOMExtensionItem a = (DOMExtensionItem) arg0;
DOMExtensionItem b = (DOMExtensionItem) arg1;
// begin special case to ensure 'text nodes' come last
if (a.isTextValue() && !b.isTextValue()) {
return 1;
} else if (b.isTextValue() && !a.isTextValue()) {
return -1;
} else // end special case
{
return Collator.getInstance().compare(a.getName(), b.getName());
}
}
};
Arrays.sort(items, comparator);
}
return items;
} else if (input instanceof Attr) {
Attr attr = (Attr) input;
DOMExtensionItem item = DOMExtensionItem.createItemForAttributeText(attr.getOwnerElement(), attr);
DOMExtensionItem[] items = { item };
return items;
}
return EMPTY_ARRAY;
}
use of org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery in project webtools.sourceediting by eclipse.
the class AbstractXMLElementContentAssistRequest method getAvailableContentNodes.
protected Iterator<CMNode> getAvailableContentNodes(IDOMDocument domDocument, Node ancestorNode, int includeOptions) {
ModelQuery modelQuery = ModelQueryUtil.getModelQuery(domDocument);
CMElementDeclaration cmElementDec = modelQuery.getCMElementDeclaration((Element) ancestorNode);
List<CMNode> cmNodeList = modelQuery.getAvailableContent((Element) ancestorNode, cmElementDec, includeOptions);
Iterator<CMNode> cmNodeIt = cmNodeList.iterator();
return cmNodeIt;
}
use of org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery in project webtools.sourceediting by eclipse.
the class AbstractXMLElementContentAssistRequest method getAvailableChildrenAtIndex.
protected List getAvailableChildrenAtIndex(Element parent, int index, int validityChecking) {
List list = new ArrayList();
CMElementDeclaration parentDecl = getCMElementDeclaration(parent);
if (parentDecl != null) {
ModelQuery modelQuery = ModelQueryUtil.getModelQuery(parent.getOwnerDocument());
// taken from ActionManagers
// int editMode = modelQuery.getEditMode();
int editMode = ModelQuery.EDIT_MODE_UNCONSTRAINED;
int ic = (editMode == ModelQuery.EDIT_MODE_CONSTRAINED_STRICT) ? ModelQuery.INCLUDE_CHILD_NODES | ModelQuery.INCLUDE_SEQUENCE_GROUPS : ModelQuery.INCLUDE_CHILD_NODES;
modelQuery.getInsertActions(parent, parentDecl, index, ic, validityChecking, list);
}
return list;
}
Aggregations