# HG changeset patch # Parent 0c7bea8d0da51db34e0a48d6296ce759705863f3 # User Jesse Glick #197864: do not force a project to include its project directory in a generic source group. diff --git a/projectui/src/org/netbeans/modules/project/ui/PhysicalView.java b/projectui/src/org/netbeans/modules/project/ui/PhysicalView.java --- a/projectui/src/org/netbeans/modules/project/ui/PhysicalView.java +++ b/projectui/src/org/netbeans/modules/project/ui/PhysicalView.java @@ -113,52 +113,18 @@ SourceGroup[] groups = s.getSourceGroups(Sources.TYPE_GENERIC); FileObject projectDirectory = p.getProjectDirectory(); - SourceGroup projectDirGroup = null; - - // First find the source group which will represent the project - for( int i = 0; i < groups.length; i++ ) { - FileObject groupRoot = groups[i].getRootFolder(); - if ( projectDirectory.equals( groupRoot ) || - FileUtil.isParentOf( groupRoot, projectDirectory ) ) { - if ( projectDirGroup != null ) { - // more than once => Illegal - projectDirGroup = null; - break; - } - else { - projectDirGroup = groups[i]; - } - } - } - - if ( projectDirGroup == null ) { - // Illegal project - LOG.log(Level.WARNING, "Project {0} either does not contain its project directory under generic source groups or the directory is under more than one source group", p); - return new Node[0]; - } - - FileObject rootFolder = projectDirGroup.getRootFolder(); - if (/* #150018 */!rootFolder.isValid() || /* #181323 */!rootFolder.isFolder()) { - return new Node[0]; - } - - // Create the nodes ArrayList nodesList = new ArrayList( groups.length ); - nodesList.add(new ProjectIconNode(new GroupNode(p, projectDirGroup, true, DataFolder.findFolder(rootFolder)), true)); for (SourceGroup group : groups) { - if (group == projectDirGroup) { - continue; - } if ("sharedlibraries".equals(group.getName())) { //NOI18N //HACK - ignore shared libs group in UI, it's only useful for version control commits. continue; } - rootFolder = group.getRootFolder(); + FileObject rootFolder = group.getRootFolder(); if (!rootFolder.isValid() || !rootFolder.isFolder()) { continue; } - nodesList.add(new ProjectIconNode(new GroupNode(p, group, false, DataFolder.findFolder(rootFolder)), true)); + nodesList.add(new ProjectIconNode(new GroupNode(p, group, projectDirectory.equals(rootFolder) || FileUtil.isParentOf(rootFolder, projectDirectory), DataFolder.findFolder(rootFolder)), true)); } Node nodes[] = new Node[ nodesList.size() ]; diff --git a/projectui/src/org/netbeans/modules/project/ui/ProjectsRootNode.java b/projectui/src/org/netbeans/modules/project/ui/ProjectsRootNode.java --- a/projectui/src/org/netbeans/modules/project/ui/ProjectsRootNode.java +++ b/projectui/src/org/netbeans/modules/project/ui/ProjectsRootNode.java @@ -556,19 +556,19 @@ } else { Node[] arr = PhysicalView.createNodesForProject(newProj); OpenProjectList.log(Level.FINER, "physical view {0}", Arrays.asList(arr)); - if (arr.length > 1) { + for (Node one : arr) { + if (PhysicalView.isProjectDirNode(one)) { + n = one; + break; + } + } + if (arr.length > 1 || n == null) { pair.project = newProj; OpenProjectList.log(Level.FINER, "refreshing for {0}", newProj); ch.refresh(newProj); OpenProjectList.log(Level.FINER, "refreshed for {0}", newProj); return; } - for (Node one : arr) { - if (PhysicalView.isProjectDirNode(one)) { - n = one; - break; - } - } if (n == null) { OpenProjectList.log(Level.WARNING, "newProject yields null node: " + newProj); n = Node.EMPTY;