1 19 package org.netbeans.modules.java.j2seproject; 20 21 import java.beans.PropertyChangeEvent ; 22 import java.beans.PropertyChangeListener ; 23 import org.openide.filesystems.FileObject; 24 import org.netbeans.api.queries.FileBuiltQuery; 25 import org.netbeans.spi.queries.FileBuiltQueryImplementation; 26 import org.netbeans.spi.project.support.ant.AntProjectHelper; 27 import org.netbeans.spi.project.support.ant.PropertyEvaluator; 28 import org.netbeans.modules.java.j2seproject.ui.customizer.J2SEProjectProperties; 29 30 31 32 33 34 public class J2SEFileBuiltQuery implements FileBuiltQueryImplementation, PropertyChangeListener { 35 36 private FileBuiltQueryImplementation delegate; 37 private final AntProjectHelper helper; 38 private final PropertyEvaluator evaluator; 39 private final SourceRoots sourceRoots; 40 private final SourceRoots testRoots; 41 42 J2SEFileBuiltQuery (AntProjectHelper helper, PropertyEvaluator evaluator, 43 SourceRoots sourceRoots, SourceRoots testRoots) { 44 assert helper != null && evaluator != null && sourceRoots != null && testRoots != null; 45 this.helper = helper; 46 this.evaluator = evaluator; 47 this.sourceRoots = sourceRoots; 48 this.testRoots = testRoots; 49 this.sourceRoots.addPropertyChangeListener (this); 50 this.testRoots.addPropertyChangeListener (this); 51 } 52 53 public synchronized FileBuiltQuery.Status getStatus(FileObject file) { 54 if (this.delegate == null) { 55 this.delegate = createDelegate (); 56 } 57 return this.delegate.getStatus (file); 58 } 59 60 61 private FileBuiltQueryImplementation createDelegate () { 62 String [] srcRoots = this.sourceRoots.getRootProperties(); 63 String [] tstRoots = this.testRoots.getRootProperties(); 64 String [] from = new String [srcRoots.length + tstRoots.length]; 65 String [] to = new String [srcRoots.length + tstRoots.length]; 66 for (int i=0; i< srcRoots.length; i++) { 67 from[i] = "${" + srcRoots[i] + "}/*.java"; to[i] = "${" + J2SEProjectProperties.BUILD_CLASSES_DIR + "}/*.class"; } 70 for (int i=0; i<tstRoots.length; i++) { 71 from[srcRoots.length+i] = "${" + tstRoots[i] + "}/*.java"; to[srcRoots.length+i] = "${" + J2SEProjectProperties.BUILD_TEST_CLASSES_DIR + "}/*.class"; } 74 return helper.createGlobFileBuiltQuery(evaluator, from, to); } 76 77 public void propertyChange(PropertyChangeEvent evt) { 78 if (SourceRoots.PROP_ROOT_PROPERTIES.equals (evt.getPropertyName())) { 79 synchronized(this) { 80 this.delegate = null; 81 } 83 } 84 } 85 } 86 | Popular Tags |