internal void RenameFavoriteGroup(TaxonFavoriteViewModel taxonFavoriteViewModel)
        {
            if (taxonFavoriteViewModel == null)
            {
                return;
            }

            taxonFavoriteViewModel.IsRenaming = true;
        }
        internal void AddToFavorites(TaxonViewModel Taxon, bool global)
        {
            TaxonFavorite model = new TaxonFavorite();

            model.IsGroup          = false;
            model.ChgComb          = Taxon.ChgComb ?? false;
            model.ElemType         = Taxon.ElemType;
            model.Epithet          = Taxon.Epithet;
            model.FavoriteID       = -1;
            model.FavoriteParentID = 0;
            model.IsGlobal         = global;
            model.KingdomCode      = Taxon.KingdomCode;
            model.NameStatus       = Taxon.NameStatus;
            model.Rank             = Taxon.Rank;
            model.TaxaFullName     = Taxon.TaxaFullName;
            model.TaxaID           = Taxon.TaxaID ?? -1;
            model.TaxaParentID     = Taxon.TaxaParentID ?? -1;
            model.Unplaced         = Taxon.Unplaced ?? false;
            model.Unverified       = Taxon.Unverified ?? false;
            model.Username         = User.Username;
            model.YearOfPub        = Taxon.YearOfPub;

            LoadFavorites();

            TaxonFavoriteViewModel viewModel = new TaxonFavoriteViewModel(model);

            if (global)
            {
                _globalRoot.IsExpanded = true;
                _globalRoot.Children.Add(viewModel);
                viewModel.Parent = _globalRoot;
            }
            else
            {
                _userRoot.IsExpanded = true;
                _userRoot.Children.Add(viewModel);
                viewModel.Parent = _userRoot;
            }

            viewModel.IsSelected = true;

            RegisterPendingChange(new InsertTaxonFavoriteCommand(viewModel.Model));
        }
        private void BuildFavoritesModel(HierarchicalViewModelBase root, bool global)
        {
            var service = new SupportService(User);
            var list    = service.GetTopTaxaFavorites(global);

            foreach (TaxonFavorite item in list)
            {
                var viewModel = new TaxonFavoriteViewModel(item);
                viewModel.Parent = root;
                if (item.NumChildren > 0)
                {
                    viewModel.LazyLoadChildren += new HierarchicalViewModelAction(viewModel_LazyLoadChildren);
                    viewModel.Children.Add(new ViewModelPlaceholder("Loading..."));
                }
                root.Children.Add(viewModel);
                root.IsExpanded = true;
                root.Tag        = global;
            }
        }
        internal void AddFavoriteGroup(HierarchicalViewModelBase parent)
        {
            int parentGroupID = 0;

            if (parent == null)
            {
                return;
            }

            bool isGlobal = false;

            if (parent is ViewModelPlaceholder)
            {
                isGlobal = (bool)(parent as ViewModelPlaceholder).Tag;
            }
            else if (parent is TaxonFavoriteViewModel)
            {
                var parentViewModel = parent as TaxonFavoriteViewModel;
                isGlobal      = parentViewModel.IsGlobal;
                parentGroupID = parentViewModel.FavoriteID;
            }

            TaxonFavorite model = new TaxonFavorite();

            model.IsGroup          = true;
            model.GroupName        = "<New Folder>";
            model.IsGlobal         = isGlobal;
            model.FavoriteParentID = parentGroupID;

            TaxonFavoriteViewModel viewModel = new TaxonFavoriteViewModel(model);

            viewModel.Parent = parent;

            parent.Children.Add(viewModel);

            RegisterUniquePendingChange(new InsertFavoriteGroupCommand(model));
            viewModel.IsRenaming = true;
        }
        void viewModel_LazyLoadChildren(HierarchicalViewModelBase item)
        {
            var vm = item as TaxonFavoriteViewModel;

            if (vm != null)
            {
                if (vm.IsGroup)
                {
                    // Load the children of this favorites group...
                    var service = new SupportService(User);
                    var list    = service.GetTaxaFavorites(vm.FavoriteID, vm.IsGlobal);
                    vm.Children.Clear();
                    list.ForEach((tf) => {
                        var viewModel    = new TaxonFavoriteViewModel(tf);
                        viewModel.Parent = item;
                        if (tf.NumChildren > 0)
                        {
                            viewModel.LazyLoadChildren += new HierarchicalViewModelAction(viewModel_LazyLoadChildren);
                            viewModel.Children.Add(new ViewModelPlaceholder("Loading..."));
                        }
                        vm.Children.Add(viewModel);
                    });
                }
                else
                {
                    BuildTaxaChildrenViewModel(item, vm.TaxaID);
                }
            }
            else
            {
                if (item is TaxonViewModel)
                {
                    var tvm = item as TaxonViewModel;
                    BuildTaxaChildrenViewModel(item, tvm.TaxaID.Value);
                }
            }
        }
 private void ProcessRename(TaxonFavoriteViewModel viewModel, string name)
 {
     viewModel.GroupName = name;
     RegisterUniquePendingChange(new RenameFavoriteGroupCommand(viewModel.Model));
 }