Пример #1
0
        /// <summary>
        /// Adds Ctrl+C and Ctrl+A shortcuts to the specified ListView.
        /// </summary>
        /// <param name="lv">The ListView to modify.</param>
        /// <param name="retrieveVirtualItem">A virtual item handler, if any.</param>
        public static void AddShortcuts(this ListView lv, RetrieveVirtualItemEventHandler retrieveVirtualItem)
        {
            lv.KeyDown +=
                (sender, e) =>
            {
                if (e.Control && e.KeyCode == Keys.A)
                {
                    if (retrieveVirtualItem != null)
                    {
                        for (int i = 0; i < lv.VirtualListSize; i++)
                        {
                            if (!lv.SelectedIndices.Contains(i))
                            {
                                lv.SelectedIndices.Add(i);
                            }
                        }
                    }
                    else
                    {
                        lv.Items.SelectAll();
                    }
                }

                if (e.Control && e.KeyCode == Keys.C)
                {
                    GenericViewMenu.ListViewCopy(lv, -1, retrieveVirtualItem);
                }
            };
        }
Пример #2
0
        /// <summary>
        /// Adds Ctrl+C and Ctrl+A shortcuts to the specified ListView.
        /// </summary>
        /// <param name="lv">The ListView to modify.</param>
        /// <param name="retrieveVirtualItem">A virtual item handler, if any.</param>
        public static void AddShortcuts(this ListView lv, RetrieveVirtualItemEventHandler retrieveVirtualItem)
        {
            lv.KeyDown +=
                (sender, e) =>
                {
                    if (e.Control && e.KeyCode == Keys.A)
                    {
                        if (retrieveVirtualItem != null)
                        {
                            for (int i = 0; i < lv.VirtualListSize; i++)
                                if (!lv.SelectedIndices.Contains(i))
                                    lv.SelectedIndices.Add(i);
                        }
                        else
                        {
                            lv.Items.SelectAll();
                        }
                    }

                    if (e.Control && e.KeyCode == Keys.C)
                    {
                        GenericViewMenu.ListViewCopy(lv, -1, retrieveVirtualItem);
                    }
                };
        }
Пример #3
0
        /// <summary>
        /// Helper, automates the saving of items of virtual list to a CSV files.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void SaveVirtualListItemsToCSV(ListView virtualListViewEx1, RetrieveVirtualItemEventHandler handler)
        {
            using (SaveFileDialog dialog = new SaveFileDialog())
            {
                dialog.Title            = "Select save file";
                dialog.AddExtension     = true;
                dialog.RestoreDirectory = true;
                dialog.DefaultExt       = "csv";
                dialog.Filter           = "Text file (*.csv)|*.csv";

                if (dialog.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                StringBuilder builder = WinFormsHelper.VirtualListItemsToCSV(virtualListViewEx1, handler);
                using (FileWriterHelper helper = new FileWriterHelper())
                {
                    if (helper.Initialize(dialog.FileName) == false)
                    {
                        MessageBox.Show("Failed to save file.");
                        return;
                    }

                    helper.Write(builder.ToString());
                }
            }
        }
        /// <summary>
        /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed.
        /// <example>
        /// retrievevirtualitemeventhandler.BeginInvoke(sender, e, callback);
        /// </example>
        /// </summary>
        public static IAsyncResult BeginInvoke(this RetrieveVirtualItemEventHandler retrievevirtualitemeventhandler, Object sender, RetrieveVirtualItemEventArgs e, AsyncCallback callback)
        {
            if (retrievevirtualitemeventhandler == null)
            {
                throw new ArgumentNullException("retrievevirtualitemeventhandler");
            }

            return(retrievevirtualitemeventhandler.BeginInvoke(sender, e, callback, null));
        }
Пример #5
0
        public static void ListViewCopy(ListView lv, int subItem, RetrieveVirtualItemEventHandler retrieveVirtualItem)
        {
            List <ListViewItem> collection = new List <ListViewItem>();
            StringBuilder       text       = new StringBuilder();

            if (lv.SelectedIndices.Count == 0)
            {
                return;
            }

            if (retrieveVirtualItem != null)
            {
                foreach (int index in lv.SelectedIndices)
                {
                    RetrieveVirtualItemEventArgs args = new RetrieveVirtualItemEventArgs(index);

                    retrieveVirtualItem(lv, args);

                    collection.Add(args.Item);
                }
            }
            else
            {
                foreach (ListViewItem item in lv.SelectedItems)
                {
                    collection.Add(item);
                }
            }

            for (int i = 0; i < collection.Count; i++)
            {
                if (subItem == -1)
                {
                    for (int j = 0; j < lv.Columns.Count; j++)
                    {
                        text.Append(collection[i].SubItems[j].Text);

                        if (j != lv.Columns.Count - 1)
                        {
                            text.Append(", ");
                        }
                    }
                }
                else
                {
                    text.Append(collection[i].SubItems[subItem].Text);
                }

                if (i != collection.Count - 1)
                {
                    text.AppendLine();
                }
            }

            Clipboard.SetText(text.ToString());
        }
Пример #6
0
        public static ContextMenu GetMenu(ListView lv, RetrieveVirtualItemEventHandler retrieveVirtualItem)
        {
            ContextMenu menu = new ContextMenu();

            menu.Tag    = lv;
            menu.Popup += new EventHandler(ListViewMenu_Popup);
            AddMenuItems(menu.MenuItems, lv, retrieveVirtualItem);

            return(menu);
        }
Пример #7
0
        public static ContextMenu GetMenu(ListView lv, RetrieveVirtualItemEventHandler retrieveVirtualItem)
        {
            ContextMenu menu = new ContextMenu();

            menu.Tag = lv;
            menu.Popup += new EventHandler(ListViewMenu_Popup);
            AddMenuItems(menu.MenuItems, lv, retrieveVirtualItem);

            return menu;
        }
Пример #8
0
        /// <summary>
        /// Create a VirtualObjectListView
        /// </summary>
        public VirtualObjectListView()
            : base()
        {
            VirtualMode = true;             // Virtual lists have to be virtual -- no prizes for guessing that :)

            CacheVirtualItems    += new CacheVirtualItemsEventHandler(HandleCacheVirtualItems);
            RetrieveVirtualItem  += new RetrieveVirtualItemEventHandler(HandleRetrieveVirtualItem);
            SearchForVirtualItem += new SearchForVirtualItemEventHandler(HandleSearchForVirtualItem);

            // At the moment, we don't need to handle this event. But we'll keep this comment to remind us about it.
            //this.VirtualItemsSelectionRangeChanged += new ListViewVirtualItemsSelectionRangeChangedEventHandler(VirtualObjectListView_VirtualItemsSelectionRangeChanged);

            VirtualListDataSource = new VirtualListVersion1DataSource(this);
        }
Пример #9
0
        /// <summary>
        /// Helper, saving virtual list items to string builder.
        /// </summary>
        /// <param name="listView"></param>
        /// <param name="handler"></param>
        /// <returns></returns>
        public static StringBuilder VirtualListItemsToCSV(ListView listView, RetrieveVirtualItemEventHandler handler)
        {
            StringBuilder result = new StringBuilder();

            for (int i = 0; i < listView.VirtualListSize; i++)
            {
                RetrieveVirtualItemEventArgs args = new RetrieveVirtualItemEventArgs(i);
                handler(listView, args);

                if (args.Item != null)
                {
                    RenderListViewItem(args.Item, result);
                }
            }

            return(result);
        }
Пример #10
0
        public static void AddMenuItems(MenuItem.MenuItemCollection items, ListView lv, RetrieveVirtualItemEventHandler retrieveVirtualItem)
        {
            MenuItem copyItem = new MenuItem("Copy");

            copyItem.Tag = new object[] { -1, lv, retrieveVirtualItem };
            copyItem.Click += new EventHandler(ListViewMenuItem_Click);

            items.Add(copyItem);

            foreach (ColumnHeader ch in lv.Columns)
            {
                MenuItem item = new MenuItem("Copy \"" + ch.Text + "\"");

                item.Tag = new object[] { ch.Index, lv, retrieveVirtualItem };
                item.Click += new EventHandler(ListViewMenuItem_Click);

                items.Add(item);
            }
        }
        public SessionInfoListView(SessionInfo sessionInfo)
        {
            Session = sessionInfo;

            Columns.Add(LogControl.CreateColumnHeader("", 70));
            Columns.Add(LogControl.CreateColumnHeader("", 90));

            Columns[0].TextAlign = HorizontalAlignment.Left;

            View                 = View.Details;
            Dock                 = DockStyle.Fill;
            ShowItemToolTips     = true;
            VirtualMode          = true;
            VirtualListSize      = Session.Items.GetUpperBound(0) + 1;
            RetrieveVirtualItem += new RetrieveVirtualItemEventHandler(SessionInfoListView_RetrieveVirtualItem);
            CacheVirtualItems   += new CacheVirtualItemsEventHandler(SessionInfoListView_CacheVirtualItems);
            StatoscopeForm.SetDoubleBuffered(this);

            LviCache = new List <ListViewItem>(VirtualListSize);
            UpdateLviCache();
        }
Пример #12
0
        public BucketListView(BucketSet bucketSet)
        {
            InitializeComponent();

            View                 = View.Details;
            Dock                 = DockStyle.Fill;
            GridLines            = true;
            FullRowSelect        = true;
            VirtualMode          = true;
            VirtualListSize      = bucketSet.m_buckets.Count;
            RetrieveVirtualItem += new RetrieveVirtualItemEventHandler(bucketsListView_RetrieveVirtualItem);
            CacheVirtualItems   += new CacheVirtualItemsEventHandler(bucketsListView_CacheVirtualItems);
            StatoscopeForm.SetDoubleBuffered(this);

            int numColHeaders  = CountHeaders(bucketSet);
            int colHeaderWidth = Math.Max(50, (Width) / numColHeaders);

            Columns.Add(LogControl.CreateColumnHeader("Bucket", colHeaderWidth));
            CreateHeaders(bucketSet, colHeaderWidth);

            m_bucketSet = bucketSet;
            m_lviCache  = new List <ListViewItem>(bucketSet.m_buckets.Count);
            UpdateLviCache();
        }
Пример #13
0
        public StatsListView(List <LogView> logViews, string path)
        {
            Columns.Add(LogControl.CreateColumnHeader("", 92));
            Columns.Add(LogControl.CreateColumnHeader("#Frames", 55));
            Columns.Add(LogControl.CreateColumnHeader("Min", 55));
            Columns.Add(LogControl.CreateColumnHeader("Max", 55));
            Columns.Add(LogControl.CreateColumnHeader("Avg", 55));

            Columns[0].TextAlign = HorizontalAlignment.Left;

            View                 = View.Details;
            Dock                 = DockStyle.Fill;
            ShowItemToolTips     = true;
            VirtualMode          = true;
            VirtualListSize      = logViews.Count;
            RetrieveVirtualItem += new RetrieveVirtualItemEventHandler(statsListView_RetrieveVirtualItem);
            CacheVirtualItems   += new CacheVirtualItemsEventHandler(statsListView_CacheVirtualItems);
            StatoscopeForm.SetDoubleBuffered(this);

            m_logViews = logViews;
            m_path     = path;
            m_lviCache = new List <ListViewItem>(logViews.Count);
            UpdateLviCache();
        }
Пример #14
0
 public static ContextMenu GetCopyMenu(this ListView lv, RetrieveVirtualItemEventHandler retrieveVirtualItem)
 {
     return(GetMenu(lv, retrieveVirtualItem));
 }
Пример #15
0
        public static void ListViewCopy(ListView lv, int subItem, RetrieveVirtualItemEventHandler retrieveVirtualItem)
        {
            List<ListViewItem> collection = new List<ListViewItem>();
            StringBuilder text = new StringBuilder();

            if (lv.SelectedIndices.Count == 0)
                return;

            if (retrieveVirtualItem != null)
            {
                foreach (int index in lv.SelectedIndices)
                {
                    RetrieveVirtualItemEventArgs args = new RetrieveVirtualItemEventArgs(index);

                    retrieveVirtualItem(lv, args);

                    collection.Add(args.Item);
                }
            }
            else
            {
                foreach (ListViewItem item in lv.SelectedItems)
                    collection.Add(item);
            }

            for (int i = 0; i < collection.Count; i++)
            {
                if (subItem == -1)
                {
                    for (int j = 0; j < lv.Columns.Count; j++)
                    {
                        text.Append(collection[i].SubItems[j].Text);

                        if (j != lv.Columns.Count - 1)
                            text.Append(", ");
                    }
                }
                else
                {
                    text.Append(collection[i].SubItems[subItem].Text);
                }

                if (i != collection.Count - 1)
                    text.AppendLine();
            }

            Clipboard.SetText(text.ToString());
        }
        /// <summary>
        /// Helper, automates the saving of items of virtual list to a CSV files.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void SaveVirtualListItemsToCSV(ListView virtualListViewEx1, RetrieveVirtualItemEventHandler handler)
        {
            using (SaveFileDialog dialog = new SaveFileDialog())
            {
                dialog.Title = "Select save file";
                dialog.AddExtension = true;
                dialog.RestoreDirectory = true;
                dialog.DefaultExt = "csv";
                dialog.Filter = "Text file (*.csv)|*.csv";

                if (dialog.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                StringBuilder builder = WinFormsHelper.VirtualListItemsToCSV(virtualListViewEx1, handler);
                using (FileWriterHelper helper = new FileWriterHelper())
                {
                    if (helper.Initialize(dialog.FileName) == false)
                    {
                        MessageBox.Show("Failed to save file.");
                        return;
                    }

                    helper.Write(builder.ToString());
                }
            }
        }
        /// <summary>
        /// Helper, saving virtual list items to string builder.
        /// </summary>
        /// <param name="listView"></param>
        /// <param name="handler"></param>
        /// <returns></returns>
        public static StringBuilder VirtualListItemsToCSV(ListView listView, RetrieveVirtualItemEventHandler handler)
        {
            StringBuilder result = new StringBuilder();

            for (int i = 0; i < listView.VirtualListSize; i++)
            {
                RetrieveVirtualItemEventArgs args = new RetrieveVirtualItemEventArgs(i);
                handler(listView, args);

                if (args.Item != null)
                {
                    RenderListViewItem(args.Item, result);
                }
            }

            return result;
        }
Пример #18
0
 public static ContextMenu GetCopyMenu(this ListView lv, RetrieveVirtualItemEventHandler retrieveVirtualItem)
 {
     return GetMenu(lv, retrieveVirtualItem);
 }
Пример #19
0
        public static void AddMenuItems(MenuItem.MenuItemCollection items, ListView lv, RetrieveVirtualItemEventHandler retrieveVirtualItem)
        {
            MenuItem copyItem = new MenuItem("Copy");

            copyItem.Tag    = new object[] { -1, lv, retrieveVirtualItem };
            copyItem.Click += new EventHandler(ListViewMenuItem_Click);

            items.Add(copyItem);

            foreach (ColumnHeader ch in lv.Columns)
            {
                MenuItem item = new MenuItem("Copy \"" + ch.Text + "\"");

                item.Tag    = new object[] { ch.Index, lv, retrieveVirtualItem };
                item.Click += new EventHandler(ListViewMenuItem_Click);

                items.Add(item);
            }
        }