From 05762ad65cbc4458c7534ab52d6852de507ca708 Mon Sep 17 00:00:00 2001 From: jannisCode Date: Fri, 25 Oct 2024 13:18:00 +0200 Subject: [PATCH] Refactoring Filter from Call Hierarchy #1730 Now it works with an enum rather than an array which is much nicer --- .../callhierarchy/CallHierarchyCore.java | 28 +++------- .../CallHierarchyFilterOptions.java | 40 ++++++++++++++ .../corext/callhierarchy/CallHierarchy.java | 53 +++++++++++++------ .../ui/callhierarchy/FiltersDialog.java | 30 +++++------ 4 files changed, 100 insertions(+), 51 deletions(-) create mode 100644 org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyFilterOptions.java diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyCore.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyCore.java index 96b64e59329..5983d011c98 100644 --- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyCore.java +++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyCore.java @@ -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$ @@ -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 getImplementingMethods(IMethod method) { if (isSearchUsingImplementorsEnabled()) { IJavaElement[] result= Implementors.getInstance().searchForImplementors(new IJavaElement[] { diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyFilterOptions.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyFilterOptions.java new file mode 100644 index 00000000000..efc2b7872b6 --- /dev/null +++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyFilterOptions.java @@ -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; + } +} diff --git a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchy.java b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchy.java index 83d2e3a7eb9..49a2afcb21d 100644 --- a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchy.java +++ b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchy.java @@ -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; @@ -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); @@ -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); diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/callhierarchy/FiltersDialog.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/callhierarchy/FiltersDialog.java index 6e95d8c85d1..8c8e40e610e 100644 --- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/callhierarchy/FiltersDialog.java +++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/callhierarchy/FiltersDialog.java @@ -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; @@ -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(); @@ -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. * @@ -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); } } @@ -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; + } }