Exemple #1
0
        /* H A N D L E  C O N T E X T  O P E N I N G */

        /*----------------------------------------------------------------------------
        *       %%Function: HandleContextOpening
        *       %%Qualified: AzLog.AzLogWindow.HandleContextOpening
        *       %%Contact: rlittle
        *
        *   This is going to get executed every time they go to open a context menu.
        *   We want to know *where* they are invoking from, so we do some clever
        *   hacker in HeaderSup.ColumnHeaderFromContextOpening(...) -- it figures out
        *   (based on the client rects of the column header items) where they are
        *   clicking and which column header is appropriate.
        *
        *   NOTE: IF it locates a ColumnHeader and returns it to you, then
        *   ColumnHeaderFromContextOpeneing CANCELS the context menu operation
        *   from here from happening and assumes you are going to invoke the context
        *   menu yourself (which is why we conly call m_ctxmHeader.Show() when
        *   we get a columnheader back - this allows us to show our ContextMenu
        *   for our Header columns instead of the context menu for the rest of the
        *   listview)
        *
        *   ALSO NOTE that we squirrel away the matched columnheader into the first
        *   menu item in the context menu -- in our case, that's the
        *   "Remove this column" menu item, so it follows that it needs to know
        *   what "this" column is.  (Other routings may choose to look here for this
        *   information, so let's make sure to clear the Tag in times when we aren't
        *   matched...)
        *  ----------------------------------------------------------------------------*/
        private void HandleContextOpening(object sender, CancelEventArgs e)
        {
            if (m_hs == null)
            {
                m_hs = new HeaderSupp();
            }

            ColumnHeader ch = m_hs.ColumnHeaderFromContextOpening(m_lvLog, sender, e);

            if (ch != null)
            {
                m_ctxmHeader.Tag           = ch;
                m_ctxmHeader.Items[0].Text = "Remove column " + ch.Text;
                m_ctxmHeader.Show(Control.MousePosition);
            }
            else
            {
                // we aren't in the column headers. now customize our context menu
                Point        ptLocal = m_lvLog.PointToClient(Cursor.Position);
                ListViewItem lvi     = m_lvLog.GetItemAt(ptLocal.X, ptLocal.Y);
                AzLogEntry   azle    = (AzLogEntry)lvi.Tag;

                ch = TCore.ListViewSupp.HeaderSupp.ColumnFromPoint(m_lvLog, ptLocal.X);
                AzLogViewSettings.AzLogViewColumn azlvc = m_azlvs.AzlvcFromName((string)ch.Tag);
                ContextMenuContext cmc = new ContextMenuContext();
                cmc.azle = azle;
                cmc.lc   = azlvc.DataColumn;
                m_ctxmListViewLog.Items[0].Tag  = cmc;
                m_ctxmListViewLog.Items[0].Text = String.Format("Filter to this {0}", ch.Text);
                m_ctxmListViewLog.Items[1].Tag  = cmc;
                m_ctxmListViewLog.Items[1].Text = String.Format("Filter out this {0}", ch.Text);
                m_ctxmListViewLog.Items[2].Tag  = cmc;
                m_ctxmListViewLog.Items[2].Text = String.Format("Color this {0}", ch.Text);
            }
        }
Exemple #2
0
        /* S E T U P  L I S T  V I E W  F O R  L O G */

        /*----------------------------------------------------------------------------
        *       %%Function: SetupListViewForView
        *       %%Qualified: AzLog.AzLogWindow.SetupListViewForView
        *       %%Contact: rlittle
        *
        *   Initialize the view to match the given view
        *  ----------------------------------------------------------------------------*/
        private void SetupListViewForView(AzLogViewSettings azlvs)
        {
            int i;

            m_lvLog.BeginUpdate();

            m_lvLog.Columns.Clear();

            //for (i = m_lvLog.Columns.Count - 1; i >= 0; --i)
            //m_lvLog.Columns.RemoveAt(i);

            for (i = 0; i < azlvs.ColumnCount(); i++)
            {
                AzLogViewSettings.AzLogViewColumn azlvc = azlvs.Column(i);

                m_lvLog.Columns.Add(new ColumnHeader());
                m_lvLog.Columns[i].Text  = azlvc.Title;
                m_lvLog.Columns[i].Tag   = azlvc.Name;
                m_lvLog.Columns[i].Width = azlvc.Width;
            }

            if (m_azlv != null)
            {
                m_azlv.BumpGeneration();
            }
            m_lvLog.EndUpdate();
            // m_lvLog.VirtualListSize = 0;
        }
Exemple #3
0
        /* N O T I F Y  C O L U M N  W I D T H  C H A N G E D */

        /*----------------------------------------------------------------------------
        *       %%Function: NotifyColumnWidthChanged
        *       %%Qualified: AzLog.AzLogWindow.NotifyColumnWidthChanged
        *       %%Contact: rlittle
        *
        *   Just make note of the fact that the column widths changed
        *  ----------------------------------------------------------------------------*/
        private void NotifyColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e)
        {
            AzLogViewSettings.AzLogViewColumn azlvc = m_azlvs.AzlvcFromName((string)m_lvLog.Columns[e.ColumnIndex].Tag);

            if (azlvc != null)
            {
                if (azlvc.Width != m_lvLog.Columns[e.ColumnIndex].Width)
                {
                    azlvc.Width = m_lvLog.Columns[e.ColumnIndex].Width;
                    DirtyView(true);
                }
            }
            else if (m_lvLog.Columns[e.ColumnIndex].Tag != null)
            {
                throw (new Exception("no column found!"));
            }
        }
Exemple #4
0
        private HeaderSupp m_hs; // this is the guts of dealing with right clicking on the header region

        /* S E T U P  C O N T E X T  M E N U */

        /*----------------------------------------------------------------------------
        *       %%Function: SetupContextMenu
        *       %%Qualified: AzLog.AzLogWindow.SetupContextMenu
        *       %%Contact: rlittle
        *
        *   Setup the context menu for the listview. This creates the "add/remove
        *   column" options.
        *  ----------------------------------------------------------------------------*/
        private void SetupContextMenu()
        {
            m_ctxmHeader.Items.Clear();

            ToolStripMenuItem tsmi = new ToolStripMenuItem {
                Text = "Remove Column...", Tag = null, Checked = false
            };

            tsmi.Click += HandleRemoveHeaderItem;
            m_ctxmHeader.Items.Add(tsmi);

            tsmi = new ToolStripMenuItem {
                Text = "Rename column...", Tag = null, Checked = false
            };
            tsmi.Click += HandleRenameHeaderItem;
            m_ctxmHeader.Items.Add(tsmi);

            tsmi = new ToolStripMenuItem {
                Text = "-------------------", Enabled = false
            };

            m_ctxmHeader.Items.Add(tsmi);

            foreach (AzLogViewSettings.DefaultColumnDef dcd in m_azlvs.DefaultColumns)
            {
                AzLogViewSettings.AzLogViewColumn azlvc = m_azlvs.AzlvcFromName(dcd.sName);
                bool fVisible = true;

                if (azlvc == null || !azlvc.Visible)
                {
                    fVisible = false;
                }

                tsmi = new ToolStripMenuItem {
                    Text = dcd.sName, Tag = dcd, Checked = fVisible
                };

                tsmi.Click += HandleSelectHeaderItem;

                m_ctxmHeader.Items.Add(tsmi);
            }
        }