diff options
author | Uwe Stieber | 2012-11-09 14:55:03 +0000 |
---|---|---|
committer | Uwe Stieber | 2012-11-09 14:55:03 +0000 |
commit | 3f3a38a809fe6829a328862a117409e57a77dae3 (patch) | |
tree | a71ff4e5a1cb7691fe289477477bd423c626f1bf /target_explorer | |
parent | ca3c8f15be036f4fe82613df683c9c0790e200f1 (diff) | |
download | org.eclipse.tcf-3f3a38a809fe6829a328862a117409e57a77dae3.tar.gz org.eclipse.tcf-3f3a38a809fe6829a328862a117409e57a77dae3.tar.xz org.eclipse.tcf-3f3a38a809fe6829a328862a117409e57a77dae3.zip |
Target Explorer: Allow customizable default activation state of current user filter
Diffstat (limited to 'target_explorer')
3 files changed, 46 insertions, 4 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/preferences/IPreferenceKeys.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/preferences/IPreferenceKeys.java index 5d4edc3d6..c9deafc5e 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/preferences/IPreferenceKeys.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/preferences/IPreferenceKeys.java @@ -27,4 +27,9 @@ public interface IPreferenceKeys { * Preference key to access the flag to hide proxies and value-add's in the "System Management" tree. */ public static final String PREF_HIDE_PROXIES_AND_VALUEADDS = PREFIX + ".model.proxies_valueadds.hide"; //$NON-NLS-1$ + + /** + * Preference key to access the flag to activate the current user filter on first launch. + */ + public static final String PREF_ACTIVATE_CURRENT_USER_FILTER = PREFIX + ".model.currentUserFilter.activate"; //$NON-NLS-1$ } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/preferences/PreferencesInitializer.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/preferences/PreferencesInitializer.java index 52cd3e895..4d8e539d4 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/preferences/PreferencesInitializer.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/preferences/PreferencesInitializer.java @@ -35,5 +35,7 @@ public class PreferencesInitializer extends AbstractPreferenceInitializer { store.setDefault(IPreferenceKeys.PREF_HIDE_DYNAMIC_TARGET_DISCOVERY_EXTENSION, true); // [Hidden] Hide proxy and value-add's in the "System Management" view: default on store.setDefault(IPreferenceKeys.PREF_HIDE_PROXIES_AND_VALUEADDS, true); + // [Hidden] Activate current user filter: default off + store.setDefault(IPreferenceKeys.PREF_ACTIVATE_CURRENT_USER_FILTER, false); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/ContentProviderDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/ContentProviderDelegate.java index 79081716c..7947148f8 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/ContentProviderDelegate.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/ContentProviderDelegate.java @@ -17,6 +17,7 @@ import java.util.concurrent.atomic.AtomicReference; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.ITreePathContentProvider; import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.Viewer; @@ -46,6 +47,7 @@ import org.eclipse.ui.internal.navigator.NavigatorFilterService; import org.eclipse.ui.navigator.CommonViewer; import org.eclipse.ui.navigator.ICommonContentExtensionSite; import org.eclipse.ui.navigator.ICommonContentProvider; +import org.eclipse.ui.navigator.ICommonFilterDescriptor; import org.eclipse.ui.navigator.INavigatorContentService; import org.eclipse.ui.navigator.INavigatorFilterService; @@ -59,6 +61,9 @@ public class ContentProviderDelegate implements ICommonContentProvider, ITreePat // The "Redirected Peers" filter id private final static String REDIRECT_PEERS_FILTER_ID = "org.eclipse.tcf.te.tcf.ui.navigator.RedirectPeersFilter"; //$NON-NLS-1$ + // The current user filter id + private final static String CURRENT_USER_FILTER_ID = "org.eclipse.tcf.te.tcf.ui.navigator.PeersByCurrentUserFilter"; //$NON-NLS-1$ + // The locator model listener instance /* default */ IModelListener modelListener = null; @@ -473,14 +478,44 @@ public class ContentProviderDelegate implements ICommonContentProvider, ITreePat // Make sure that the hidden "Redirected Peers" filter is active INavigatorContentService cs = config.getService(); navFilterService = cs != null ? cs.getFilterService() : null; - if (navFilterService != null && !navFilterService.isActive(REDIRECT_PEERS_FILTER_ID)) { - if (navFilterService instanceof NavigatorFilterService) { - ((NavigatorFilterService)navFilterService).addActiveFilterIds(new String[] { REDIRECT_PEERS_FILTER_ID }); + if (navFilterService instanceof NavigatorFilterService) { + final NavigatorFilterService filterService = (NavigatorFilterService)navFilterService; + boolean activeFiltersChanged = false; + + // Reconstruct the list of active filters based on the visible filter descriptors + List<String> activeFilderIds = new ArrayList<String>(); + + ICommonFilterDescriptor[] descriptors = filterService.getVisibleFilterDescriptors(); + for (ICommonFilterDescriptor descriptor : descriptors) { + if (descriptor.getId() != null && !"".equals(descriptor.getId()) && filterService.isActive(descriptor.getId())) { //$NON-NLS-1$ + activeFilderIds.add(descriptor.getId()); + } + } + + if (!activeFilderIds.contains(REDIRECT_PEERS_FILTER_ID)) { + activeFilderIds.add(REDIRECT_PEERS_FILTER_ID); + activeFiltersChanged = true; + } + + if (UIPlugin.getDefault().getPreferenceStore().getBoolean(IPreferenceKeys.PREF_ACTIVATE_CURRENT_USER_FILTER) + && !navFilterService.isActive(CURRENT_USER_FILTER_ID)) { + IDialogSettings settings = UIPlugin.getDefault().getDialogSettings(); + IDialogSettings section = settings.getSection(this.getClass().getSimpleName()); + if (section == null) section = settings.addNewSection(this.getClass().getSimpleName()); + if (!section.getBoolean(IPreferenceKeys.PREF_ACTIVATE_CURRENT_USER_FILTER + ".done")) { //$NON-NLS-1$ + activeFilderIds.add(CURRENT_USER_FILTER_ID); + activeFiltersChanged = true; + section.put(IPreferenceKeys.PREF_ACTIVATE_CURRENT_USER_FILTER + ".done", true); //$NON-NLS-1$ + } + } + + if (activeFiltersChanged) { + final String[] finActiveFilterIds = activeFilderIds.toArray(new String[activeFilderIds.size()]); // Do the update view asynchronous to avoid reentrant viewer calls DisplayUtil.safeAsyncExec(new Runnable() { @Override public void run() { - ((NavigatorFilterService)navFilterService).updateViewer(); + filterService.activateFilterIdsAndUpdateViewer(finActiveFilterIds); } }); } |