Skip to content

Commit 44c700a

Browse files
committed
Add the dispatch thread and sync RxJava schedulers for IDEA
Signed-off-by: Wei Zhang <[email protected]>
1 parent 75c14a9 commit 44c700a

File tree

1 file changed

+25
-2
lines changed
  • PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/intellij/rxjava

1 file changed

+25
-2
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/intellij/rxjava/IdeaSchedulers.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,17 @@
2929
import com.intellij.openapi.progress.impl.BackgroundableProcessIndicator;
3030
import com.intellij.openapi.project.Project;
3131
import org.jetbrains.annotations.NotNull;
32+
import org.jetbrains.annotations.Nullable;
3233
import rx.Scheduler;
3334
import rx.schedulers.Schedulers;
3435

36+
import javax.swing.*;
37+
import java.lang.reflect.InvocationTargetException;
38+
3539
public 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

Comments
 (0)