che#2745: added suspend/resume calls for file status watcher during organize imports action (#3088)
parent
9a60f0744f
commit
5d552906b6
|
|
@ -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<ConflictImportDTO> 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<List<ConflictImportDTO>>() {
|
||||
@Override
|
||||
|
|
@ -111,12 +118,16 @@ public class OrganizeImportsPresenter implements OrganizeImportsView.ActionDeleg
|
|||
} else {
|
||||
applyChanges(file);
|
||||
}
|
||||
eventBus.fireEvent(newFileTrackingResumeEvent());
|
||||
}
|
||||
})
|
||||
.catchError(new Operation<PromiseError>() {
|
||||
@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<PromiseError>() {
|
||||
@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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<List<ConflictImportDTO>> importsPromise;
|
||||
@Mock
|
||||
|
|
@ -121,7 +123,8 @@ public class OrganizeImportsPresenterTest {
|
|||
javaCodeAssistClient,
|
||||
dtoFactory,
|
||||
locale,
|
||||
notificationManager);
|
||||
notificationManager,
|
||||
eventBus);
|
||||
|
||||
prepareConflicts();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue