We often use branches for development, making changes that are not ready to be integrated into trunk.
Idea does not support development in branches well.
Let's say, a module is located in svn:/.....moduleA/trunk, or in svn:/...../trunk/path/moduleA, and corresponding branches are in svn:/.....moduleA/my_branch or in svn:/...../my_branch/path/moduleA.
Trunk and branch are checked out into different locations in the filesystems, e.g. c:/..../moduleA and c:/.../moduleA__my_branch.
I have to create two IDEA modules: for trunk and branch and name them differently, like "moduleA" and "moduleA__branch".
Switching between them is not convenient, I have to change the project structure by adding one module and removing another. As modules have dependencies, it also poses problem - how to configure dependencies on moduleA?
Modules could be "parametrized" - something like moduleA<trunk> and moduleA<my_branch> instead of "moduleA" and "moduleA__my_branch". That would solve problems with dependencies.
There is also an approach to use 'svn switch', but we do not use it, because it is not convenient to share the same filesystem location for different branches (local changes can be made to both, structure may change a bit - that's why branches exist). Also, it is often necessary to work on both branches (occasionally there can even be more branches in use)
It would be really nice to have support for branch development. For instance, to be able to easily change the branch for the module.
Ideally, in the project structure a module taken from the branch could be 'visually distinguishable' - have a different icon and/or text attributes. It can also contain a name of the branch: e.g. just "moduleA" for trunk module and "moduleA (my_branch)" for branched version. It should be possible to switch a module to a different branch, e.g. with [Right click on module]>(optional: Subversion) > Switch to branch > [names of branches]. Perhaps, this switching can be alternatively done also with "svn switch" for those who prefer "svn switch".
Additional nice-to-have features could be: rendering files that are different in the current branch differently in the project view (I heard that svn switched files are rendered differently)
IMHO, first-class support of various VCS use-cases is important. At least for us, it takes significant amount of time to support branches, switching between them, tracking changes in these branches, merging changes between them..