Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Loskutov2018-12-03 09:21:24 +0000
committerAndrey Loskutov2018-12-03 12:02:06 +0000
commit941929493b0ef4accf29cdf1e09a2a56230aff0b (patch)
tree7b490e9eef2e385661d6c6dacc74aa8ba940c259
parent7f8eedd485207fa7c633e5550cf9178d17586438 (diff)
downloadeclipse.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.xml6
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaElementCodeMiningProvider.java31
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;

Back to the top