Inside PatchController.applyPatches we currently do not check if all patches could be applied.
If not, add the Song before applying changes to the conflicted songs to let the user compare the latest version with the version before.
Inside MainWindow.setModels - songsModel.addSongsModelListener the current changes inside the editor are thrown away, if the same song changes in Background (file/remote).
Approach 1: (Conflict/Mergetool)
Show a song changed in Background dialog.
Add changed song before overwriting it to conflicts
Overwrite song and fields with remote/file changes
Show a notification and let the user open the diff.
If a song changes one has to send the song and the position.
If both are received, sdb2 should show the song directly at the wanted position, instead of the position 0.0.
Add an initial position to the present functions. Allow users to open a song in the mainwindow without presenting it. (Eg. by pressing Alt+Click) Then use null as the initial Position.
Use empty position message as blank presentation instead of sending an empty song message.
This would allow untoggle blank screen. This would fasten the transition from blank to the current song again. And we would still know the current song, to switch to next/previous one.