With a project with existing sources, there is most likely going to be a project under way where multiple IDEs are being used. The advantage to such a setup is to be able to work on the project and any files which may be created. This includes any utility Ant scripts or top level Groovy scripts or just pick any file type the IDE supports. However, if one can not easily get to the top level directory of the project to manipulate such files, the IDE, or at least the easier to use project types, is useless.
Suppose one has a project in a directory C:\MyProj. Under C:\MyProj are different files other than Java source directories such as Groovy files, scripts, Ant scripts, Make files, etc. Trying to use the project type "Java Project with Existing Sources" is futile. There is no way to reference all the files required from the IDE. You just can't do it.
The project wizard and project properties needs to allow the user to reference this top level project directory. It should then look under this directory for different things such as the src and src-test directories. It should even look there when trying to auto discover Spring files.
Right now to use the IDE with such a setup one must use the Free-Form project type.
The web project with existing sources has such a setup. One can change to the Files tab and see a node "project name - Web Module" for the given web project with existing sources. There the top level directory is exposed. The regular Java project with existing sources needs this too.
One possibility to use the "Java project with existing sources" is to point to the same folder and leave out nbproject from source control. However, if the project is poorly configured, and has a folder inside of it named "build" which is not a temporary folder, can't be deleted and added back at will, then this will not work. I find myself in this situation now, and I can not change the name of the folder from build. Not my call.