I've seen a couple of requests for Resource Balancing. This actually seems to be another form of dependency management, so I'm creating a feature request suggesting an alternate approach.
I have over allocated a particular resource. I have the option of stretching the schedule or reassigning the task to another resource. GanttProject does not provide any automation to support this use model.
GanttProject provides several GUI mechanisms to create task dependencies. The current methods supports when one task of the total project has to be done before another can be started (for instance). I propose this finish-start dependency is used for improved resource management.
Adopt a similar GUI mechanism for what I am calling "Resource dependencies". A user could define a resource dependency for a task. If, after examining the dependency, the system finds that ALL of the resources of this task are not available, then this task is moved after the end of the dependency. Later, if resource assignments are changed, the dependency could potentially no longer exist.
Risk/situations not covered:
By using Resource Dependencies, you are not guaranteeing that resources are not over-allocated. But, I believe this feature is outside the scope of what usually is wanted. Other software tries to automate the process 100%. For my usage, I simply want to say "we can't work on task X because the person doing it has to do task Q first."