1 /* 2 * The contents of this file are subject to the terms of the Common Development 3 * and Distribution License (the License). You may not use this file except in 4 * compliance with the License. 5 * 6 * You can obtain a copy of the License at http://www.netbeans.org/cddl.html 7 * or http://www.netbeans.org/cddl.txt. 8 * 9 * When distributing Covered Code, include this CDDL Header Notice in each file 10 * and include the License file at http://www.netbeans.org/cddl.txt. 11 * If applicable, add the following below the CDDL Header, with the fields 12 * enclosed by brackets [] replaced by your own identifying information: 13 * "Portions Copyrighted [year] [name of copyright owner]" 14 * 15 * The Original Software is NetBeans. The Initial Developer of the Original 16 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun 17 * Microsystems, Inc. All Rights Reserved. 18 */ 19 20 package org.netbeans.modules.ant.grammar; 21 22 import java.beans.FeatureDescriptor; 23 import java.util.Enumeration; 24 import org.netbeans.modules.xml.api.model.GrammarEnvironment; 25 import org.netbeans.modules.xml.api.model.GrammarQuery; 26 import org.netbeans.modules.xml.api.model.GrammarQueryManager; 27 import org.openide.util.Enumerations; 28 import org.w3c.dom.Node; 29 import org.w3c.dom.Element; 30 31 /** 32 * Provides the Ant grammar for any documents whose root elements matches a standard pattern. 33 * See also ant/src/.../resources/mime-resolver.xml. 34 * @author Petr Kuzel, Jesse Glick 35 */ 36 public final class AntGrammarQueryProvider extends GrammarQueryManager { 37 38 public Enumeration enabled(GrammarEnvironment ctx) { 39 Enumeration en = ctx.getDocumentChildren(); 40 while (en.hasMoreElements()) { 41 Node next = (Node) en.nextElement(); 42 if (next.getNodeType() == next.ELEMENT_NODE) { 43 Element root = (Element) next; 44 // XXX should also check for any root <project> in NS "antlib:org.apache.tools.ant" 45 // (but no NS support in HintContext impl anyway: #38340) 46 if ("project".equals(root.getNodeName()) && (root.getAttributeNode("default") != null || root.getAttributeNode("basedir") != null)) { // NOI18N 47 return Enumerations.singleton (next); 48 } 49 } 50 } 51 return null; 52 } 53 54 public FeatureDescriptor getDescriptor() { 55 return new FeatureDescriptor(); 56 } 57 58 public GrammarQuery getGrammar(GrammarEnvironment env) { 59 // XXX pick up env.fileObject too 60 return new AntGrammar(); 61 } 62 63 } 64