1 19 package org.netbeans.modules.xml.schema.completion; 20 21 import java.util.List ; 22 import javax.swing.text.Document ; 23 import javax.swing.text.JTextComponent ; 24 import org.netbeans.editor.BaseDocument; 25 import org.netbeans.modules.xml.schema.completion.util.CompletionContextImpl; 26 import org.netbeans.modules.xml.schema.completion.util.CompletionUtil; 27 import org.netbeans.modules.xml.text.syntax.XMLSyntaxSupport; 28 import org.netbeans.spi.editor.completion.CompletionResultSet; 29 import org.netbeans.spi.editor.completion.support.AsyncCompletionQuery; 30 import org.openide.filesystems.FileObject; 31 32 36 public class CompletionQuery extends AsyncCompletionQuery { 37 38 41 public CompletionQuery(FileObject primaryFile) { 42 this.primaryFile = primaryFile; 43 } 44 45 48 protected void prepareQuery(JTextComponent component) { 49 this.component = component; 50 } 51 52 55 protected void query(CompletionResultSet resultSet, 56 Document doc, int caretOffset) { 57 List <CompletionResultItem> items = getCompletionItems(doc, caretOffset); 58 if(items != null) resultSet.addAllItems(items); 59 resultSet.finish(); 60 } 61 62 63 66 List <CompletionResultItem> getCompletionItems(Document doc, int caretOffset) { 67 List <CompletionResultItem> completionItems = null; 68 69 XMLSyntaxSupport support = (XMLSyntaxSupport) ((BaseDocument)doc).getSyntaxSupport(); 71 context = new CompletionContextImpl(primaryFile, support, caretOffset); 72 73 if(!context.initModels() || !context.initContext()) { 75 return null; 76 } 77 78 switch (context.getCompletionType()) { 80 case COMPLETION_TYPE_ELEMENT: 81 completionItems = CompletionUtil.getElements(context); 82 break; 83 84 case COMPLETION_TYPE_ATTRIBUTE: 85 completionItems = CompletionUtil.getAttributes(context); 86 break; 87 88 case COMPLETION_TYPE_VALUE: 89 break; 90 91 case COMPLETION_TYPE_ENTITY: 92 break; 93 94 case COMPLETION_TYPE_NOTATION: 95 break; 96 97 default: 98 break; 99 } 100 101 return completionItems; 102 } 103 104 private JTextComponent component; 105 private FileObject primaryFile; 106 private CompletionContextImpl context; 107 } 108 | Popular Tags |