public SearchFilterControlModel(CommonUtils.TabId tabId, bool filterIsOn)
        {
            CompositionInitializer.SatisfyImports(this);

            mTabId = tabId;
            FilterIsOn = filterIsOn;
            OpenEditSearchFiltersDialogCommand = new DelegateCommand<object>(OpenDialogHandler, CanViewHandler);

            var model = new EditSearchFiltersModel(tabId);
            model.DataLoaded += searchFilterList => { BuildContextMenuItems(model.SearchFilterLists); };
        }
        public EditSearchFiltersDialog(CommonUtils.TabId tabId)
        {
            InitializeComponent();

            CompositionInitializer.SatisfyImports(this);

            Model = new EditSearchFiltersModel(tabId) {View = this};
            Model.DataLoaded += searchFilterList =>
            {
                DataContext = Model;
                OnDataLoaded(searchFilterList);
            };

            Model.SaveButtonFired += (filter) =>
            {
                OnSaveButtonFired(filter);
            };
            Model.LoadButtonFired += OnLoadRequested;
        }
        private void InitialiseSearchFilterControl(CommonUtils.TabId tabId)
        {
            mSearchFilterControl.IsEnabled = false;

            if (CMS.User.UserPreference.LoadDefaultSearchFilterAtStart)
            {
                mSearchFilterControl.SetContext(tabId, true);

                var model = new EditSearchFiltersModel(tabId); //just reusing the model to quickly set the default filter.
                model.DataLoaded += filter =>
                {
                    mSearchFilterControl.SetFilterIsOn(true);
                    SetControlValuesFromSearchFilterList(filter);
                };
            }
            else
            {
                mSearchFilterControl.SetContext(tabId, false);
                ProcessSearchFilter();
            }

            //events
            mSearchFilterControl.SetControlValuesFromSearchFilterListRequested += filterList =>
            {
                mSearchFilterControl.SetFilterIsOn(true);
                SetControlValuesFromSearchFilterList(filterList); //user did a right click on the menu and selected a memu item.
            };

            mSearchFilterControl.LoadRequested += filterList =>
            {
                mSearchFilterControl.SetFilterIsOn(true);
                SetControlValuesFromSearchFilterList(filterList); //user clicked on the 'Load' button on the EditeSearchFilterListsDialog.
            };

            mSearchFilterControl.BuildFiltersRequested += searchFilterList =>
            {
                SearchFilterList result = BuildFiltersFromControls(searchFilterList);

                mSearchFilterControl.SaveControlValuesToFilter(result);
            };
            mSearchFilterControl.IsEnabled = true;
        }
 public void BuildContextMenu()
 {
     var model = new EditSearchFiltersModel(mTabId);
     model.DataLoaded += searchFilterList =>
     {
         BuildContextMenuItems(model.SearchFilterLists);
     };
 }
        private void OpenDialogHandler(object obj)
        {
            var dialog = new EditSearchFiltersDialog(mTabId);
            mDialogModel = dialog.Model;

            //saving over current filter using the nav panel search controls currently displayed.
            dialog.SaveButtonFired += searchFilterList =>
            {
                if (BuildSearchFilterFromControlsRequested != null)
                {
                    BuildSearchFilterFromControlsRequested(searchFilterList);

                    //consumer should 1)   BuildSearchFilterFromControls, then 2) SaveCurrentSearchValuesToSelectedFilterList
                }
            };

            dialog.LoadRequested += filter =>
            {
                if (LoadRequested != null)
                {
                    LoadRequested(filter); //consumer should SetControl using filter.
                }
            };

            dialog.Show();
        }