1 19 20 package org.netbeans.modules.xml.schema.ui.basic.search; 21 22 import java.util.ArrayList ; 23 import java.util.List ; 24 import org.netbeans.modules.xml.schema.model.Schema; 25 import org.netbeans.modules.xml.schema.model.SchemaComponent; 26 import org.netbeans.modules.xml.schema.model.SchemaModel; 27 import org.netbeans.modules.xml.schema.model.visitor.FindSchemaComponentFromDOM; 28 import org.netbeans.modules.xml.xdm.nodes.Document; 29 import org.netbeans.modules.xml.xdm.nodes.Element; 30 import org.netbeans.modules.xml.xdm.nodes.Node; 31 import org.netbeans.modules.xml.xam.ui.search.Query; 32 import org.netbeans.modules.xml.xam.ui.search.SearchException; 33 import org.netbeans.modules.xml.xam.ui.search.SearchProvider; 34 import org.netbeans.modules.xml.xdm.visitor.XPathFinder; 35 import org.openide.util.NbBundle; 36 37 42 public class XPathSearchProvider implements SearchProvider { 43 44 private SchemaModel model; 45 46 private List <Object > results; 47 48 53 public XPathSearchProvider(SchemaModel model) { 54 this.model = model; 55 } 56 57 public String getDisplayName() { 58 return NbBundle.getMessage(XPathSearchProvider.class, 59 "LBL_SearchProvider_XPath"); 60 } 61 62 public String getInputDescription() { 63 return NbBundle.getMessage(XPathSearchProvider.class, 64 "HELP_SearchProvider_XPath"); 65 } 66 67 public String getShortDescription() { 68 return NbBundle.getMessage(XPathSearchProvider.class, 69 "HINT_SearchProvider_XPath"); 70 } 71 72 public List <Object > search(Query query) throws SearchException { 73 results = new ArrayList <Object >(); 74 Schema schema = model.getSchema(); 75 org.w3c.dom.Document document = model.getDocument(); 76 if (document instanceof Document) { 77 XPathFinder xfinder = new XPathFinder(); 78 try { 79 List <Node> nodes = xfinder.findNodes((Document) document, 80 query.getQuery()); 81 FindSchemaComponentFromDOM dfinder = new FindSchemaComponentFromDOM(); 82 for (Node node : nodes) { 83 if (node instanceof Element) { 84 SchemaComponent comp = dfinder.findComponent(schema, 85 (Element) node); 86 results.add(comp); 87 } 88 } 91 } catch (RuntimeException re) { 92 } 95 } 96 return results; 97 } 98 } 99 | Popular Tags |