Skip to content

Commit

Permalink
Refactoring Filter from Call Hierarchy #1730
Browse files Browse the repository at this point in the history
Now it works with an enum rather than an array which is much nicer
  • Loading branch information
jannisCode committed Oct 25, 2024
1 parent 9ef9fec commit de3e1dc
Show file tree
Hide file tree
Showing 4 changed files with 100 additions and 51 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,20 +45,6 @@
import org.eclipse.jdt.internal.ui.util.StringMatcher;

public class CallHierarchyCore {

//to add a new one just add here and change the isIgnored Method

public static final String PREF_SHOW_ALL_CODE = "PREF_SHOW_ALL_CODE"; //$NON-NLS-1$
public static final String[] A_SHOW_ALL_CODE = {PREF_SHOW_ALL_CODE, "Show All Code"}; //$NON-NLS-1$

public static final String PREF_HIDE_TEST_CODE = "PREF_HIDE_TEST_CODE"; //$NON-NLS-1$
public static final String[] A_HIDE_TEST_CODE = {PREF_HIDE_TEST_CODE, "Hide Test Code"}; //$NON-NLS-1$

public static final String PREF_SHOW_TEST_CODE_ONLY = "PREF_SHOW_TEST_CODE_ONLY"; //$NON-NLS-1$
public static final String[] A_SHOW_TEST_CODE = {PREF_SHOW_TEST_CODE_ONLY, "Test Code only"}; //$NON-NLS-1$

public static final String[][] PREF_FILTERS = {A_SHOW_ALL_CODE, A_HIDE_TEST_CODE, A_SHOW_TEST_CODE};

public static final String PREF_USE_IMPLEMENTORS= "PREF_USE_IMPLEMENTORS"; //$NON-NLS-1$
public static final String PREF_USE_FILTERS= "PREF_USE_FILTERS"; //$NON-NLS-1$
public static final String PREF_FILTERS_LIST= "PREF_FILTERS_LIST"; //$NON-NLS-1$
Expand All @@ -82,24 +68,26 @@ public boolean isSearchUsingImplementorsEnabled() {

public boolean isShowTestCode() {

return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_SHOW_TEST_CODE_ONLY, null));
return Boolean.parseBoolean(JavaManipulation.getPreference(CallHierarchyFilterOptions.SHOW_TEST_CODE_ONLY.getId(), null));
}

public boolean isShowAll() {
return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_SHOW_ALL_CODE, null));
return Boolean.parseBoolean(JavaManipulation.getPreference(CallHierarchyFilterOptions.SHOW_ALL_CODE.getId(), null));
}

public boolean isHideTestCode() {
return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_HIDE_TEST_CODE, null));
return Boolean.parseBoolean(JavaManipulation.getPreference(CallHierarchyFilterOptions.HIDE_TEST_CODE.getId(), null));
}

public String getActiveFilter() {
for (String[] string : PREF_FILTERS) { //must be one of the threee
if(Boolean.parseBoolean(JavaManipulation.getPreference(string[0], null))) {
return string[0];
for (CallHierarchyFilterOptions option: CallHierarchyFilterOptions.values()) { //must be one of the threee
if(Boolean.parseBoolean(JavaManipulation.getPreference(option.getId(), null))) {
return option.getId();
}
} return null;
}


public Collection<IJavaElement> getImplementingMethods(IMethod method) {
if (isSearchUsingImplementorsEnabled()) {
IJavaElement[] result= Implementors.getInstance().searchForImplementors(new IJavaElement[] {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*******************************************************************************
* Copyright (c) 2024 Vector Informatik GmbH and others.
*
* 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:
* Vector Informatik GmbH - initial API and implementation
*******************************************************************************/

package org.eclipse.jdt.internal.corext.callhierarchy;

/**
* These are the filter Options for the Call Hierarchy
*/
public enum CallHierarchyFilterOptions {
SHOW_ALL_CODE("PREF_SHOW_ALL_CODE", "Show All Code"), //$NON-NLS-1$ //$NON-NLS-2$
HIDE_TEST_CODE("PREF_HIDE_TEST_CODE", "Hide Test Code"), //$NON-NLS-1$ //$NON-NLS-2$
SHOW_TEST_CODE_ONLY("PREF_SHOW_TEST_CODE_ONLY", "Test Code only"); //$NON-NLS-1$ //$NON-NLS-2$

private final String identifyString;
private final String text;

CallHierarchyFilterOptions(String identifyString, String text) {
this.identifyString = identifyString;
this.text = text;
}

public String getId() {
return identifyString;
}

public String getText() {
return text;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.manipulation.JavaManipulation;
import org.eclipse.jdt.core.search.IJavaSearchScope;

import org.eclipse.jdt.internal.corext.dom.IASTSharedValues;
Expand All @@ -57,18 +58,32 @@ public static CallHierarchy getDefault() {
return fgInstance;
}

public void setActiveFilter (String string) {
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
for (String[] s : CallHierarchyCore.PREF_FILTERS) {
if(s[0] == string) {
settings.setValue(s[0], true);
} else {
settings.setValue(s[0], false);
}
}
// public void setActiveFilter (String string) {
// IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
// for (String[] s : CallHierarchyCore.PREF_FILTERS) {
// if(s[0] == string) {
// settings.setValue(s[0], true);
// } else {
// settings.setValue(s[0], false);
// }
// }
//
// }

public void setActiveFilter(CallHierarchyFilterOptions filter) {
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();

for(CallHierarchyFilterOptions option : CallHierarchyFilterOptions.values()) {
if(option == filter) {
settings.setValue(option.getId(), true);
} else {
settings.setValue(option.getId(), false);
}
}
}



public boolean isSearchUsingImplementorsEnabled() {
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
return settings.getBoolean(PREF_USE_IMPLEMENTORS);
Expand Down Expand Up @@ -133,16 +148,24 @@ public boolean isFilterEnabled() {
return settings.getBoolean(PREF_USE_FILTERS);
}

public String getActiveFilter() {
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();

for (String[] string : CallHierarchyCore.PREF_FILTERS) { //must be one of the threee
if(settings.getBoolean(string[0])) {
return string[0];
// public String getActiveFilter() {
// IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
//
// for (String[] string : CallHierarchyCore.PREF_FILTERS) { //must be one of the threee
// if(settings.getBoolean(string[0])) {
// return string[0];
// }
// } return null;
// }
public CallHierarchyFilterOptions getActiveFilter() {
for (CallHierarchyFilterOptions option: CallHierarchyFilterOptions.values()) { //must be one of the threee
if(Boolean.parseBoolean(JavaManipulation.getPreference(option.getId(), null))) {
return option;
}
} return null;
}


public void setFilterEnabled(boolean filterEnabled) {
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
settings.setValue(PREF_USE_FILTERS, filterEnabled);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import org.eclipse.ui.PlatformUI;

import org.eclipse.jdt.internal.corext.callhierarchy.CallHierarchy;
import org.eclipse.jdt.internal.corext.callhierarchy.CallHierarchyCore;
import org.eclipse.jdt.internal.corext.callhierarchy.CallHierarchyFilterOptions;

import org.eclipse.jdt.internal.ui.IJavaHelpContextIds;
import org.eclipse.jdt.internal.ui.dialogs.StatusInfo;
Expand Down Expand Up @@ -123,7 +123,7 @@ private void createTestCodeArea(Composite parent) {

for (int i = 0; i < buttons.length; i++) {
buttons[i] = new Button(radioGroup, SWT.RADIO);
buttons[i].setText(getStrings(buttons[i])[1]);
buttons[i].setText(getFilterOptions(buttons[i]).getText());
}

setSelection();
Expand All @@ -137,13 +137,12 @@ private void createTestCodeArea(Composite parent) {
}

private void setSelection() {
for(int i = 0; i < buttons.length; i++) {
buttons[i].setSelection(CallHierarchy.getDefault().getActiveFilter()
== CallHierarchyCore.PREF_FILTERS[i][0]);

for (Button button : buttons) {
button.setSelection(CallHierarchy.getDefault().getActiveFilter() == getFilterOptions(button));
}
}


/**
* Creates a check box button with the given parent and text.
*
Expand Down Expand Up @@ -193,11 +192,10 @@ private void updateFilterFromUI() {
CallHierarchy.getDefault().setFilters(fNames.getText());
CallHierarchy.getDefault().setFilterEnabled(fFilterOnNames.getSelection());


String activeFilter =""; //$NON-NLS-1$
CallHierarchyFilterOptions activeFilter = null;
for (Button button : buttons) {
if(button.getSelection()) {
activeFilter = (getStrings(button))[0];
activeFilter = getFilterOptions(button);
}
}

Expand All @@ -217,14 +215,14 @@ private void updateUIFromFilter() {
updateEnabledState();
}

private String[] getStrings(Button B) {
private CallHierarchyFilterOptions getFilterOptions(Button B) {
if(B == buttons[0]) {
return CallHierarchyCore.PREF_FILTERS[0];
} else if (B == buttons[1]) {
return CallHierarchyCore.PREF_FILTERS[1];
} else {
return CallHierarchyCore.PREF_FILTERS[2];
}
return CallHierarchyFilterOptions.SHOW_ALL_CODE;
} else if (B == buttons[1]) {
return CallHierarchyFilterOptions.HIDE_TEST_CODE;
} else {
return CallHierarchyFilterOptions.SHOW_TEST_CODE_ONLY;
}
}


Expand Down

0 comments on commit de3e1dc

Please sign in to comment.