diff -r 55cd0ce718c6 apisupport.refactoring/nbproject/project.xml --- a/apisupport.refactoring/nbproject/project.xml Fri Mar 27 08:43:46 2009 +0100 +++ b/apisupport.refactoring/nbproject/project.xml Wed Apr 01 17:49:34 2009 +0200 @@ -112,7 +112,7 @@ 1 - 1.22 + 1.34 diff -r 55cd0ce718c6 apisupport.refactoring/src/org/netbeans/modules/apisupport/refactoring/RetoucheUtils.java --- a/apisupport.refactoring/src/org/netbeans/modules/apisupport/refactoring/RetoucheUtils.java Fri Mar 27 08:43:46 2009 +0100 +++ b/apisupport.refactoring/src/org/netbeans/modules/apisupport/refactoring/RetoucheUtils.java Wed Apr 01 17:49:34 2009 +0200 @@ -201,13 +201,7 @@ public static boolean isFileInOpenProject(FileObject file) { assert file != null; Project p = FileOwnerQuery.getOwner(file); - Project[] opened = OpenProjects.getDefault().getOpenProjects(); - for (int i = 0; i 1 - 1.33 + 1.34 diff -r 55cd0ce718c6 cnd.refactoring/src/org/netbeans/modules/cnd/refactoring/support/CsmRefactoringUtils.java --- a/cnd.refactoring/src/org/netbeans/modules/cnd/refactoring/support/CsmRefactoringUtils.java Fri Mar 27 08:43:46 2009 +0100 +++ b/cnd.refactoring/src/org/netbeans/modules/cnd/refactoring/support/CsmRefactoringUtils.java Wed Apr 01 17:49:34 2009 +0200 @@ -89,13 +89,7 @@ return false; } Project p = FileOwnerQuery.getOwner(f); - Project[] opened = OpenProjects.getDefault().getOpenProjects(); - for (int i = 0; i < opened.length; i++) { - if (p.equals(opened[i]) || opened[i].equals(p)) { - return true; - } - } - return false; + return OpenProjects.getDefault().isProjectOpen(p); } public static boolean isRefactorable(FileObject fo) { diff -r 55cd0ce718c6 groovy.refactoring/nbproject/project.xml --- a/groovy.refactoring/nbproject/project.xml Fri Mar 27 08:43:46 2009 +0100 +++ b/groovy.refactoring/nbproject/project.xml Wed Apr 01 17:49:34 2009 +0200 @@ -20,6 +20,15 @@ 0.7 + + + + org.netbeans.modules.csl.api + + + + 0-1 + 1.8 @@ -49,23 +58,6 @@ - org.netbeans.modules.csl.api - - - - 0-1 - 1.8 - - - - org.netbeans.modules.parsing.api - - - - 1.0 - - - org.netbeans.modules.java.project @@ -92,6 +84,14 @@ + org.netbeans.modules.parsing.api + + + + 1.0 + + + org.netbeans.modules.projectapi @@ -106,7 +106,7 @@ 1 - 1.31 + 1.34 diff -r 55cd0ce718c6 groovy.refactoring/src/org/netbeans/modules/groovy/refactoring/RefactoringUtil.java --- a/groovy.refactoring/src/org/netbeans/modules/groovy/refactoring/RefactoringUtil.java Fri Mar 27 08:43:46 2009 +0100 +++ b/groovy.refactoring/src/org/netbeans/modules/groovy/refactoring/RefactoringUtil.java Wed Apr 01 17:49:34 2009 +0200 @@ -142,17 +142,14 @@ public static boolean isOnSourceClasspath(FileObject fo) { Project p = FileOwnerQuery.getOwner(fo); if (p==null) return false; - Project[] opened = OpenProjects.getDefault().getOpenProjects(); - for (int i = 0; i { + ProjectState s; + + public Project run() throws IOException { + for (ProjectFactory pf : Lookup.getDefault().lookupAll(ProjectFactory.class)) { + Project p = pf.loadProject(getProjectDirectory(), s); + if (p != null) { + return p; + } + } + return null; + } + } + FindProject findProject = new FindProject(); + findProject.s = s; + Project p = ProjectManager.mutex().readAccess(findProject); if (p == FeatureNonProject.this) { throw new IllegalStateException("New project shall be found! " + p); // NOI18N } diff -r 55cd0ce718c6 j2ee.jpa.refactoring/nbproject/project.xml --- a/j2ee.jpa.refactoring/nbproject/project.xml Fri Mar 27 08:43:46 2009 +0100 +++ b/j2ee.jpa.refactoring/nbproject/project.xml Wed Apr 01 17:49:34 2009 +0200 @@ -107,7 +107,7 @@ 1 - 1.24 + 1.34 diff -r 55cd0ce718c6 j2ee.jpa.refactoring/src/org/netbeans/modules/j2ee/jpa/refactoring/RefactoringUtil.java --- a/j2ee.jpa.refactoring/src/org/netbeans/modules/j2ee/jpa/refactoring/RefactoringUtil.java Fri Mar 27 08:43:46 2009 +0100 +++ b/j2ee.jpa.refactoring/src/org/netbeans/modules/j2ee/jpa/refactoring/RefactoringUtil.java Wed Apr 01 17:49:34 2009 +0200 @@ -129,17 +129,14 @@ public static boolean isOnSourceClasspath(FileObject fo) { Project p = FileOwnerQuery.getOwner(fo); if (p==null) return false; - Project[] opened = OpenProjects.getDefault().getOpenProjects(); - for (int i = 0; i 1 - 1.30 + 1.34 diff -r 55cd0ce718c6 php.refactoring/src/org/netbeans/modules/refactoring/php/findusages/RefactoringUtils.java --- a/php.refactoring/src/org/netbeans/modules/refactoring/php/findusages/RefactoringUtils.java Fri Mar 27 08:43:46 2009 +0100 +++ b/php.refactoring/src/org/netbeans/modules/refactoring/php/findusages/RefactoringUtils.java Wed Apr 01 17:49:34 2009 +0200 @@ -227,13 +227,7 @@ public static boolean isFileInOpenProject(FileObject file) { assert file != null; Project p = FileOwnerQuery.getOwner(file); - Project[] opened = OpenProjects.getDefault().getOpenProjects(); - for (int i = 0; i < opened.length; i++) { - if (p.equals(opened[i]) || opened[i].equals(p)) { - return true; - } - } - return false; + return OpenProjects.getDefault().isProjectOpen(p); } public static boolean isOnSourceClasspath(FileObject fo) { diff -r 55cd0ce718c6 projectui/test/unit/src/org/netbeans/modules/project/ui/OpenProjectListDuplicatesTest.java --- a/projectui/test/unit/src/org/netbeans/modules/project/ui/OpenProjectListDuplicatesTest.java Fri Mar 27 08:43:46 2009 +0100 +++ b/projectui/test/unit/src/org/netbeans/modules/project/ui/OpenProjectListDuplicatesTest.java Wed Apr 01 17:49:34 2009 +0200 @@ -114,10 +114,16 @@ } LOG.info("Before first open"); - OpenProjects.getDefault().open(new Project[] { new Fake() }, false); + Fake f = new Fake(); + assertFalse("null is not open", OpenProjects.getDefault().isProjectOpen(null)); + OpenProjects.getDefault().open(new Project[] { f }, false); + assertTrue("Fake is open", OpenProjects.getDefault().isProjectOpen(f)); + assertTrue("Fake is open, but real one is reported open too", OpenProjects.getDefault().isProjectOpen(p)); LOG.info("After first and Before 2nd open"); OpenProjects.getDefault().open(new Project[] { p }, false); LOG.info("After 2nd open"); + assertTrue("Real one is open", OpenProjects.getDefault().isProjectOpen(p)); + assertTrue("Fake is open too", OpenProjects.getDefault().isProjectOpen(f)); List arr = Arrays.asList(OpenProjects.getDefault().openProjects().get()); @@ -129,6 +135,8 @@ if (OpenProjects.getDefault().getOpenProjects().length != 0) { fail("All projects shall be closed: " + Arrays.asList(OpenProjects.getDefault().getOpenProjects())); } + assertFalse("No project is opened", OpenProjects.getDefault().isProjectOpen(p)); + assertFalse("No project is opened", OpenProjects.getDefault().isProjectOpen(f)); assertEquals("Close hook called", 1, TestProjectOpenedHookImpl.closed); } diff -r 55cd0ce718c6 projectuiapi/apichanges.xml --- a/projectuiapi/apichanges.xml Fri Mar 27 08:43:46 2009 +0100 +++ b/projectuiapi/apichanges.xml Wed Apr 01 17:49:34 2009 +0200 @@ -104,6 +104,23 @@ + + + Utility method OpenProjects.isProjectOpen + + + + + +

+ It came to our attention that often users of OpenProjects + want to find out if their project is opened or not. To simplify + such code we offer a handy utility method. +

+
+ + +
Add annotation @NodeFactory.Registration diff -r 55cd0ce718c6 projectuiapi/nbproject/project.properties --- a/projectuiapi/nbproject/project.properties Fri Mar 27 08:43:46 2009 +0100 +++ b/projectuiapi/nbproject/project.properties Wed Apr 01 17:49:34 2009 +0200 @@ -39,7 +39,7 @@ javac.compilerargs=-Xlint -Xlint:-serial javac.source=1.5 -spec.version.base=1.33.0 +spec.version.base=1.34.0 is.autoload=true javadoc.arch=${basedir}/arch.xml javadoc.apichanges=${basedir}/apichanges.xml diff -r 55cd0ce718c6 projectuiapi/src/org/netbeans/api/project/ui/OpenProjects.java --- a/projectuiapi/src/org/netbeans/api/project/ui/OpenProjects.java Fri Mar 27 08:43:46 2009 +0100 +++ b/projectuiapi/src/org/netbeans/api/project/ui/OpenProjects.java Wed Apr 01 17:49:34 2009 +0200 @@ -169,6 +169,23 @@ trampoline.openAPI (projects,openSubprojects); } + /** Finds out if the project is opened. + * @param p the project to verify + * @return true if this project is among open ones, false otherwise + * @since 1.34 + */ + public boolean isProjectOpen(Project p) { + if (p == null) { + return false; + } + for (Project real : getOpenProjects()) { + if (p.equals(real) || real.equals(p)) { + return true; + } + } + return false; + } + /** * Closes given projects. * Acquires {@link org.netbeans.api.project.ProjectManager#mutex()} in the write mode. diff -r 55cd0ce718c6 refactoring.java/nbproject/project.xml --- a/refactoring.java/nbproject/project.xml Fri Mar 27 08:43:46 2009 +0100 +++ b/refactoring.java/nbproject/project.xml Wed Apr 01 17:49:34 2009 +0200 @@ -132,6 +132,7 @@ 1 + 1.34
diff -r 55cd0ce718c6 refactoring.java/src/org/netbeans/modules/refactoring/java/RetoucheUtils.java --- a/refactoring.java/src/org/netbeans/modules/refactoring/java/RetoucheUtils.java Fri Mar 27 08:43:46 2009 +0100 +++ b/refactoring.java/src/org/netbeans/modules/refactoring/java/RetoucheUtils.java Wed Apr 01 17:49:34 2009 +0200 @@ -478,13 +478,7 @@ } private static boolean isOpenProject(Project p) { - Project[] opened = OpenProjects.getDefault().getOpenProjects(); - for (int i = 0; i < opened.length; i++) { - if (p.equals(opened[i]) || opened[i].equals(p)) { - return true; - } - } - return false; + return OpenProjects.getDefault().isProjectOpen(p); } private static Collection typesToElements(Collection types, CompilationInfo info) { diff -r 55cd0ce718c6 ruby.refactoring/nbproject/project.xml --- a/ruby.refactoring/nbproject/project.xml Fri Mar 27 08:43:46 2009 +0100 +++ b/ruby.refactoring/nbproject/project.xml Wed Apr 01 17:49:34 2009 +0200 @@ -91,7 +91,7 @@ 1 - 1.22 + 1.34 diff -r 55cd0ce718c6 ruby.refactoring/src/org/netbeans/modules/refactoring/ruby/RetoucheUtils.java --- a/ruby.refactoring/src/org/netbeans/modules/refactoring/ruby/RetoucheUtils.java Fri Mar 27 08:43:46 2009 +0100 +++ b/ruby.refactoring/src/org/netbeans/modules/refactoring/ruby/RetoucheUtils.java Wed Apr 01 17:49:34 2009 +0200 @@ -270,11 +270,8 @@ public static boolean isFileInOpenProject(FileObject file) { assert file != null; Project p = FileOwnerQuery.getOwner(file); - Project[] opened = OpenProjects.getDefault().getOpenProjects(); - for (int i = 0; i 1 - 1.24 + 1.34 @@ -134,6 +134,15 @@ 1 1.16 + + + + org.netbeans.modules.web.core + + + + 2 + @@ -182,15 +191,6 @@ 6.16 - - - - org.netbeans.modules.web.core - - - - 2 - diff -r 55cd0ce718c6 web.refactoring/src/org/netbeans/modules/web/refactoring/RefactoringUtil.java --- a/web.refactoring/src/org/netbeans/modules/web/refactoring/RefactoringUtil.java Fri Mar 27 08:43:46 2009 +0100 +++ b/web.refactoring/src/org/netbeans/modules/web/refactoring/RefactoringUtil.java Wed Apr 01 17:49:34 2009 +0200 @@ -55,7 +55,6 @@ import org.netbeans.modules.refactoring.api.AbstractRefactoring; import org.netbeans.modules.refactoring.api.Problem; import org.netbeans.modules.refactoring.api.RenameRefactoring; -import org.netbeans.spi.java.classpath.ClassPathProvider; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.util.Exceptions; @@ -129,17 +128,14 @@ public static boolean isOnSourceClasspath(FileObject fo) { Project p = FileOwnerQuery.getOwner(fo); if (p==null) return false; - Project[] opened = OpenProjects.getDefault().getOpenProjects(); - for (int i = 0; i