示例#1
0
        protected internal override Rectangle GetFocusRect(JetListViewNode itemNode, Rectangle rc)
        {
            Rectangle             rcFocus;
            int                   curX               = -_scrollOffset + _borderSize;
            int                   selWidth           = GetTotalColumnWidth();
            bool                  inIndent           = false;
            ColumnWidthEnumerator fixedColEnumerator = new ColumnWidthEnumerator(_columnCollection, itemNode);

            while (fixedColEnumerator.MoveNext())
            {
                if (IsValueColumn(fixedColEnumerator.Current))
                {
                    break;
                }
                if (fixedColEnumerator.Current.IsIndentColumn())
                {
                    inIndent = true;
                }
                curX += fixedColEnumerator.CurrentWidth;
                if (!inIndent || !fixedColEnumerator.Current.FixedSize)
                {
                    selWidth -= fixedColEnumerator.CurrentWidth;
                }
            }

            rcFocus = new Rectangle(curX, rc.Top, selWidth, rc.Height);
            return(rcFocus);
        }
示例#2
0
        public override Rectangle GetColumnBounds(JetListViewColumn col, JetListViewNode node)
        {
            int curX = -_scrollOffset + _borderSize;
            ColumnWidthEnumerator enumerator = new ColumnWidthEnumerator(_columnCollection, node);

            while (enumerator.MoveNext())
            {
                if (enumerator.Current == col)
                {
                    return(new Rectangle(curX, 0, enumerator.CurrentWidth, _rowHeight));
                }

                curX += enumerator.CurrentWidth;
            }
            throw new ArgumentException("Column not found in list", "col");
        }
示例#3
0
        protected override JetListViewColumn GetColumnAndDelta(JetListViewNode node, int x, int y, out int deltaX, out int deltaY)
        {
            Guard.NullArgument(node, "node");
            deltaY = y;
            int curX = -_scrollOffset + _borderSize;
            ColumnWidthEnumerator enumerator = new ColumnWidthEnumerator(_columnCollection, node);

            while (enumerator.MoveNext())
            {
                if (x >= curX && x < curX + enumerator.CurrentWidth)
                {
                    deltaX = x - curX;
                    return(enumerator.Current);
                }
                curX += enumerator.CurrentWidth;
            }
            deltaX = 0;
            return(null);
        }
示例#4
0
        public override void DrawRow(Graphics g, Rectangle rc, JetListViewNode itemNode, RowState state)
        {
            int curX = -_scrollOffset + _borderSize;

            Rectangle rcFocus = Rectangle.Empty;
            bool      focusRow = false, dropTargetRow = false;

            if (((state & RowState.Focused) != 0 &&
                 _searchHighlightText != null && _searchHighlightText.Length > 0))
            {
                state |= RowState.IncSearchMatch;
            }

            if (_fullRowSelect)
            {
                rcFocus = GetFocusRect(itemNode, rc);
                FillFullRowSelectBar(g, rcFocus, state);
            }

            ColumnWidthEnumerator colEnumerator = new ColumnWidthEnumerator(_columnCollection, itemNode);
            bool selectionDrawn = false, firstValueColumnFound = false;

            while (colEnumerator.MoveNext())
            {
                if (IsValueColumn(colEnumerator.Current))
                {
                    firstValueColumnFound = true;
                }
                ClearRowSelectState(ref state, ref focusRow, ref dropTargetRow);
                if (_fullRowSelect)
                {
                    if ((state & RowState.IncSearchMatch) != 0 && firstValueColumnFound &&
                        ((state & RowState.ActiveSelected) != 0))
                    {
                        state &= ~RowState.ActiveSelected;
                        state |= RowState.InactiveSelected;
                    }
                }
                else
                {
                    if (selectionDrawn)
                    {
                        state &= ~(RowState.InactiveSelected | RowState.ActiveSelected | RowState.Focused);
                    }
                }

                Rectangle         rcCol = new Rectangle(curX, rc.Top, colEnumerator.CurrentWidth, rc.Height);
                JetListViewColumn col   = colEnumerator.Current;

                DrawColumnWithHighlight(g, rcCol, itemNode, col, state);

                if (!selectionDrawn && firstValueColumnFound)
                {
                    selectionDrawn = true;
                }

                curX += rcCol.Width;
            }

            DrawRowSelectRect(g, rcFocus, dropTargetRow, focusRow);
        }