2929import com .intellij .openapi .progress .impl .BackgroundableProcessIndicator ;
3030import com .intellij .openapi .project .Project ;
3131import org .jetbrains .annotations .NotNull ;
32+ import org .jetbrains .annotations .Nullable ;
3233import rx .Scheduler ;
3334import rx .schedulers .Schedulers ;
3435
36+ import javax .swing .*;
37+ import java .lang .reflect .InvocationTargetException ;
38+
3539public class IdeaSchedulers {
36- public static Scheduler processBarVisibleAsync (@ NotNull Project project , @ NotNull String title ) {
40+ public static Scheduler processBarVisibleAsync (@ Nullable Project project , @ NotNull String title ) {
3741 return Schedulers .from (command -> ApplicationManager .getApplication ().invokeLater (() -> {
38- final Task .Backgroundable task = new Task .Backgroundable (project , title ) {
42+ final Task .Backgroundable task = new Task .Backgroundable (project , title , false ) {
3943 @ Override
4044 public void run (@ NotNull ProgressIndicator progressIndicator ) {
4145 command .run ();
@@ -47,4 +51,23 @@ public void run(@NotNull ProgressIndicator progressIndicator) {
4751 ProgressManager .getInstance ().runProcessWithProgressAsynchronously (task , progressIndicator );
4852 }));
4953 }
54+
55+ public static Scheduler processBarVisibleSync (@ Nullable Project project , @ NotNull String title ) {
56+ return Schedulers .from (command -> ApplicationManager .getApplication ().invokeAndWait (() -> {
57+ final Task .Backgroundable task = new Task .Backgroundable (project , title , false ) {
58+ @ Override
59+ public void run (@ NotNull ProgressIndicator progressIndicator ) {
60+ command .run ();
61+ }
62+ };
63+
64+ final ProgressIndicator progressIndicator = new BackgroundableProcessIndicator (task );
65+
66+ ProgressManager .getInstance ().runProcessWithProgressAsynchronously (task , progressIndicator );
67+ }));
68+ }
69+
70+ public static Scheduler dispatchThread () {
71+ return Schedulers .from (SwingUtilities ::invokeLater );
72+ }
5073}
0 commit comments