diff options
| author | Andrey Loskutov | 2018-12-03 09:21:24 +0000 |
|---|---|---|
| committer | Andrey Loskutov | 2018-12-03 12:02:06 +0000 |
| commit | 941929493b0ef4accf29cdf1e09a2a56230aff0b (patch) | |
| tree | 7b490e9eef2e385661d6c6dacc74aa8ba940c259 | |
| parent | 7f8eedd485207fa7c633e5550cf9178d17586438 (diff) | |
| download | eclipse.jdt.ui-941929493b0ef4accf29cdf1e09a2a56230aff0b.tar.gz eclipse.jdt.ui-941929493b0ef4accf29cdf1e09a2a56230aff0b.tar.xz eclipse.jdt.ui-941929493b0ef4accf29cdf1e09a2a56230aff0b.zip | |
Bug 541811 - CCE on opening Java file in not default editor
- don't enable contribution for non Java editors
- don't do Java code mining if they are disabled for the editor
- only add references minings for supported editors only
- don't try to work if mining options are disabled
Change-Id: Iab197f265df1863e4b525da900e6d9550381de2b
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
| -rw-r--r-- | org.eclipse.jdt.ui/plugin.xml | 6 | ||||
| -rw-r--r-- | org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaElementCodeMiningProvider.java | 31 |
2 files changed, 29 insertions, 8 deletions
diff --git a/org.eclipse.jdt.ui/plugin.xml b/org.eclipse.jdt.ui/plugin.xml index 691a6c33b0..93a1944956 100644 --- a/org.eclipse.jdt.ui/plugin.xml +++ b/org.eclipse.jdt.ui/plugin.xml @@ -7171,10 +7171,14 @@ label="%JavaElementCodeMiningProvider.label"> <enabledWhen> <and> + <with variable="editor"> + <instanceof value="org.eclipse.jdt.internal.ui.javaeditor.JavaEditor" /> + </with> + <test property="org.eclipse.jdt.ui.hasPreference" value="editor_codemining_enabled" forcePluginActivation="true"/> <with variable="editorInput"> <or> <adapt type="org.eclipse.core.resources.IFile"> - <test property="org.eclipse.core.resources.contentTypeId" value="org.eclipse.jdt.core.javaSource" /> + <test property="org.eclipse.core.resources.contentTypeId" value="org.eclipse.jdt.core.javaSource" /> </adapt> <adapt type="org.eclipse.jdt.core.IClassFile"> <instanceof value="org.eclipse.jdt.core.IClassFile" /> diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaElementCodeMiningProvider.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaElementCodeMiningProvider.java index 6dfffbc3a5..0c706a320d 100644 --- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaElementCodeMiningProvider.java +++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaElementCodeMiningProvider.java @@ -59,18 +59,24 @@ public class JavaElementCodeMiningProvider extends AbstractCodeMiningProvider { private final boolean showImplementations; + private final boolean editorEnabled; + public JavaElementCodeMiningProvider() { - showAtLeastOne= JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_CODEMINING_AT_LEAST_ONE); - showReferences= JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_REFERENCES); - showReferencesOnTypes= JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_REFERENCES_ON_TYPES); - showReferencesOnFields= JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_REFERENCES_ON_FIELDS); - showReferencesOnMethods= JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_REFERENCES_ON_METHODS); - showImplementations= JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_IMPLEMENTATIONS); + editorEnabled= JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_CODEMINING_ENABLED); + showAtLeastOne= editorEnabled && JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_CODEMINING_AT_LEAST_ONE); + showReferences= editorEnabled && JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_REFERENCES); + showReferencesOnTypes= editorEnabled && JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_REFERENCES_ON_TYPES); + showReferencesOnFields= editorEnabled && JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_REFERENCES_ON_FIELDS); + showReferencesOnMethods= editorEnabled && JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_REFERENCES_ON_METHODS); + showImplementations= editorEnabled && JavaPreferencesPropertyTester.isEnabled(PreferenceConstants.EDITOR_JAVA_CODEMINING_SHOW_IMPLEMENTATIONS); } @Override public CompletableFuture<List<? extends ICodeMining>> provideCodeMinings(ITextViewer viewer, IProgressMonitor monitor) { + if (!editorEnabled) { + return CompletableFuture.completedFuture(Collections.emptyList()); + } return CompletableFuture.supplyAsync(() -> { monitor.isCanceled(); ITextEditor textEditor= super.getAdapter(ITextEditor.class); @@ -93,7 +99,7 @@ public class JavaElementCodeMiningProvider extends AbstractCodeMiningProvider { /** * Collect java code minings. - * + * * @param unit the compilation unit * @param textEditor the Java editor * @param elements the java elements to track @@ -104,6 +110,17 @@ public class JavaElementCodeMiningProvider extends AbstractCodeMiningProvider { */ private void collectMinings(ITypeRoot unit, ITextEditor textEditor, IJavaElement[] elements, List<ICodeMining> minings, ITextViewer viewer, IProgressMonitor monitor) throws JavaModelException { + + // Only Java editor is supported, see bug 541811 + if(!(textEditor instanceof JavaEditor)) { + return; + } + + // Don't worth to loop if none of mining types are requested + if (!(showReferences || showImplementations)) { + return; + } + for (IJavaElement element : elements) { if (monitor.isCanceled()) { return; |
