diff --git a/owlplug-client/src/main/java/com/owlplug/explore/controllers/ExploreController.java b/owlplug-client/src/main/java/com/owlplug/explore/controllers/ExploreController.java index bbfaf973..3ae7f32b 100644 --- a/owlplug-client/src/main/java/com/owlplug/explore/controllers/ExploreController.java +++ b/owlplug-client/src/main/java/com/owlplug/explore/controllers/ExploreController.java @@ -198,7 +198,12 @@ public void initialize() { syncSourcesButton.setOnAction(e -> { this.getTelemetryService().event("/Explore/SyncSources"); - exploreTaskFactory.createSourceSyncTask().schedule(); + var context = exploreTaskFactory.createSourceSyncTask(); + context.setOnSucceeded((ignore) -> syncSourcesButton.setDisable(false)); + context.setOnFailed((ignore) -> syncSourcesButton.setDisable(false)); + context.setOnCancelled((ignore) -> syncSourcesButton.setDisable(false)); + context.schedule(); + syncSourcesButton.setDisable(true); }); exploreChipView = new ExploreChipView(this.getApplicationDefaults(), this.exploreService.getDistinctCreators()); diff --git a/owlplug-client/src/main/java/com/owlplug/plugin/controllers/PluginsController.java b/owlplug-client/src/main/java/com/owlplug/plugin/controllers/PluginsController.java index d8178781..2c2094da 100644 --- a/owlplug-client/src/main/java/com/owlplug/plugin/controllers/PluginsController.java +++ b/owlplug-client/src/main/java/com/owlplug/plugin/controllers/PluginsController.java @@ -177,10 +177,14 @@ public void initialize() { displaySwitchTabPane.getSelectionModel().select(displayListTab); } - syncButton.setOnAction(e -> { this.getTelemetryService().event("/Plugins/Scan"); - pluginService.syncPlugins(); + pluginService.syncPlugins(() -> { + syncButton.setDisable(false); + exportButton.setDisable(false); + }); + syncButton.setDisable(true); + exportButton.setDisable(true); }); taskFactory.addSyncPluginsListener(this::displayPlugins); diff --git a/owlplug-client/src/main/java/com/owlplug/plugin/services/PluginService.java b/owlplug-client/src/main/java/com/owlplug/plugin/services/PluginService.java index c0504c25..953ea447 100644 --- a/owlplug-client/src/main/java/com/owlplug/plugin/services/PluginService.java +++ b/owlplug-client/src/main/java/com/owlplug/plugin/services/PluginService.java @@ -37,6 +37,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -62,6 +63,14 @@ public void syncPlugins() { taskFactory.createPluginSyncTask().schedule(); } + public void syncPlugins(Runnable callback) { + var context = taskFactory.createPluginSyncTask(); + context.setOnSucceeded((e) -> callback.run()); + context.setOnFailed((e) -> callback.run()); + context.setOnCancelled((e) -> callback.run()); + context.schedule(); + } + public void syncFiles() { taskFactory.createFileStatSyncTask().schedule(); } diff --git a/owlplug-client/src/main/java/com/owlplug/project/controllers/ProjectsController.java b/owlplug-client/src/main/java/com/owlplug/project/controllers/ProjectsController.java index 45335b9e..e172e96f 100644 --- a/owlplug-client/src/main/java/com/owlplug/project/controllers/ProjectsController.java +++ b/owlplug-client/src/main/java/com/owlplug/project/controllers/ProjectsController.java @@ -68,7 +68,8 @@ public class ProjectsController extends BaseController { public void initialize() { syncProjectButton.setOnAction(e -> { this.getTelemetryService().event("/Projects/Scan"); - projectService.syncProjects(); + projectService.syncProjects(() -> syncProjectButton.setDisable(false)); + syncProjectButton.setDisable(true); }); projectTaskFactory.addSyncProjectsListener(() -> { diff --git a/owlplug-client/src/main/java/com/owlplug/project/services/ProjectService.java b/owlplug-client/src/main/java/com/owlplug/project/services/ProjectService.java index c2eb168b..46f6c222 100644 --- a/owlplug-client/src/main/java/com/owlplug/project/services/ProjectService.java +++ b/owlplug-client/src/main/java/com/owlplug/project/services/ProjectService.java @@ -37,6 +37,14 @@ public void syncProjects() { taskFactory.createSyncTask().schedule(); } + public void syncProjects(Runnable callback) { + var context = taskFactory.createSyncTask(); + context.setOnSucceeded((ignore) -> callback.run()); + context.setOnFailed((ignore) -> callback.run()); + context.setOnCancelled((ignore) -> callback.run()); + context.schedule(); + } + public Iterable getAllProjects() { return dawProjectRepository.findAll(); }