Skip to content

Commit 3948ff8

Browse files
jannisCodejukzi
authored andcommitted
Updated the filter feature in the call hierarchy
changed the feature from only one selectable option to three radio buttons which are more understandable and provide more functionality.
1 parent 260fa25 commit 3948ff8

File tree

6 files changed

+125
-57
lines changed

6 files changed

+125
-57
lines changed

org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyCore.java

+17-8
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,13 @@
4646

4747
public class CallHierarchyCore {
4848

49-
private static final String PREF_USE_IMPLEMENTORS= "PREF_USE_IMPLEMENTORS"; //$NON-NLS-1$
50-
private static final String PREF_USE_FILTERS= "PREF_USE_FILTERS"; //$NON-NLS-1$
51-
private static final String PREF_FILTERS_LIST= "PREF_FILTERS_LIST"; //$NON-NLS-1$
52-
private static final String PREF_FILTER_TESTCODE= "PREF_FILTER_TESTCODE"; //$NON-NLS-1$
49+
public static final String PREF_SHOW_ALL_CODE = "PREF_SHOW_ALL_CODE"; //$NON-NLS-1$
50+
public static final String PREF_HIDE_TEST_CODE = "PREF_HIDE_TEST_CODE"; //$NON-NLS-1$
51+
public static final String PREF_SHOW_TEST_CODE_ONLY = "PREF_SHOW_TEST_CODE_ONLY"; //$NON-NLS-1$
52+
53+
private static final String PREF_USE_IMPLEMENTORS= "PREF_USE_IMPLEMENTORS"; //$NON-NLS-1$
54+
private static final String PREF_USE_FILTERS= "PREF_USE_FILTERS"; //$NON-NLS-1$
55+
private static final String PREF_FILTERS_LIST= "PREF_FILTERS_LIST"; //$NON-NLS-1$
5356

5457
private String defaultIgnoreFilters= "java.*,javax.*"; //$NON-NLS-1$
5558

@@ -69,10 +72,18 @@ public boolean isSearchUsingImplementorsEnabled() {
6972
return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_USE_IMPLEMENTORS, null));
7073
}
7174

72-
public boolean isFilterTestCode() {
73-
return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_FILTER_TESTCODE, null));
75+
public boolean isShowTestCode() {
76+
return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_SHOW_TEST_CODE_ONLY, null));
77+
}
78+
79+
public boolean isShowAll() {
80+
return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_SHOW_ALL_CODE, null));
7481
}
7582

83+
public boolean isHideTestCode() {
84+
return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_HIDE_TEST_CODE, null));
85+
}
86+
7687
public Collection<IJavaElement> getImplementingMethods(IMethod method) {
7788
if (isSearchUsingImplementorsEnabled()) {
7889
IJavaElement[] result= Implementors.getInstance().searchForImplementors(new IJavaElement[] {
@@ -196,10 +207,8 @@ public boolean isIgnored(String fullyQualifiedName) {
196207
}
197208
}
198209
}
199-
200210
return false;
201211
}
202-
203212
public boolean isFilterEnabled() {
204213
return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_USE_FILTERS, null));
205214
}

org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallSearchResultCollector.java

+13-11
Original file line numberDiff line numberDiff line change
@@ -72,19 +72,21 @@ protected Map<String, MethodCall> createCalledMethodsData() {
7272
* Method isIgnored.
7373
* @return boolean
7474
*/
75-
private boolean isIgnored(IMember enclosingElement) {
76-
String fullyQualifiedName = getTypeOfElement(enclosingElement)
77-
.getFullyQualifiedName();
78-
79-
if (CallHierarchyCore.getDefault().isFilterTestCode()) {
80-
IClasspathEntry classpathEntry= determineClassPathEntry(enclosingElement);
81-
if (classpathEntry != null && classpathEntry.isTest()) {
82-
return true;
83-
}
75+
private boolean isIgnored(IMember enclosingElement) {
76+
String fullyQualifiedName= getTypeOfElement(enclosingElement).getFullyQualifiedName();
77+
78+
if (CallHierarchyCore.getDefault().isShowAll()) {
79+
return false;
8480
}
81+
IClasspathEntry classpathEntry= determineClassPathEntry(enclosingElement);
8582

86-
return CallHierarchyCore.getDefault().isIgnored(fullyQualifiedName);
87-
}
83+
if (classpathEntry != null) {
84+
boolean isTest= classpathEntry.isTest();
85+
return CallHierarchyCore.getDefault().isHideTestCode() && isTest
86+
|| CallHierarchyCore.getDefault().isShowTestCode() && !isTest;
87+
}
88+
return CallHierarchyCore.getDefault().isIgnored(fullyQualifiedName);
89+
}
8890

8991
private static IClasspathEntry determineClassPathEntry(Object element) {
9092
if (element instanceof IJavaElement) {

org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchy.java

+30-14
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@
3737
import org.eclipse.jdt.internal.ui.util.StringMatcher;
3838

3939
public class CallHierarchy {
40-
private static final String PREF_USE_IMPLEMENTORS= "PREF_USE_IMPLEMENTORS"; //$NON-NLS-1$
40+
41+
private static final String PREF_USE_IMPLEMENTORS= "PREF_USE_IMPLEMENTORS"; //$NON-NLS-1$
4142
private static final String PREF_USE_FILTERS = "PREF_USE_FILTERS"; //$NON-NLS-1$
4243
private static final String PREF_FILTERS_LIST = "PREF_FILTERS_LIST"; //$NON-NLS-1$
43-
private static final String PREF_FILTER_TESTCODE= "PREF_FILTER_TESTCODE"; //$NON-NLS-1$
4444

4545
private static CallHierarchy fgInstance;
4646
private CallHierarchyCore fgCallHierarchyCore;
@@ -53,35 +53,35 @@ public static CallHierarchy getDefault() {
5353
if (fgInstance == null) {
5454
fgInstance = new CallHierarchy();
5555
}
56-
5756
return fgInstance;
5857
}
5958

60-
public boolean isSearchUsingImplementorsEnabled() {
59+
public void setShowAll(boolean value) {
6160
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
62-
63-
return settings.getBoolean(PREF_USE_IMPLEMENTORS);
61+
settings.setValue(CallHierarchyCore.PREF_SHOW_ALL_CODE, value);
6462
}
6563

66-
public static void setSearchUsingImplementorsEnabled(boolean enabled) {
64+
public void setHideTestCode(boolean value) {
6765
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
68-
69-
settings.setValue(PREF_USE_IMPLEMENTORS, enabled);
66+
settings.setValue(CallHierarchyCore.PREF_HIDE_TEST_CODE, value);
7067
}
7168

72-
public boolean isFilterTestCode() {
69+
public void setShowTestCode(boolean value) {
7370
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
71+
settings.setValue(CallHierarchyCore.PREF_SHOW_TEST_CODE_ONLY, value);
72+
}
7473

75-
return settings.getBoolean(PREF_FILTER_TESTCODE);
74+
public boolean isSearchUsingImplementorsEnabled() {
75+
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
76+
return settings.getBoolean(PREF_USE_IMPLEMENTORS);
7677
}
7778

78-
public void setFilterTestCode(boolean enabled) {
79+
public static void setSearchUsingImplementorsEnabled(boolean enabled) {
7980
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
8081

81-
settings.setValue(PREF_FILTER_TESTCODE, enabled);
82+
settings.setValue(PREF_USE_IMPLEMENTORS, enabled);
8283
}
8384

84-
8585
public Collection<IJavaElement> getImplementingMethods(IMethod method) {
8686
return fgCallHierarchyCore.getImplementingMethods(method);
8787
}
@@ -135,6 +135,22 @@ public boolean isFilterEnabled() {
135135
return settings.getBoolean(PREF_USE_FILTERS);
136136
}
137137

138+
public boolean isShowAll() {
139+
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
140+
return settings.getBoolean(CallHierarchyCore.PREF_SHOW_ALL_CODE);
141+
}
142+
143+
public boolean isHideTestCode() {
144+
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
145+
return settings.getBoolean(CallHierarchyCore.PREF_HIDE_TEST_CODE);
146+
}
147+
148+
public boolean isShowTestCode() {
149+
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
150+
return settings.getBoolean(CallHierarchyCore.PREF_SHOW_TEST_CODE_ONLY);
151+
}
152+
153+
138154
public void setFilterEnabled(boolean filterEnabled) {
139155
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
140156
settings.setValue(PREF_USE_FILTERS, filterEnabled);

org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/callhierarchy/CallHierarchyMessages.java

+5
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ private CallHierarchyMessages() {
6666
public static String ShowExpandWithConstructorsDialogAction_text;
6767
public static String ShowFilterDialogAction_text;
6868
public static String FiltersDialog_filter;
69+
70+
public static String FiltersDialog_ShowAllCode;
71+
public static String FiltersDialog_HideTestCode;
72+
public static String FiltersDialog_TestCodeOnly;
73+
6974
public static String FiltersDialog_filterOnNames;
7075
public static String FiltersDialog_filterOnNamesSubCaption;
7176
public static String FiltersDialog_maxCallDepth;

org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/callhierarchy/CallHierarchyMessages.properties

+5
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ ShowSearchInDialogAction_text= Search &In...
6262
SearchInDialog_title= Search In
6363
ShowExpandWithConstructorsDialogAction_text=E&xpand with Constructors...
6464
ShowFilterDialogAction_text= &Filters...
65+
66+
FiltersDialog_HideTestCode = Hide Test Code
67+
FiltersDialog_ShowAllCode = Show All Code
68+
FiltersDialog_TestCodeOnly = Test Code only
69+
6570
FiltersDialog_filter= Filter Calls
6671
FiltersDialog_filterOnNames= &Name filter patterns (matching names will be hidden):
6772
FiltersDialog_filterOnNamesSubCaption= Patterns are separated by commas (* = any string, ? = any character)

org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/callhierarchy/FiltersDialog.java

+55-24
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ class FiltersDialog extends StatusDialog {
4040
private Button fFilterOnNames;
4141
private Text fNames;
4242
private Text fMaxCallDepth;
43-
private Button fFilterTestCode;
44-
43+
private Button fShowAll;
44+
private Button fHideTest;
45+
private Button fShowTest;
4546

4647
protected FiltersDialog(Shell parentShell) {
4748
super(parentShell);
@@ -112,10 +113,34 @@ private void createNamesArea(Composite parent) {
112113
}
113114

114115
private void createTestCodeArea(Composite parent) {
115-
fFilterTestCode = createCheckbox(parent,
116-
CallHierarchyMessages.FiltersDialog_filterTestCode, true);
117-
}
116+
Composite radioGroup= new Composite(parent, SWT.NONE);
117+
GridLayout layout= new GridLayout();
118+
layout.numColumns= 1;
119+
radioGroup.setLayout(layout);
120+
121+
fShowAll= new Button(radioGroup, SWT.RADIO);
122+
fShowAll.setText(CallHierarchyMessages.FiltersDialog_ShowAllCode);
123+
124+
fHideTest= new Button(radioGroup, SWT.RADIO);
125+
fHideTest.setText(CallHierarchyMessages.FiltersDialog_HideTestCode);
118126

127+
fShowTest= new Button(radioGroup, SWT.RADIO);
128+
fShowTest.setText(CallHierarchyMessages.FiltersDialog_TestCodeOnly);
129+
setSelection();
130+
131+
GridData gridData= new GridData();
132+
gridData.horizontalIndent= 0;
133+
fShowAll.setLayoutData(gridData);
134+
fHideTest.setLayoutData(gridData);
135+
fShowTest.setLayoutData(gridData);
136+
}
137+
138+
private void setSelection() {
139+
fShowAll.setSelection(CallHierarchy.getDefault().isShowAll());
140+
fHideTest.setSelection(CallHierarchy.getDefault().isHideTestCode());
141+
fShowTest.setSelection(CallHierarchy.getDefault().isShowTestCode());
142+
143+
}
119144

120145
/**
121146
* Creates a check box button with the given parent and text.
@@ -157,27 +182,33 @@ private void updateEnabledState() {
157182
}
158183

159184
/**
160-
* Updates the given filter from the UI state.
161-
*/
162-
private void updateFilterFromUI() {
163-
int maxCallDepth = Integer.parseInt(this.fMaxCallDepth.getText());
185+
* Updates the given filter from the UI state.
186+
*/
187+
private void updateFilterFromUI() {
188+
int maxCallDepth= Integer.parseInt(this.fMaxCallDepth.getText());
164189

165-
CallHierarchyUI.getDefault().setMaxCallDepth(maxCallDepth);
166-
CallHierarchy.getDefault().setFilters(fNames.getText());
167-
CallHierarchy.getDefault().setFilterEnabled(fFilterOnNames.getSelection());
168-
CallHierarchy.getDefault().setFilterTestCode(fFilterTestCode.getSelection());
169-
}
190+
CallHierarchyUI.getDefault().setMaxCallDepth(maxCallDepth);
191+
CallHierarchy.getDefault().setFilters(fNames.getText());
192+
CallHierarchy.getDefault().setFilterEnabled(fFilterOnNames.getSelection());
193+
194+
CallHierarchy.getDefault().setShowAll(fShowAll.getSelection());
195+
CallHierarchy.getDefault().setHideTestCode(fHideTest.getSelection());
196+
CallHierarchy.getDefault().setShowTestCode(fShowTest.getSelection());
197+
}
198+
199+
/**
200+
* Updates the UI state from the given filter.
201+
*/
202+
private void updateUIFromFilter() {
203+
fMaxCallDepth.setText(String.valueOf(CallHierarchyUI.getDefault().getMaxCallDepth()));
204+
fNames.setText(CallHierarchy.getDefault().getFilters());
205+
fFilterOnNames.setSelection(CallHierarchy.getDefault().isFilterEnabled());
206+
207+
setSelection();
208+
209+
updateEnabledState();
210+
}
170211

171-
/**
172-
* Updates the UI state from the given filter.
173-
*/
174-
private void updateUIFromFilter() {
175-
fMaxCallDepth.setText(String.valueOf(CallHierarchyUI.getDefault().getMaxCallDepth()));
176-
fNames.setText(CallHierarchy.getDefault().getFilters());
177-
fFilterOnNames.setSelection(CallHierarchy.getDefault().isFilterEnabled());
178-
fFilterTestCode.setSelection(CallHierarchy.getDefault().isFilterTestCode());
179-
updateEnabledState();
180-
}
181212

182213
/**
183214
* Updates the filter from the UI state.

0 commit comments

Comments
 (0)