Skip to content

Commit 3e0f95c

Browse files
author
Hélios GILLES
committed
Add waitForIndex to give user feedback
1 parent a648bbe commit 3e0f95c

8 files changed

Lines changed: 51 additions & 17 deletions

File tree

org.moreunit.core/META-INF/MANIFEST.MF

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ Require-Bundle: org.eclipse.core.expressions,
1212
org.eclipse.ui,
1313
org.eclipse.ui.ide,
1414
org.eclipse.ui.forms,
15-
org.eclipse.ui.editors
15+
org.eclipse.ui.editors,
16+
org.eclipse.jdt.core
1617
Bundle-RequiredExecutionEnvironment: JavaSE-21
1718
Bundle-ActivationPolicy: lazy
1819
Export-Package: org.moreunit.core;x-friends:="org.moreunit.core.test,org.moreunit.mock",

org.moreunit.core/src/org/moreunit/core/util/Jobs.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.eclipse.core.runtime.IStatus;
88
import org.eclipse.core.runtime.Status;
99
import org.eclipse.core.runtime.jobs.Job;
10+
import org.eclipse.jdt.internal.core.JavaModelManager;
1011
import org.eclipse.swt.widgets.Display;
1112

1213
/**
@@ -19,14 +20,19 @@ private Jobs()
1920
{
2021
}
2122

22-
public static <T> void executeAndRunInUI(String jobName, Supplier<T> backgroundJob, Consumer<T> uiJob)
23+
public static <T> void waitForIndexExecuteAndRunInUI(String jobName, Supplier<T> backgroundJob, Consumer<T> uiJob)
2324
{
2425
Job job = new Job(jobName)
2526
{
2627

2728
@Override
2829
protected IStatus run(IProgressMonitor progressmonitor)
2930
{
31+
JavaModelManager.getIndexManager().waitForIndex(true, progressmonitor);
32+
if(progressmonitor.isCanceled())
33+
{
34+
return Status.CANCEL_STATUS;
35+
}
3036
T result = backgroundJob.get();
3137
if(progressmonitor.isCanceled())
3238
{

org.moreunit.plugin/src/org/moreunit/actions/CreateTestMethodHierarchyAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public void run(final IAction action)
5959
private void createTestMethod(IMethod method)
6060
{
6161
ICompilationUnit cu = method.getCompilationUnit();
62-
Jobs.executeAndRunInUI("Create test method ... ", () -> {
62+
Jobs.waitForIndexExecuteAndRunInUI("Create test method ... ", () -> {
6363
ProjectPreferences prefs = preferencesFor(cu);
6464
if(prefs != null)
6565
{

org.moreunit.plugin/src/org/moreunit/annotation/MoreUnitAnnotationModel.java

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,41 @@
11
package org.moreunit.annotation;
22

3-
import java.util.*;
4-
5-
import org.eclipse.core.runtime.*;
3+
import java.util.ArrayList;
4+
import java.util.Collection;
5+
import java.util.Collections;
6+
import java.util.Iterator;
7+
import java.util.List;
8+
9+
import org.eclipse.core.runtime.IProgressMonitor;
10+
import org.eclipse.core.runtime.IStatus;
11+
import org.eclipse.core.runtime.Status;
612
import org.eclipse.core.runtime.jobs.Job;
7-
import org.eclipse.jdt.core.*;
8-
import org.eclipse.jface.text.*;
9-
import org.eclipse.jface.text.source.*;
10-
import org.eclipse.ui.*;
11-
import org.eclipse.ui.texteditor.*;
12-
import org.moreunit.elements.*;
13+
import org.eclipse.jdt.core.IAnnotation;
14+
import org.eclipse.jdt.core.ICompilationUnit;
15+
import org.eclipse.jdt.core.IMethod;
16+
import org.eclipse.jdt.core.ISourceRange;
17+
import org.eclipse.jdt.core.IType;
18+
import org.eclipse.jdt.core.JavaModelException;
19+
import org.eclipse.jdt.internal.core.JavaModelManager;
20+
import org.eclipse.jface.text.BadLocationException;
21+
import org.eclipse.jface.text.IDocument;
22+
import org.eclipse.jface.text.Position;
23+
import org.eclipse.jface.text.source.Annotation;
24+
import org.eclipse.jface.text.source.AnnotationModelEvent;
25+
import org.eclipse.jface.text.source.IAnnotationModel;
26+
import org.eclipse.jface.text.source.IAnnotationModelExtension;
27+
import org.eclipse.jface.text.source.IAnnotationModelListener;
28+
import org.eclipse.jface.text.source.IAnnotationModelListenerExtension;
29+
import org.eclipse.ui.IEditorReference;
30+
import org.eclipse.ui.IWorkbenchPage;
31+
import org.eclipse.ui.IWorkbenchPart;
32+
import org.eclipse.ui.IWorkbenchWindow;
33+
import org.eclipse.ui.PlatformUI;
34+
import org.eclipse.ui.texteditor.IDocumentProvider;
35+
import org.eclipse.ui.texteditor.ITextEditor;
36+
import org.moreunit.elements.ClassTypeFacade;
37+
import org.moreunit.elements.EditorPartFacade;
38+
import org.moreunit.elements.TypeFacade;
1339
import org.moreunit.log.LogHandler;
1440
import org.moreunit.preferences.Preferences;
1541
import org.moreunit.preferences.TestAnnotationMode;
@@ -152,6 +178,7 @@ private void updateAnnotations()
152178
@Override
153179
protected IStatus run(IProgressMonitor monitor)
154180
{
181+
JavaModelManager.getIndexManager().waitForIndex(true, monitor);
155182
if(monitor.isCanceled())
156183
{
157184
return Status.CANCEL_STATUS;

org.moreunit.plugin/src/org/moreunit/codemining/JumpCodeMining.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ else if(typeFacade instanceof TestCaseTypeFacade)
118118
public Consumer<MouseEvent> getAction()
119119
{
120120
return e -> {
121-
Jobs.executeAndRunInUI("Jump to ... ", () -> {
121+
Jobs.waitForIndexExecuteAndRunInUI("Jump to ... ", () -> {
122122
MethodSearchMode searchMode = Preferences.getInstance().getMethodSearchMode(element.getJavaProject());
123123

124124
TypeFacade typeFacade = TypeFacade.createFacade(((IMember) element).getCompilationUnit());

org.moreunit.plugin/src/org/moreunit/handler/CreateTestMethodActionExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public void executeCreateTestMethodAction(IEditorPart editorPart)
8989
EditorPartFacade editorPartFacade = new EditorPartFacade(editorPart);
9090
ICompilationUnit compilationUnit = editorPartFacade.getCompilationUnit();
9191
IMethod originalMethod = editorPartFacade.getFirstNonAnonymousMethodSurroundingCursorPosition();
92-
Jobs.executeAndRunInUI("Create test method ... ", () -> {
92+
Jobs.waitForIndexExecuteAndRunInUI("Create test method ... ", () -> {
9393
// Creates an intermediate object to clarify code that follows
9494
CreationContext context = createContext(compilationUnit);
9595
if(context != null)

org.moreunit.plugin/src/org/moreunit/handler/JumpActionExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public void executeJumpAction(IFile file)
9393

9494
private void executeJumpAction(ICompilationUnit compilationUnit, IMethod methodUnderCursorPosition)
9595
{
96-
Jobs.executeAndRunInUI("Jump to ... ", () -> {
96+
Jobs.waitForIndexExecuteAndRunInUI("Jump to ... ", () -> {
9797
MethodSearchMode searchMode = Preferences.getInstance().getMethodSearchMode(compilationUnit.getJavaProject());
9898

9999
TypeFacade typeFacade = TypeFacade.createFacade(compilationUnit);

org.moreunit.plugin/src/org/moreunit/handler/RunTestsActionExecutor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public void executeRunTestAction(ICompilationUnit compilationUnit, String launch
9999

100100
private void executeRunAllTestsAction(ICompilationUnit compilationUnit, String launchMode)
101101
{
102-
Jobs.executeAndRunInUI("Running tests ... ", () -> {
102+
Jobs.waitForIndexExecuteAndRunInUI("Running tests ... ", () -> {
103103

104104
Collection<IType> testCases = new LinkedHashSet<>();
105105
IType selectedJavaType = compilationUnit.findPrimaryType();
@@ -143,7 +143,7 @@ public void executeRunTestsOfSelectedMemberAction(IEditorPart editorPart, String
143143

144144
private void executeRunTestsOfSelectedMemberAction(IEditorPart editorPart, ICompilationUnit compilationUnit, String launchMode)
145145
{
146-
Jobs.executeAndRunInUI("Running tests ... ", () -> {
146+
Jobs.waitForIndexExecuteAndRunInUI("Running tests ... ", () -> {
147147
Collection<IMember> testElements = new LinkedHashSet<>();
148148
IType selectedJavaType = compilationUnit.findPrimaryType();
149149

0 commit comments

Comments
 (0)