1 19 package org.netbeans.modules.java.source.classpath; 20 21 22 import java.net.URL ; 23 import javax.swing.event.ChangeListener ; 24 import org.netbeans.api.java.queries.SourceForBinaryQuery; 25 import org.netbeans.modules.java.source.usages.Index; 26 import org.netbeans.spi.java.queries.SourceForBinaryQueryImplementation; 27 import org.openide.filesystems.FileObject; 28 import org.openide.filesystems.URLMapper; 29 30 34 public class CacheSourceForBinaryQueryImpl implements SourceForBinaryQueryImplementation { 35 36 private String FILE_PROTOCOL = "file"; 38 39 public CacheSourceForBinaryQueryImpl() { 40 } 41 42 public SourceForBinaryQuery.Result findSourceRoots(URL binaryRoot) { 43 if (!FILE_PROTOCOL.equals (binaryRoot.getProtocol())) { 44 return null; 45 } 46 URL sourceURL = Index.getSourceRootForClassFolder(binaryRoot); 47 if (sourceURL != null) { 48 return new R (sourceURL); 49 } 50 return null; 51 } 52 53 private static class R implements SourceForBinaryQuery.Result { 54 55 private final FileObject sourceRoot; 56 57 public R (final URL sourceRootURL) { 58 assert sourceRootURL != null; 59 this.sourceRoot = URLMapper.findFileObject(sourceRootURL); 60 } 61 62 public void removeChangeListener(ChangeListener l) { 63 } 65 66 public void addChangeListener(ChangeListener l) { 67 } 69 70 public FileObject[] getRoots() { 71 if (this.sourceRoot == null) { 72 return new FileObject[0]; 73 } 74 else { 75 return new FileObject[] {this.sourceRoot}; 76 } 77 } 78 } 79 } 80 | Popular Tags |