示例#1
0
 IEnumerable <ProjectItemBase> GetChildren(ProjectItemBase root)
 {
     if (root.Children == null)
     {
         yield break;
     }
     foreach (ProjectItemBase item in root.Children)
     {
         if (item is ProjectItem)
         {
             yield return(item);
         }
         if (item is FileItem)
         {
             yield return(item);
         }
         foreach (var subItem in GetChildren(item))
         {
             if (subItem is FileItem)
             {
                 yield return(subItem);
             }
         }
     }
 }
示例#2
0
        bool CanCheckInItem(CheckInTarget target, ProjectItemBase item)
        {
            bool canCheckInMaster = IsCorrectlyLoaded && item.If(x => x.IsCheckOut || x.IsNew).ReturnSuccess();

            if (target == CheckInTarget.Master)
            {
                return(canCheckInMaster);
            }
            return(canCheckInMaster && item.If(x => x.MergeState == MergeState.Success).ReturnSuccess());
        }
示例#3
0
        bool CalcCanMergeItem(ProjectItemBase item)
        {
            var folderItem = item as FolderItem;

            if (folderItem != null)
            {
                return(CanMergeFolderItem(folderItem));
            }
            return(CanMergeFileItem(item));
        }
示例#4
0
        MergeState PerformMerge(ProjectItemBase item, bool showPreview)
        {
            if (item is FolderItem)
            {
                return(MergeState.Success);
            }
            var helper = new MergeHelper(this);

            item.ItemWrapper.Save();
            return(helper.MergeChanges(CurrentBranch, item.Path, null, showPreview, item.IsNew));
        }
        private string TravVirtualPath(ProjectItemBase item)
        {
            var path = string.Empty;

            while (item.Parent != null && item.Parent != CurrentProjectInfo.ProjectItem)
            {
                path = item.Parent.Text.Trim() + "\\" + path;
                item = item.Parent;
            }

            return(path);
        }
示例#6
0
        IEnumerable <ProjectItemBase> GetTotalChildren(ProjectItemBase root)
        {
            if (root.Children == null)
            {
                yield break;
            }
            foreach (ProjectItemBase item in root.Children)
            {
                yield return(item);

                foreach (ProjectItemBase subItem in GetTotalChildren(item))
                {
                    yield return(subItem);
                }
            }
        }
        public void PopulateMenu(ProjectItemBase item)
        {
            if (item == null)
            {
                return;
            }

            MenuItems.Clear();
            MenuItemBase parentMenuItem = null;

            foreach (var command in item.OptionCommands)
            {
                MenuItemBase newMenuItem = null;

                // fake command definition
                if (command.CommandDefinition is FakeCommandDefinition)
                {
                    // reset parent
                    if (string.IsNullOrEmpty(command.CommandDefinition.Name))
                    {
                        parentMenuItem = null;
                    }
                    // fake to add separator
                    else if (command.CommandDefinition.Name == "|")
                    {
                        newMenuItem = new MenuItemSeparator();
                    }
                    // fake to set parent
                    else if (command.CommandDefinition.Name.Contains('|'))
                    {
                        // extract ancestors
                        var parentNames = command.CommandDefinition.Name.Trim().Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);

                        // reset parent
                        if (parentNames.Length == 0)
                        {
                            parentMenuItem = null;
                        }
                        // find parent
                        else
                        {
                            parentMenuItem = MenuItems.OfType <StandardMenuItem>().FirstOrDefault(p => p.Text == parentNames[0]);
                            if (parentMenuItem == null)
                            {
                                parentMenuItem = new DisplayMenuItem(parentNames[0]);
                                MenuItems.Add(parentMenuItem);
                            }

                            for (var i = 1; i < parentNames.Length; i++)
                            {
                                var nextMenuItem = parentMenuItem.Children.OfType <StandardMenuItem>().FirstOrDefault(p => p.Text == parentNames[i]);
                                if (nextMenuItem == null)
                                {
                                    nextMenuItem = new DisplayMenuItem(parentNames[i]);
                                    parentMenuItem.Children.Add(nextMenuItem);
                                }
                                parentMenuItem = nextMenuItem;
                            }
                        }
                    }
                }
                else
                {
                    newMenuItem = new Idealde.Modules.MainMenu.Models.CommandMenuItem(command);
                    command.Tag = item;
                }

                if (newMenuItem == null)
                {
                    continue;
                }

                if (parentMenuItem != null)
                {
                    parentMenuItem.Children.Add(newMenuItem);
                }
                else
                {
                    MenuItems.Add(newMenuItem);
                }
            }
        }
示例#8
0
 bool CanMergeFileItem(ProjectItemBase x)
 {
     return((x.IsCheckOut || x.IsNew) && x.MergeState == MergeState.None);
 }
示例#9
0
 bool FilterItems(ProjectItemBase item, MergeHelper helper)
 {
     return(item.IsNew && !string.IsNullOrEmpty(item.FullPath) && !helper.IsItemUnderVss(item.FullPath, MasterBranch));
 }
示例#10
0
 bool CanNavigateToItem(ProjectItemBase parameter)
 {
     return(IsCorrectlyLoaded && parameter != null);
 }
示例#11
0
        void NavigateToItem(ProjectItemBase parameter)
        {
            var item = parameter ?? SelectedItem;

            dte.NavigateToFile(item);
        }
示例#12
0
 /// <summary>
 /// If this ProjectItem represents a folder - either a solution, project or an actual folder, return it.
 /// </summary>
 public static ProjectFolder GetProjectItemFolder(this ProjectItemBase item) => item.Tag switch
 {
示例#13
0
        MergeState PerformMerge(ProjectItemBase item, bool showPreview)
        {
            var helper = new MergeHelper(Options, PortOptions);

            return(helper.MergeChanges(CurrentBranch, item.Path, null, showPreview));
        }