Improve reporting from background fetch and push jobs
commit4f7e62f312aa0e8483b0be947c3c6419e012ed72
authorThomas Wolf <thomas.wolf@paranor.ch>
Sat, 7 Jan 2017 14:10:22 +0000 (7 15:10 +0100)
committerThomas Wolf <thomas.wolf@paranor.ch>
Sun, 8 Jan 2017 15:21:41 +0000 (8 16:21 +0100)
tree0e94dc95038abc1a54993892146bf8db3e3bfd65
parentecfb0fb8361fa829d736d0168031ec322bdc1f4e
Improve reporting from background fetch and push jobs

EGit 4.5 removed the immediate result dialogs for "Fetch" and
"Push" to avoid UI deadlocks that were reported quite frequently
and replaced them with an action that could be invoked explicitly
by the user via the progress view. That side-stepped the UI
deadlock problem, but sometimes these dialogs show useful
information that one would like to see immediately, such as
the Gerrit URL after a successful push to Gerrit.

This commit brings back those "immediate" dialogs. They're not
quite as immediate as they used to be, though: they are delayed
until there are no modal shells open anymore. That will still
avoid UI deadlocks, and will make the dialogs appear as soon as
it's safe to do so and as soon as the user can do something useful
with them.

Additionally, this commit resurrects and completes an old
"work-in-progress" commit[1] that added preferences to optionally
hide those dialogs if the user so wishes. Hiding the dialogs
falls back to the action mechanism introduced in EGit 4.5; the
dialogs are then still accessible via the progress view.

* Add a method to delay showing the result until there are no modal
  shells.
* Add preferences to hide the dialogs, including UI in the preference
  pages.
* Adapt the result reporting mechanism to use both

Note that this commit only adds preferences for the push and fetch
cases; pull is a different implementation altogether.

[1] https://git.eclipse.org/r/#/c/52524/

Bug: 473538
Bug: 502324
Change-Id: I7a8afdb0189a1c0eee48f4a9203719aadbb15584
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
Also-by: Lars Vogel <Lars.Vogel@vogella.com>
org.eclipse.egit.ui/src/org/eclipse/egit/ui/PluginPreferenceInitializer.java
org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIPreferences.java
org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java
org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchOperationUI.java
org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/jobs/RepositoryJob.java
org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/preferences/DialogsPreferencePage.java
org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/push/PushJob.java
org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties