Пример #1
0
		public AssemblyComparerThread(AssemblyManager manager, AssemblyGroup group, string fileName, IHandleProgress progress)
		{
			_manager = manager;
			_group = group;
			_fileName = fileName;
			_progress = progress;
		}
Пример #2
0
        public void LoadFrom(AssemblyGroup grp)
        {
            treeViewAdv1.BeginUpdate();

            try
            {
                while (treeViewAdv1.Columns.Count > 1)
                {
                    treeViewAdv1.Columns.RemoveAt(1);
                }

                while (treeViewAdv1.NodeControls.Count > 2)
                {
                    treeViewAdv1.NodeControls.RemoveAt(2);
                }

                treeViewAdv1.Model = new TreeModel();

                if ((grp != null) && (!grp.HasErrors))
                {
                    int divisor = Math.Max(1, grp.Assemblies.Count);
                    int colWidth = Math.Max(1, (treeViewAdv1.ClientRectangle.Width - treeViewAdv1.Columns[0].Width - System.Windows.Forms.SystemInformation.VerticalScrollBarWidth - 5) / divisor);

                    int col = 0;
                    foreach (AssemblyDetail ad in grp.Assemblies)
                    {
                        TreeColumn tc = new TreeColumn();
                        tc.Header = ad.Location;
                        tc.TooltipText = tc.Header;
                        tc.Width = colWidth;
                        treeViewAdv1.Columns.Add(tc);

                        DetailChangeNodeControl dnc = new DetailChangeNodeControl(col++);
                        dnc.ParentColumn = tc;
                        dnc.DisplayHiddenContentInToolTip = true;
                        dnc.EditEnabled = false;
                        dnc.Trimming = StringTrimming.EllipsisCharacter;

                        treeViewAdv1.NodeControls.Add(dnc);
                    }

                    treeViewAdv1.Model = new AssemblyGroupModel(grp);
                    //treeViewAdv1.Root.Children[0].Expand();
                }
            }
            finally
            {
                treeViewAdv1.EndUpdate();
            }
        }
Пример #3
0
        internal void LoadFrom(AssemblyGroup grp)
        {
            if (grp == null)
            {
                LoadHtml("");
                return;
            }

            StringBuilder sb = new StringBuilder();
            using (StringWriter sw = new StringWriter(sb))
            {
                HtmlUtility.WriteHtmlStart(sw);
                grp.WriteHtmlDescription(sw);
                HtmlUtility.WriteHtmlEnd(sw);
            }

            LoadHtml(sb.ToString());
        }
Пример #4
0
		public AssemblyGroupTreeItem(AssemblyGroup grp)
			: base(grp.HasErrors ? Resources.NoAction : Resources.VSObject_Assembly)
		{
			_grp = grp;
		}
Пример #5
0
        private AssemblyGroup DoCompareFiles(AssemblyManager manager, string[] assemblyFiles)
        {
            string[] assemblyFilesResolved = new string[assemblyFiles.Length];

            for (int i = 0; i < assemblyFiles.Length; i++)
            {
                if (Path.IsPathRooted(assemblyFiles[i]))
                {
                    assemblyFilesResolved[i] = assemblyFiles[i];
                }
                else
                {
                    assemblyFilesResolved[i] = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), assemblyFiles[i]));
                }
            }

            AssemblyGroup group = new AssemblyGroup();

            foreach (string file in assemblyFilesResolved)
            {
                if (group.Name == null)
                {
                    group.Name = Path.GetFileName(file);
                }

                if (Path.GetFileName(file) != group.Name)
                {
                    group.Name = "(Multiple Names)";
                    break;
                }
            }

            foreach (string fileName in assemblyFilesResolved)
            {
                AssemblyComparerThread act = new AssemblyComparerThread(manager, group, fileName, _progress);

                if (_config.Multithread)
                {
                    _tpw.QueueUserWorkItem(Execute, act);
                }
                else
                {
                    Execute(act);
                }
            }

            if (_config.Multithread)
            {
                _tpw.WaitOne();

                List<AssemblyDetail> sorted = new List<AssemblyDetail>();

                foreach (string fileName in assemblyFilesResolved)
                {
                    AssemblyDetail sortedDetail = group.Assemblies.Find(delegate(AssemblyDetail detail) { return string.Compare(detail.Location, fileName, true) == 0; });

                    if (sortedDetail == null)
                    {
                        Log.Error("Unable to sort assembly " + fileName);
                        //Log.Error(" List has " + string.Join(",", group.Assemblies.ConvertAll(delegate(AssemblyDetail detail) { return detail.Location; }).ToArray()));
                    }
                    else
                    {
                        sorted.Add(sortedDetail);
                    }
                }

                group.Assemblies.Clear();
                group.Assemblies.AddRange(sorted);
            }

            ListOperations.AlignLists(group.Assemblies);

            group.PerformCompare(_filter);

            return group;
        }