/// ------------------------------------------------------------------------------------ /// <summary> /// /// </summary> /// ------------------------------------------------------------------------------------ private void LoadFilters() { PaFiltersList filterList = PaFiltersList.Load(); ListViewItem currItem = null; foreach (PaFilter filter in filterList) { ListViewItem item = new ListViewItem(filter.Name); item.ImageIndex = (filter.ShowInToolbarList ? 0 : 1); item.Tag = filter; lvFilters.Items.Add(item); if (FilterHelper.CurrentFilter != null && filter.Name == FilterHelper.CurrentFilter.Name) { currItem = item; } } lvFilters.ItemSelectionChanged += lvFilters_ItemSelectionChanged; if (currItem != null) { lvFilters.FocusedItem = currItem; currItem.Selected = true; } else if (lvFilters.Items.Count > 0) { lvFilters.FocusedItem = lvFilters.Items[0]; lvFilters.Items[0].Selected = true; } btnCopy.Enabled = btnRemove.Enabled = (lvFilters.Items.Count > 0); }
/// ------------------------------------------------------------------------------------ /// <summary> /// /// </summary> /// ------------------------------------------------------------------------------------ public void RefreshFilterList() { m_filterButton.DropDown.Items.Clear(); m_filterButton.DropDown.Items.Add(Properties.Resources.kstidFiltersMenuText, Properties.Resources.kimidDefineFilters); PaFiltersList filterList = FilterHelper.FilterList; if (filterList == null || filterList.Count == 0) { return; } m_filterButton.DropDown.Items.Insert(0, new ToolStripSeparator()); for (int i = filterList.Count - 1; i >= 0; i--) { if (filterList[i].ShowInToolbarList) { ToolStripMenuItem item = new ToolStripMenuItem(filterList[i].Name); item.Tag = filterList[i]; m_filterButton.DropDown.Items.Insert(0, item); } } m_filterButton.DropDown.Items.Insert(0, new ToolStripSeparator()); m_filterButton.DropDown.Items.Insert(0, new ToolStripMenuItem(Properties.Resources.kstidNoFilterText)); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Loads the list of filters for the specified project. If the project is /// null, then an empty list is returned. /// </summary> /// ------------------------------------------------------------------------------------ public static PaFiltersList Load(PaProject project) { string filename = (project != null ? project.ProjectPathFilePrefix + kFiltersFilePrefix : null); PaFiltersList filtersList = null; if (File.Exists(filename)) { filtersList = SilUtils.Utils.DeserializeData(filename, typeof(PaFiltersList)) as PaFiltersList; } return(filtersList ?? new PaFiltersList()); }
/// ------------------------------------------------------------------------------------ /// <summary> /// /// </summary> /// ------------------------------------------------------------------------------------ protected override bool SaveChanges() { PaFiltersList filterList = new PaFiltersList(); foreach (ListViewItem item in lvFilters.Items) { PaFilter filter = item.Tag as PaFilter; if (filter != null) { filterList.Add(filter); } } // TODO: Validate expressions with search queries. filterList.Save(); FilterHelper.UpdateDisplayedFilterLists(filterList, true); m_dirty = false; m_grid.IsDirty = false; return(true); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Updates each of the filter drop-downs created for the PA main window and all the /// undocked windows. When restorePrevFilter is true, if there is currently a filter /// applied, it will be reapplied after the lists are updated. /// </summary> /// ------------------------------------------------------------------------------------ public static void UpdateDisplayedFilterLists(PaFiltersList filterList, bool restorePrevFilter) { PaFilter prevFilter = s_currFilter; s_filters = (filterList != null ? filterList : PaFiltersList.Load()); foreach (FilterGUIComponent fgc in s_guiComponents.Values) { fgc.RefreshFilterList(); } if (prevFilter != null) { // Because the filter list has been recreated, the previous filter was // orphaned by the recreation of the filter list, we need to find the // new instance of the filter with the same name. If that filter no // longer exists, then we must turn off filtering (i.e. Restore). ApplyFilter(s_filters[prevFilter.Name]); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// /// </summary> /// ------------------------------------------------------------------------------------ protected void AfterDataSourcesLoaded(object args) { PaProject project = args as PaProject; if (project != null) { FilterHelper.UpdateDisplayedFilterLists(PaFiltersList.Load(project), false); // The first time we read the data sources, check if there was a filter // applied when the user closed down PA the last time. If so, then apply // it now. (m_startupFilterName will only be non null the first time the // data sources are read after startup. if (!string.IsNullOrEmpty(m_startupFilterName)) { PaFilter filter = FilterHelper.FilterList[m_startupFilterName]; if (filter != null) { FilterHelper.ApplyFilter(filter); } m_startupFilterName = null; } } }