Bug 570469 - Differentiate normal imports from static imports in search
Changes the existing imports filter to omit static imports and adds a
new static imports filter to omit non-static imports.
Change-Id: I7572af8ad18f7cfba95aa0b5159e7faab185ea69
Signed-off-by: Julian Ruppel <julian.ruppel@sap.com>
Reviewed-on: https://git.eclipse.org/r/c/jdt/eclipse.jdt.ui/+/179870
Tested-by: Sarika Sinha <sarika.sinha@in.ibm.com>
Tested-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
Reviewed-by: Sarika Sinha <sarika.sinha@in.ibm.com>
Reviewed-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaMatchFilter.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaMatchFilter.java
index d4448b9..c6f281e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaMatchFilter.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/JavaMatchFilter.java
@@ -21,6 +21,7 @@
import org.eclipse.search.ui.text.Match;
import org.eclipse.search.ui.text.MatchFilter;
+import org.eclipse.jdt.core.Flags;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.IImportDeclaration;
@@ -108,6 +109,7 @@
private static final JavaMatchFilter MAINCODE_FILTER= new MainCodeFilter();
private static final JavaMatchFilter POTENTIAL_FILTER= new PotentialFilter();
private static final JavaMatchFilter IMPORT_FILTER= new ImportFilter();
+ private static final JavaMatchFilter STATIC_IMPORT_FILTER= new StaticImportFilter();
private static final JavaMatchFilter JAVADOC_FILTER= new JavadocFilter();
private static final JavaMatchFilter READ_FILTER= new ReadFilter();
private static final JavaMatchFilter WRITE_FILTER= new WriteFilter();
@@ -127,6 +129,7 @@
MAINCODE_FILTER,
POTENTIAL_FILTER,
IMPORT_FILTER,
+ STATIC_IMPORT_FILTER,
JAVADOC_FILTER,
READ_FILTER,
WRITE_FILTER,
@@ -281,7 +284,22 @@
class ImportFilter extends JavaMatchFilter {
@Override
public boolean filters(JavaElementMatch match) {
- return match.getElement() instanceof IImportDeclaration;
+
+ Object element= match.getElement();
+ if (element instanceof IImportDeclaration) {
+ return !isStaticImport((IImportDeclaration)element);
+ }
+
+ return false;
+ }
+
+ protected boolean isStaticImport(IImportDeclaration importElement) {
+ try {
+ return Flags.isStatic(importElement.getFlags());
+ } catch (JavaModelException e) {
+ JavaPlugin.log(e);
+ }
+ return false;
}
@Override
@@ -330,6 +348,40 @@
}
}
+class StaticImportFilter extends ImportFilter {
+
+ @Override
+ public boolean filters(JavaElementMatch match) {
+
+ Object element= match.getElement();
+ if (element instanceof IImportDeclaration) {
+ return isStaticImport((IImportDeclaration)element);
+ }
+
+ return false;
+ }
+
+ @Override
+ public String getName() {
+ return SearchMessages.MatchFilter_StaticImportFilter_name;
+ }
+
+ @Override
+ public String getActionLabel() {
+ return SearchMessages.MatchFilter_StaticImportFilter_actionLabel;
+ }
+
+ @Override
+ public String getDescription() {
+ return SearchMessages.MatchFilter_StaticImportFilter_description;
+ }
+
+ @Override
+ public String getID() {
+ return "filter_static_imports"; //$NON-NLS-1$
+ }
+}
+
abstract class VariableFilter extends JavaMatchFilter {
@Override
public boolean isApplicable(JavaSearchQuery query) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.java
index 5d77304..f8e6ab2 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.java
@@ -228,6 +228,9 @@
public static String MatchFilter_ImportFilter_name;
public static String MatchFilter_ImportFilter_actionLabel;
public static String MatchFilter_ImportFilter_description;
+ public static String MatchFilter_StaticImportFilter_name;
+ public static String MatchFilter_StaticImportFilter_actionLabel;
+ public static String MatchFilter_StaticImportFilter_description;
public static String MatchFilter_WriteFilter_name;
public static String MatchFilter_WriteFilter_actionLabel;
public static String MatchFilter_WriteFilter_description;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.properties b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.properties
index e517363..f826d40 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.properties
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/search/SearchMessages.properties
@@ -257,8 +257,11 @@
MatchFilter_ImportFilter_name=In imports
MatchFilter_ImportFilter_actionLabel=In &Imports
-MatchFilter_ImportFilter_description=Filters matches that are in import statements
+MatchFilter_ImportFilter_description=Filters matches that are regular (not static) import statements
+MatchFilter_StaticImportFilter_name=In Static imports
+MatchFilter_StaticImportFilter_actionLabel=In S&tatic imports
+MatchFilter_StaticImportFilter_description=Filters matches that are in static import statements
MatchFilter_WriteFilter_name=Writes
MatchFilter_WriteFilter_actionLabel=&Writes