From 12a4eb0d8bfa01cb49e02ec7d7af9f182c93cbbf Mon Sep 17 00:00:00 2001 From: jannisCode Date: Tue, 22 Oct 2024 11:12:23 +0200 Subject: [PATCH] Refactoring Filter from call Hierarchy #1730 https://github.com/eclipse-jdt/eclipse.jdt.ui/pull/1730 --- .../callhierarchy/CallHierarchyCore.java | 18 +++++++ .../corext/callhierarchy/CallHierarchy.java | 42 ++++++--------- .../ui/callhierarchy/FiltersDialog.java | 52 +++++++++++++------ 3 files changed, 68 insertions(+), 44 deletions(-) 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 c18151cc809..96b64e59329 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 @@ -46,9 +46,18 @@ 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$ @@ -72,6 +81,7 @@ public boolean isSearchUsingImplementorsEnabled() { } public boolean isShowTestCode() { + return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_SHOW_TEST_CODE_ONLY, null)); } @@ -82,6 +92,13 @@ public boolean isShowAll() { public boolean isHideTestCode() { return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_HIDE_TEST_CODE, 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]; + } + } return null; + } public Collection getImplementingMethods(IMethod method) { if (isSearchUsingImplementorsEnabled()) { @@ -328,4 +345,5 @@ public static boolean isPossibleInputElement(Object element){ return true; } + } 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 e6ba4815373..83d2e3a7eb9 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 @@ -18,9 +18,6 @@ package org.eclipse.jdt.internal.corext.callhierarchy; import static org.eclipse.jdt.internal.corext.callhierarchy.CallHierarchyCore.PREF_FILTERS_LIST; -import static org.eclipse.jdt.internal.corext.callhierarchy.CallHierarchyCore.PREF_HIDE_TEST_CODE; -import static org.eclipse.jdt.internal.corext.callhierarchy.CallHierarchyCore.PREF_SHOW_ALL_CODE; -import static org.eclipse.jdt.internal.corext.callhierarchy.CallHierarchyCore.PREF_SHOW_TEST_CODE_ONLY; import static org.eclipse.jdt.internal.corext.callhierarchy.CallHierarchyCore.PREF_USE_FILTERS; import static org.eclipse.jdt.internal.corext.callhierarchy.CallHierarchyCore.PREF_USE_IMPLEMENTORS; @@ -60,19 +57,16 @@ public static CallHierarchy getDefault() { return fgInstance; } - public void setShowAll(boolean value) { + public void setActiveFilter (String string) { IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore(); - settings.setValue(PREF_SHOW_ALL_CODE, value); - } + for (String[] s : CallHierarchyCore.PREF_FILTERS) { + if(s[0] == string) { + settings.setValue(s[0], true); + } else { + settings.setValue(s[0], false); + } + } - public void setHideTestCode(boolean value) { - IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore(); - settings.setValue(PREF_HIDE_TEST_CODE, value); - } - - public void setShowTestCode(boolean value) { - IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore(); - settings.setValue(PREF_SHOW_TEST_CODE_ONLY, value); } public boolean isSearchUsingImplementorsEnabled() { @@ -139,21 +133,15 @@ public boolean isFilterEnabled() { return settings.getBoolean(PREF_USE_FILTERS); } - public boolean isShowAll() { - IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore(); - return settings.getBoolean(PREF_SHOW_ALL_CODE); - } - - public boolean isHideTestCode() { - IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore(); - return settings.getBoolean(PREF_HIDE_TEST_CODE); - } - - public boolean isShowTestCode() { + public String getActiveFilter() { IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore(); - return settings.getBoolean(PREF_SHOW_TEST_CODE_ONLY); - } + for (String[] string : CallHierarchyCore.PREF_FILTERS) { //must be one of the threee + if(settings.getBoolean(string[0])) { + return string[0]; + } + } return null; + } public void setFilterEnabled(boolean filterEnabled) { IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore(); 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 5c7be2431bb..6e95d8c85d1 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,6 +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.ui.IJavaHelpContextIds; import org.eclipse.jdt.internal.ui.dialogs.StatusInfo; @@ -43,9 +44,11 @@ class FiltersDialog extends StatusDialog { private Button fShowAll; private Button fHideTest; private Button fShowTest; + private Button[] buttons = {fShowAll, fHideTest, fShowTest}; //important what comes when protected FiltersDialog(Shell parentShell) { super(parentShell); + } @Override @@ -118,28 +121,27 @@ private void createTestCodeArea(Composite parent) { layout.numColumns= 1; radioGroup.setLayout(layout); - fShowAll= new Button(radioGroup, SWT.RADIO); - fShowAll.setText(CallHierarchyMessages.FiltersDialog_ShowAllCode); - - fHideTest= new Button(radioGroup, SWT.RADIO); - fHideTest.setText(CallHierarchyMessages.FiltersDialog_HideTestCode); + for (int i = 0; i < buttons.length; i++) { + buttons[i] = new Button(radioGroup, SWT.RADIO); + buttons[i].setText(getStrings(buttons[i])[1]); + } - fShowTest= new Button(radioGroup, SWT.RADIO); - fShowTest.setText(CallHierarchyMessages.FiltersDialog_TestCodeOnly); setSelection(); GridData gridData= new GridData(); gridData.horizontalIndent= 0; - fShowAll.setLayoutData(gridData); - fHideTest.setLayoutData(gridData); - fShowTest.setLayoutData(gridData); + + for (Button button : buttons) { + button.setLayoutData(gridData); + } } private void setSelection() { - fShowAll.setSelection(CallHierarchy.getDefault().isShowAll()); - fHideTest.setSelection(CallHierarchy.getDefault().isHideTestCode()); - fShowTest.setSelection(CallHierarchy.getDefault().isShowTestCode()); + for(int i = 0; i < buttons.length; i++) { + buttons[i].setSelection(CallHierarchy.getDefault().getActiveFilter() + == CallHierarchyCore.PREF_FILTERS[i][0]); + } } /** @@ -191,9 +193,15 @@ private void updateFilterFromUI() { CallHierarchy.getDefault().setFilters(fNames.getText()); CallHierarchy.getDefault().setFilterEnabled(fFilterOnNames.getSelection()); - CallHierarchy.getDefault().setShowAll(fShowAll.getSelection()); - CallHierarchy.getDefault().setHideTestCode(fHideTest.getSelection()); - CallHierarchy.getDefault().setShowTestCode(fShowTest.getSelection()); + + String activeFilter =""; //$NON-NLS-1$ + for (Button button : buttons) { + if(button.getSelection()) { + activeFilter = (getStrings(button))[0]; + } + } + + CallHierarchy.getDefault().setActiveFilter(activeFilter); } /** @@ -205,10 +213,20 @@ private void updateUIFromFilter() { fFilterOnNames.setSelection(CallHierarchy.getDefault().isFilterEnabled()); setSelection(); - + updateEnabledState(); } + private String[] getStrings(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]; + } + } + /** * Updates the filter from the UI state.