From 5d552906b68b94f5a7bf3dde97bd96f3a955cdd2 Mon Sep 17 00:00:00 2001 From: Dmitry Kuleshov Date: Fri, 18 Nov 2016 12:25:14 +0200 Subject: [PATCH] che#2745: added suspend/resume calls for file status watcher during organize imports action (#3088) --- .../OrganizeImportsPresenter.java | 27 ++++++++++++++----- .../OrganizeImportsPresenterTest.java | 13 +++++---- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/organizeimports/OrganizeImportsPresenter.java b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/organizeimports/OrganizeImportsPresenter.java index a71a955d9c..d5c4a72e23 100644 --- a/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/organizeimports/OrganizeImportsPresenter.java +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/main/java/org/eclipse/che/ide/ext/java/client/organizeimports/OrganizeImportsPresenter.java @@ -13,27 +13,28 @@ package org.eclipse.che.ide.ext.java.client.organizeimports; import com.google.common.base.Optional; import com.google.inject.Inject; import com.google.inject.Singleton; +import com.google.web.bindery.event.shared.EventBus; import org.eclipse.che.api.promises.client.Operation; import org.eclipse.che.api.promises.client.OperationException; import org.eclipse.che.api.promises.client.PromiseError; import org.eclipse.che.ide.api.editor.EditorPartPresenter; +import org.eclipse.che.ide.api.editor.document.Document; +import org.eclipse.che.ide.api.editor.texteditor.HandlesUndoRedo; +import org.eclipse.che.ide.api.editor.texteditor.TextEditor; +import org.eclipse.che.ide.api.editor.texteditor.UndoableEditor; import org.eclipse.che.ide.api.notification.NotificationManager; import org.eclipse.che.ide.api.resources.Container; import org.eclipse.che.ide.api.resources.File; import org.eclipse.che.ide.api.resources.Project; import org.eclipse.che.ide.api.resources.Resource; import org.eclipse.che.ide.api.resources.VirtualFile; -import org.eclipse.che.ide.api.editor.texteditor.HandlesUndoRedo; -import org.eclipse.che.ide.api.editor.texteditor.UndoableEditor; import org.eclipse.che.ide.dto.DtoFactory; import org.eclipse.che.ide.ext.java.client.JavaLocalizationConstant; import org.eclipse.che.ide.ext.java.client.editor.JavaCodeAssistClient; import org.eclipse.che.ide.ext.java.client.resource.SourceFolderMarker; import org.eclipse.che.ide.ext.java.client.util.JavaUtil; import org.eclipse.che.ide.ext.java.shared.dto.ConflictImportDTO; -import org.eclipse.che.ide.api.editor.document.Document; -import org.eclipse.che.ide.api.editor.texteditor.TextEditor; import org.eclipse.che.ide.util.loging.Log; import java.util.ArrayList; @@ -41,6 +42,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static org.eclipse.che.ide.api.event.ng.FileTrackingEvent.newFileTrackingResumeEvent; +import static org.eclipse.che.ide.api.event.ng.FileTrackingEvent.newFileTrackingSuspendEvent; import static org.eclipse.che.ide.api.notification.StatusNotification.DisplayMode.FLOAT_MODE; import static org.eclipse.che.ide.api.notification.StatusNotification.Status.FAIL; @@ -56,6 +59,7 @@ public class OrganizeImportsPresenter implements OrganizeImportsView.ActionDeleg private final DtoFactory dtoFactory; private final JavaLocalizationConstant locale; private final NotificationManager notificationManager; + private final EventBus eventBus; private int page; private List choices; @@ -69,9 +73,11 @@ public class OrganizeImportsPresenter implements OrganizeImportsView.ActionDeleg JavaCodeAssistClient javaCodeAssistClient, DtoFactory dtoFactory, JavaLocalizationConstant locale, - NotificationManager notificationManager) { + NotificationManager notificationManager, + EventBus eventBus) { this.view = view; this.javaCodeAssistClient = javaCodeAssistClient; + this.eventBus = eventBus; this.view.setDelegate(this); this.dtoFactory = dtoFactory; @@ -102,6 +108,7 @@ public class OrganizeImportsPresenter implements OrganizeImportsView.ActionDeleg final String fqn = JavaUtil.resolveFQN((Container)srcFolder.get(), (Resource)file); + eventBus.fireEvent(newFileTrackingSuspendEvent()); javaCodeAssistClient.organizeImports(project.get().getLocation().toString(), fqn) .then(new Operation>() { @Override @@ -111,12 +118,16 @@ public class OrganizeImportsPresenter implements OrganizeImportsView.ActionDeleg } else { applyChanges(file); } + eventBus.fireEvent(newFileTrackingResumeEvent()); } }) .catchError(new Operation() { @Override public void apply(PromiseError arg) throws OperationException { - notificationManager.notify(locale.failedToProcessOrganizeImports(), arg.getMessage(), FAIL, FLOAT_MODE); + String title = locale.failedToProcessOrganizeImports(); + String message = arg.getMessage(); + notificationManager.notify(title, message, FAIL, FLOAT_MODE); + eventBus.fireEvent(newFileTrackingResumeEvent()); } }); } @@ -166,7 +177,9 @@ public class OrganizeImportsPresenter implements OrganizeImportsView.ActionDeleg .catchError(new Operation() { @Override public void apply(PromiseError arg) throws OperationException { - notificationManager.notify(locale.failedToProcessOrganizeImports(), arg.getMessage(), FAIL, FLOAT_MODE); + String title = locale.failedToProcessOrganizeImports(); + String message = arg.getMessage(); + notificationManager.notify(title, message, FAIL, FLOAT_MODE); } }); } diff --git a/plugins/plugin-java/che-plugin-java-ext-lang-client/src/test/java/org/eclipse/che/ide/ext/java/client/organizeimports/OrganizeImportsPresenterTest.java b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/test/java/org/eclipse/che/ide/ext/java/client/organizeimports/OrganizeImportsPresenterTest.java index 0ee7a0b5d5..c64a065850 100644 --- a/plugins/plugin-java/che-plugin-java-ext-lang-client/src/test/java/org/eclipse/che/ide/ext/java/client/organizeimports/OrganizeImportsPresenterTest.java +++ b/plugins/plugin-java/che-plugin-java-ext-lang-client/src/test/java/org/eclipse/che/ide/ext/java/client/organizeimports/OrganizeImportsPresenterTest.java @@ -12,10 +12,13 @@ package org.eclipse.che.ide.ext.java.client.organizeimports; import com.google.common.base.Optional; import com.google.gwtmockito.GwtMockitoTestRunner; +import com.google.web.bindery.event.shared.EventBus; import org.eclipse.che.api.promises.client.Operation; import org.eclipse.che.api.promises.client.Promise; import org.eclipse.che.ide.api.editor.EditorInput; +import org.eclipse.che.ide.api.editor.document.Document; +import org.eclipse.che.ide.api.editor.texteditor.TextEditor; import org.eclipse.che.ide.api.notification.NotificationManager; import org.eclipse.che.ide.api.resources.Container; import org.eclipse.che.ide.api.resources.File; @@ -26,8 +29,6 @@ import org.eclipse.che.ide.ext.java.client.JavaLocalizationConstant; import org.eclipse.che.ide.ext.java.client.editor.JavaCodeAssistClient; import org.eclipse.che.ide.ext.java.client.resource.SourceFolderMarker; import org.eclipse.che.ide.ext.java.shared.dto.ConflictImportDTO; -import org.eclipse.che.ide.api.editor.document.Document; -import org.eclipse.che.ide.api.editor.texteditor.TextEditor; import org.eclipse.che.ide.resource.Path; import org.junit.Before; import org.junit.Test; @@ -65,9 +66,10 @@ public class OrganizeImportsPresenterTest { private JavaLocalizationConstant locale; @Mock private NotificationManager notificationManager; + @Mock + private EventBus eventBus; private OrganizeImportsPresenter presenter; - @Mock private File file; @Mock @@ -78,9 +80,9 @@ public class OrganizeImportsPresenterTest { private EditorInput editorInput; @Mock private TextEditor editor; + @Mock private Document document; - @Mock private Promise> importsPromise; @Mock @@ -121,7 +123,8 @@ public class OrganizeImportsPresenterTest { javaCodeAssistClient, dtoFactory, locale, - notificationManager); + notificationManager, + eventBus); prepareConflicts();