Bug 541396 - [code mining] 0 reference / implementation
Change-Id: I0f997e0588fbd7e7ad6e4642f5442e8a16aacee4
Signed-off-by: angelozerr <angelo.zerr@gmail.com>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaCodeMiningMessages.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaCodeMiningMessages.java
new file mode 100644
index 0000000..5344c6e
--- /dev/null
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaCodeMiningMessages.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2018 Angelo ZERR.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Angelo Zerr <angelo.zerr@gmail.com> - [code mining] 0 reference / implementation - Bug 541396
+ */
+package org.eclipse.jdt.internal.ui.javaeditor.codemining;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Helper class to get NLSed messages.
+ */
+final class JavaCodeMiningMessages extends NLS {
+
+ private static final String BUNDLE_NAME= JavaCodeMiningMessages.class.getName();
+
+
+ private JavaCodeMiningMessages() {
+ // Do not instantiate
+ }
+
+ public static String JavaReferenceCodeMining_label;
+
+ public static String JavaImplementationCodeMining_label;
+
+ static {
+ NLS.initializeMessages(BUNDLE_NAME, JavaCodeMiningMessages.class);
+ }
+
+}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaCodeMiningMessages.properties b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaCodeMiningMessages.properties
new file mode 100644
index 0000000..b688942
--- /dev/null
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaCodeMiningMessages.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# Copyright (c) 2018 Angelo ZERR.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Angelo Zerr <angelo.zerr@gmail.com> - [code mining] 0 reference / implementation - Bug 541396
+###############################################################################
+
+JavaReferenceCodeMining_label={0,choice,0#0 references|1#1 reference|1<{0} references}
+JavaImplementationCodeMining_label={0,choice,0#0 implementations|1#1 implementation|1<{0} implementations}
\ No newline at end of file
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaImplementationCodeMining.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaImplementationCodeMining.java
index c0f1dbc..5b88451 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaImplementationCodeMining.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaImplementationCodeMining.java
@@ -10,6 +10,7 @@
*/
package org.eclipse.jdt.internal.ui.javaeditor.codemining;
+import java.text.MessageFormat;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Stream;
@@ -39,6 +40,7 @@
this.showImplementationsAtLeastOne= showImplementationsAtLeastOne;
}
+ @SuppressWarnings("boxing")
@Override
protected CompletableFuture<Void> doResolve(ITextViewer viewer, IProgressMonitor monitor) {
return CompletableFuture.runAsync(() -> {
@@ -47,7 +49,7 @@
if (implCount == 0 && showImplementationsAtLeastOne) {
super.setLabel(""); //$NON-NLS-1$
} else {
- super.setLabel(implCount + " " + (implCount > 1 ? "implementations" : "implementation")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ super.setLabel(MessageFormat.format(JavaCodeMiningMessages.JavaImplementationCodeMining_label, implCount));
}
} catch (JavaModelException e) {
// Should never occur
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaReferenceCodeMining.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaReferenceCodeMining.java
index 538f7b0..d2c7168 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaReferenceCodeMining.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/codemining/JavaReferenceCodeMining.java
@@ -10,8 +10,12 @@
*/
package org.eclipse.jdt.internal.ui.javaeditor.codemining;
+import java.text.MessageFormat;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Consumer;
+
+import org.eclipse.swt.events.MouseEvent;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -46,26 +50,34 @@
*/
public class JavaReferenceCodeMining extends AbstractJavaElementLineHeaderCodeMining {
+ private final JavaEditor editor;
+
private final boolean showReferencesAtLeastOne;
+ private Consumer<MouseEvent> action;
+
public JavaReferenceCodeMining(IJavaElement element, JavaEditor editor, IDocument document,
ICodeMiningProvider provider, boolean showReferencesAtLeastOne)
throws JavaModelException, BadLocationException {
- super(element, document, provider, e -> new FindReferencesAction(editor).run(element));
+ super(element, document, provider, null);
+ this.editor= editor;
this.showReferencesAtLeastOne= showReferencesAtLeastOne;
}
+ @SuppressWarnings("boxing")
@Override
protected CompletableFuture<Void> doResolve(ITextViewer viewer, IProgressMonitor monitor) {
return CompletableFuture.runAsync(() -> {
try {
monitor.isCanceled();
- long refCount= countReferences(getElement(), monitor);
+ IJavaElement element = super.getElement();
+ long refCount= countReferences(element, monitor);
monitor.isCanceled();
+ action= refCount > 0 ? e -> new FindReferencesAction(editor).run(element) : null;
if (refCount == 0 && showReferencesAtLeastOne) {
super.setLabel(""); //$NON-NLS-1$
} else {
- super.setLabel(refCount + " " + (refCount > 1 ? "references" : "reference")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ super.setLabel(MessageFormat.format(JavaCodeMiningMessages.JavaReferenceCodeMining_label, refCount));
}
} catch (JavaModelException e) {
// Should never occur
@@ -75,6 +87,11 @@
});
}
+ @Override
+ public Consumer<MouseEvent> getAction() {
+ return action;
+ }
+
/**
* Return the number of references for the given java element.
*