Example #1
0
        void RevisionListViewSelectionChanged(object sender, EventArgs e)
        {
            changesListView.Items.Clear();
            if (revisionListView.SelectedItems.Count == 0)
            {
                commentRichTextBox.Text    = "";
                commentRichTextBox.Enabled = false;
                return;
            }
            commentRichTextBox.Enabled = true;
            ListViewItem item       = revisionListView.SelectedItems[0];
            LogMessage   logMessage = item.Tag as LogMessage;

            commentRichTextBox.Text = logMessage.Message;
            List <ChangedPath> changes = logMessage.ChangedPaths;

            if (changes == null)
            {
                changesListView.Items.Add("Loading...");
                if (!isLoadingChangedPaths)
                {
                    isLoadingChangedPaths = true;
                    loadChangedPathsItem  = item;
                    ThreadPool.QueueUserWorkItem(LoadChangedPaths);
                }
            }
            else
            {
                int pathWidth     = 70;
                int copyFromWidth = 70;
                using (Graphics g = CreateGraphics()) {
                    foreach (ChangedPath change in changes)
                    {
                        string path = change.Path;
                        path = path.Replace('\\', '/');
                        SizeF size = g.MeasureString(path, changesListView.Font);
                        if (size.Width + 4 > pathWidth)
                        {
                            pathWidth = (int)size.Width + 4;
                        }
                        string copyFrom = change.CopyFromPath;
                        if (copyFrom == null)
                        {
                            copyFrom = string.Empty;
                        }
                        else
                        {
                            copyFrom = copyFrom + " : r" + change.CopyFromRevision;
                            size     = g.MeasureString(copyFrom, changesListView.Font);
                            if (size.Width + 4 > copyFromWidth)
                            {
                                copyFromWidth = (int)size.Width + 4;
                            }
                        }
                        ListViewItem newItem = new ListViewItem(new string[] {
                            SvnClientWrapper.GetActionString(change.Action),
                            path,
                            copyFrom
                        });
                        changesListView.Items.Add(newItem);
                    }
                }
                changesListView.Columns[1].Width = pathWidth;
                changesListView.Columns[2].Width = copyFromWidth;
            }
        }