Пример #1
0
        DrawAvailableRangeText
        (
            DrawingObjects oDrawingObjects,
            IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar,
            ref Int32 iAvailableRangeTextLeft,
            ref Int32 iAvailableRangeTextRight,
            ref Int32 iTop
        )
        {
            Debug.Assert(oDrawingObjects != null);
            Debug.Assert(oDynamicFilterRangeTrackBar != null);
            AssertValid();

            DrawRangeText(oDrawingObjects,

                          oDynamicFilterRangeTrackBar.ValueToString(
                              oDynamicFilterRangeTrackBar.AvailableMinimum),

                          oDynamicFilterRangeTrackBar.ValueToString(
                              oDynamicFilterRangeTrackBar.AvailableMaximum),

                          SystemBrushes.GrayText, ref iAvailableRangeTextLeft,
                          ref iAvailableRangeTextRight, ref iTop
                          );

            iTop += oDrawingObjects.GetFontHeightMultiple(0.4F);
        }
Пример #2
0
        DrawSelectedRangeLine
        (
            DrawingObjects oDrawingObjects,
            IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar,
            Pen oSelectedRangeLinePen,
            Int32 iAvailableRangeLineLeft,
            Int32 iAvailableRangeLineRight,
            out Int32 iSelectedRangeLineLeft,
            out Int32 iSelectedRangeLineRight,
            ref Int32 iTop
        )
        {
            Debug.Assert(oDrawingObjects != null);
            Debug.Assert(oDynamicFilterRangeTrackBar != null);
            Debug.Assert(oSelectedRangeLinePen != null);
            AssertValid();

            iSelectedRangeLineLeft = GetXWithinAvailableLine(
                oDynamicFilterRangeTrackBar.SelectedMinimum,
                oDynamicFilterRangeTrackBar, iAvailableRangeLineLeft,
                iAvailableRangeLineRight);

            iSelectedRangeLineRight = GetXWithinAvailableLine(
                oDynamicFilterRangeTrackBar.SelectedMaximum,
                oDynamicFilterRangeTrackBar, iAvailableRangeLineLeft,
                iAvailableRangeLineRight);

            // Don't let the line have zero width.

            if (iSelectedRangeLineRight == iSelectedRangeLineLeft)
            {
                if (iSelectedRangeLineLeft == iAvailableRangeLineLeft)
                {
                    iSelectedRangeLineRight += MinimumSelectedLineWidth;
                }
                else if (iSelectedRangeLineRight == iAvailableRangeLineRight)
                {
                    iSelectedRangeLineLeft -= MinimumSelectedLineWidth;
                }
                else
                {
                    iSelectedRangeLineLeft  -= (MinimumSelectedLineWidth / 2);
                    iSelectedRangeLineRight += (MinimumSelectedLineWidth / 2);
                }
            }

            oDrawingObjects.Graphics.DrawLine(oSelectedRangeLinePen,
                                              iSelectedRangeLineLeft, iTop, iSelectedRangeLineRight, iTop);

            iTop += AvailableLineHeight;
        }
Пример #3
0
        GetXWithinAvailableLine
        (
            Decimal decValue,
            IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar,
            Int32 iAvailableLineLeft,
            Int32 iAvailableLineRight
        )
        {
            Debug.Assert(oDynamicFilterRangeTrackBar != null);
            Debug.Assert(iAvailableLineRight >= iAvailableLineLeft);
            AssertValid();

            Decimal decValueX = (Decimal)iAvailableLineLeft +

                                ((Decimal)iAvailableLineRight - (Decimal)iAvailableLineLeft) *
                                (
                (decValue - oDynamicFilterRangeTrackBar.AvailableMinimum) /

                (oDynamicFilterRangeTrackBar.AvailableMaximum -
                 oDynamicFilterRangeTrackBar.AvailableMinimum)
                                );

            return((Int32)decValueX);
        }
    GetXWithinAvailableLine
    (
        Decimal decValue,
        IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar,
        Int32 iAvailableLineLeft,
        Int32 iAvailableLineRight
    )
    {
        Debug.Assert(oDynamicFilterRangeTrackBar != null);
        Debug.Assert(iAvailableLineRight >= iAvailableLineLeft);
        AssertValid();

        Decimal decValueX = (Decimal)iAvailableLineLeft + 

            ( (Decimal)iAvailableLineRight - (Decimal)iAvailableLineLeft ) *
            (
                (decValue - oDynamicFilterRangeTrackBar.AvailableMinimum) /

                (oDynamicFilterRangeTrackBar.AvailableMaximum -
                    oDynamicFilterRangeTrackBar.AvailableMinimum)
            );

        return ( (Int32)decValueX );
    }
    DrawSelectedRangeText
    (
        DrawingObjects oDrawingObjects,
        IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar,
        Int32 iAvailableRangeTextLeft,
        Int32 iAvailableRangeTextRight,
        Int32 iSelectedRangeLineLeft,
        Int32 iSelectedRangeLineRight,
        Int32 iTop
    )
    {
        Debug.Assert(oDrawingObjects != null);
        Debug.Assert(oDynamicFilterRangeTrackBar != null);
        AssertValid();

        // Measure the minimum and maximum selected values.

        String sSelectedMinimumText =
            oDynamicFilterRangeTrackBar.ValueToString(
                oDynamicFilterRangeTrackBar.SelectedMinimum);

        Int32 iSelectedMinimumTextWidth = MeasureTextWidth(oDrawingObjects,
            sSelectedMinimumText);

        String sSelectedMaximumText =
            oDynamicFilterRangeTrackBar.ValueToString(
                oDynamicFilterRangeTrackBar.SelectedMaximum);

        Int32 iSelectedMaximumTextWidth = MeasureTextWidth(
            oDrawingObjects, sSelectedMaximumText);

        // If there is enough room, draw the selected minimum text with its
        // right edge aligned with the left edge of the selected line, and the
        // selected maximum text with its left edge aligned with the right edge
        // of the selected line.  Don't let any text exceed the bounds
        // specified by iAvailableRangeTextLeft and iAvailableRangeTextRight,
        // and don't let the text run into each other.

        Int32 iSelectedMinimumTextRight = Math.Max(
            iSelectedRangeLineLeft,
            iAvailableRangeTextLeft + iSelectedMinimumTextWidth
            );

        iSelectedMinimumTextRight = Math.Min(
            iSelectedMinimumTextRight,
            iAvailableRangeTextRight - iSelectedMaximumTextWidth
            );

        Int32 iSelectedMaximumTextLeft = Math.Min(
            iSelectedRangeLineRight,
            iAvailableRangeTextRight - iSelectedMaximumTextWidth
            );

        iSelectedMaximumTextLeft = Math.Max(
            iSelectedMaximumTextLeft,
            iAvailableRangeTextLeft + iSelectedMinimumTextWidth
            );

        if (iSelectedMinimumTextRight - iSelectedMinimumTextWidth >=
            iAvailableRangeTextLeft)
        {
            oDrawingObjects.Graphics.DrawString(sSelectedMinimumText,
                oDrawingObjects.Font, SystemBrushes.Highlight,
                iSelectedMinimumTextRight, iTop,
                oDrawingObjects.RightAlignStringFormat);
        }

        if (iSelectedMaximumTextLeft + iSelectedMaximumTextWidth <=
            iAvailableRangeTextRight)
        {
            oDrawingObjects.Graphics.DrawString(sSelectedMaximumText,
                oDrawingObjects.Font, SystemBrushes.Highlight,
                iSelectedMaximumTextLeft, iTop);
        }
    }
    DrawSelectedRangeLine
    (
        DrawingObjects oDrawingObjects,
        IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar,
        Pen oSelectedRangeLinePen,
        Int32 iAvailableRangeLineLeft,
        Int32 iAvailableRangeLineRight,
        out Int32 iSelectedRangeLineLeft,
        out Int32 iSelectedRangeLineRight,
        ref Int32 iTop
    )
    {
        Debug.Assert(oDrawingObjects != null);
        Debug.Assert(oDynamicFilterRangeTrackBar != null);
        Debug.Assert(oSelectedRangeLinePen != null);
        AssertValid();

        iSelectedRangeLineLeft = GetXWithinAvailableLine(
            oDynamicFilterRangeTrackBar.SelectedMinimum,
            oDynamicFilterRangeTrackBar, iAvailableRangeLineLeft,
            iAvailableRangeLineRight);

        iSelectedRangeLineRight = GetXWithinAvailableLine(
            oDynamicFilterRangeTrackBar.SelectedMaximum,
            oDynamicFilterRangeTrackBar, iAvailableRangeLineLeft,
            iAvailableRangeLineRight);

        // Don't let the line have zero width.

        if (iSelectedRangeLineRight == iSelectedRangeLineLeft)
        {
            if (iSelectedRangeLineLeft == iAvailableRangeLineLeft)
            {
                iSelectedRangeLineRight += MinimumSelectedLineWidth;
            }
            else if (iSelectedRangeLineRight == iAvailableRangeLineRight)
            {
                iSelectedRangeLineLeft -= MinimumSelectedLineWidth;
            }
            else
            {
                iSelectedRangeLineLeft -= (MinimumSelectedLineWidth / 2);
                iSelectedRangeLineRight += (MinimumSelectedLineWidth / 2);
            }
        }

        oDrawingObjects.Graphics.DrawLine(oSelectedRangeLinePen,
            iSelectedRangeLineLeft, iTop, iSelectedRangeLineRight, iTop);

        iTop += AvailableLineHeight;
    }
    DrawAvailableRangeText
    (
        DrawingObjects oDrawingObjects,
        IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar,
        ref Int32 iAvailableRangeTextLeft,
        ref Int32 iAvailableRangeTextRight,
        ref Int32 iTop
    )
    {
        Debug.Assert(oDrawingObjects != null);
        Debug.Assert(oDynamicFilterRangeTrackBar != null);
        AssertValid();

        DrawRangeText(oDrawingObjects,

            oDynamicFilterRangeTrackBar.ValueToString(
                oDynamicFilterRangeTrackBar.AvailableMinimum),

            oDynamicFilterRangeTrackBar.ValueToString(
                oDynamicFilterRangeTrackBar.AvailableMaximum),

            SystemBrushes.GrayText, ref iAvailableRangeTextLeft,
            ref iAvailableRangeTextRight, ref iTop
            );

        iTop += oDrawingObjects.GetFontHeightMultiple(0.4F);
    }
    DrawDynamicFilterRangeTrackBar
    (
        DrawingObjects oDrawingObjects,
        IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar,
        Pen oAvailableRangeLinePen,
        Pen oSelectedRangeLinePen,
        Rectangle oColumnRectangle,
        Int32 iTrackBarLeft,
        Int32 iTrackBarRight,
        ref Int32 iTop
    )
    {
        Debug.Assert(oDrawingObjects != null);
        Debug.Assert(oDynamicFilterRangeTrackBar != null);
        Debug.Assert(oAvailableRangeLinePen != null);
        Debug.Assert(oSelectedRangeLinePen != null);

        iTop += oDrawingObjects.GetFontHeightMultiple(0.2F);

        // Draw the text for the available range.

        Int32 iAvailableRangeTextLeft = iTrackBarLeft;
        Int32 iAvailableRangeTextRight = iTrackBarRight;
        Int32 iAvailableRangeTextTop = iTop;

        DrawAvailableRangeText(oDrawingObjects, oDynamicFilterRangeTrackBar,
            ref iAvailableRangeTextLeft, ref iAvailableRangeTextRight,
            ref iTop);

        // Draw the line representing the available range.

        Int32 iLineMargin = oDrawingObjects.GetFontHeightMultiple(0.1F);
        Int32 iAvailableRangeLineLeft = iTrackBarLeft + iLineMargin;
        Int32 iAvailableRangeLineRight = iTrackBarRight - iLineMargin;

        oDrawingObjects.Graphics.DrawLine(oAvailableRangeLinePen,
            iAvailableRangeLineLeft, iTop, iAvailableRangeLineRight, iTop);

        // Draw the line representing the selected range.

        Int32 iSelectedRangeLineLeft, iSelectedRangeLineRight;

        DrawSelectedRangeLine(oDrawingObjects, oDynamicFilterRangeTrackBar,
            oSelectedRangeLinePen, iAvailableRangeLineLeft,
            iAvailableRangeLineRight, out iSelectedRangeLineLeft,
            out iSelectedRangeLineRight, ref iTop);

        // Draw the text for the selected range.

        DrawSelectedRangeText(oDrawingObjects, oDynamicFilterRangeTrackBar,
            iAvailableRangeTextLeft, iAvailableRangeTextRight,
            iSelectedRangeLineLeft, iSelectedRangeLineRight,
            iAvailableRangeTextTop);

        DrawExcelColumnName(oDrawingObjects,
            oDynamicFilterRangeTrackBar.ColumnName, iTrackBarLeft,
            iTrackBarRight, ref iTop);

        // Draw a line separating this track bar from the next.

        DrawHorizontalSeparator(oDrawingObjects, oColumnRectangle, ref iTop);
    }
Пример #9
0
        DrawSelectedRangeText
        (
            DrawingObjects oDrawingObjects,
            IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar,
            Int32 iAvailableRangeTextLeft,
            Int32 iAvailableRangeTextRight,
            Int32 iSelectedRangeLineLeft,
            Int32 iSelectedRangeLineRight,
            Int32 iTop
        )
        {
            Debug.Assert(oDrawingObjects != null);
            Debug.Assert(oDynamicFilterRangeTrackBar != null);
            AssertValid();

            // Measure the minimum and maximum selected values.

            String sSelectedMinimumText =
                oDynamicFilterRangeTrackBar.ValueToString(
                    oDynamicFilterRangeTrackBar.SelectedMinimum);

            Int32 iSelectedMinimumTextWidth = MeasureTextWidth(oDrawingObjects,
                                                               sSelectedMinimumText);

            String sSelectedMaximumText =
                oDynamicFilterRangeTrackBar.ValueToString(
                    oDynamicFilterRangeTrackBar.SelectedMaximum);

            Int32 iSelectedMaximumTextWidth = MeasureTextWidth(
                oDrawingObjects, sSelectedMaximumText);

            // If there is enough room, draw the selected minimum text with its
            // right edge aligned with the left edge of the selected line, and the
            // selected maximum text with its left edge aligned with the right edge
            // of the selected line.  Don't let any text exceed the bounds
            // specified by iAvailableRangeTextLeft and iAvailableRangeTextRight,
            // and don't let the text run into each other.

            Int32 iSelectedMinimumTextRight = Math.Max(
                iSelectedRangeLineLeft,
                iAvailableRangeTextLeft + iSelectedMinimumTextWidth
                );

            iSelectedMinimumTextRight = Math.Min(
                iSelectedMinimumTextRight,
                iAvailableRangeTextRight - iSelectedMaximumTextWidth
                );

            Int32 iSelectedMaximumTextLeft = Math.Min(
                iSelectedRangeLineRight,
                iAvailableRangeTextRight - iSelectedMaximumTextWidth
                );

            iSelectedMaximumTextLeft = Math.Max(
                iSelectedMaximumTextLeft,
                iAvailableRangeTextLeft + iSelectedMinimumTextWidth
                );

            if (iSelectedMinimumTextRight - iSelectedMinimumTextWidth >=
                iAvailableRangeTextLeft)
            {
                oDrawingObjects.Graphics.DrawString(sSelectedMinimumText,
                                                    oDrawingObjects.Font, SystemBrushes.Highlight,
                                                    iSelectedMinimumTextRight, iTop,
                                                    oDrawingObjects.RightAlignStringFormat);
            }

            if (iSelectedMaximumTextLeft + iSelectedMaximumTextWidth <=
                iAvailableRangeTextRight)
            {
                oDrawingObjects.Graphics.DrawString(sSelectedMaximumText,
                                                    oDrawingObjects.Font, SystemBrushes.Highlight,
                                                    iSelectedMaximumTextLeft, iTop);
            }
        }
Пример #10
0
        DrawDynamicFilterRangeTrackBar
        (
            DrawingObjects oDrawingObjects,
            IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar,
            Pen oAvailableRangeLinePen,
            Pen oSelectedRangeLinePen,
            Rectangle oColumnRectangle,
            Int32 iTrackBarLeft,
            Int32 iTrackBarRight,
            ref Int32 iTop
        )
        {
            Debug.Assert(oDrawingObjects != null);
            Debug.Assert(oDynamicFilterRangeTrackBar != null);
            Debug.Assert(oAvailableRangeLinePen != null);
            Debug.Assert(oSelectedRangeLinePen != null);

            iTop += oDrawingObjects.GetFontHeightMultiple(0.2F);

            // Draw the text for the available range.

            Int32 iAvailableRangeTextLeft  = iTrackBarLeft;
            Int32 iAvailableRangeTextRight = iTrackBarRight;
            Int32 iAvailableRangeTextTop   = iTop;

            DrawAvailableRangeText(oDrawingObjects, oDynamicFilterRangeTrackBar,
                                   ref iAvailableRangeTextLeft, ref iAvailableRangeTextRight,
                                   ref iTop);

            // Draw the line representing the available range.

            Int32 iLineMargin              = oDrawingObjects.GetFontHeightMultiple(0.1F);
            Int32 iAvailableRangeLineLeft  = iTrackBarLeft + iLineMargin;
            Int32 iAvailableRangeLineRight = iTrackBarRight - iLineMargin;

            oDrawingObjects.Graphics.DrawLine(oAvailableRangeLinePen,
                                              iAvailableRangeLineLeft, iTop, iAvailableRangeLineRight, iTop);

            // Draw the line representing the selected range.

            Int32 iSelectedRangeLineLeft, iSelectedRangeLineRight;

            DrawSelectedRangeLine(oDrawingObjects, oDynamicFilterRangeTrackBar,
                                  oSelectedRangeLinePen, iAvailableRangeLineLeft,
                                  iAvailableRangeLineRight, out iSelectedRangeLineLeft,
                                  out iSelectedRangeLineRight, ref iTop);

            // Draw the text for the selected range.

            DrawSelectedRangeText(oDrawingObjects, oDynamicFilterRangeTrackBar,
                                  iAvailableRangeTextLeft, iAvailableRangeTextRight,
                                  iSelectedRangeLineLeft, iSelectedRangeLineRight,
                                  iAvailableRangeTextTop);

            DrawExcelColumnName(oDrawingObjects,
                                oDynamicFilterRangeTrackBar.ColumnName, iTrackBarLeft,
                                iTrackBarRight, ref iTop);

            // Draw a line separating this track bar from the next.

            DrawHorizontalSeparator(oDrawingObjects, oColumnRectangle, ref iTop);
        }
Пример #11
0
        //*************************************************************************
        //  Method: OnSelectedRangeChanged()
        //
        /// <summary>
        /// Handles the SelectedRangeChanged event on all the range track bars.
        /// </summary>
        ///
        /// <param name="oDynamicFilterRangeTrackBar">
        /// Range track bar that fired the event.
        /// </param>
        //*************************************************************************
        protected void OnSelectedRangeChanged(
            IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar
            )
        {
            Debug.Assert(oDynamicFilterRangeTrackBar != null);
            AssertValid();

            // Turn off automatic recalculation.  The dynamic filter column in the
            // edge or vertex table needs to be recalculated as the RangeTrackBar
            // is manipulated, but to minimize delays nothing else should be
            // recalculated.

            SetManualCalculation();

            // Update the persisted settings for this RangeTrackBar.  This updates
            // two cells in the dynamic filter settings table.

            String sSelectedMinimumAddress, sSelectedMaximumAddress;

            m_oDynamicFilterSettings.SetSettings(
            oDynamicFilterRangeTrackBar.TableName,
            oDynamicFilterRangeTrackBar.ColumnName,
            oDynamicFilterRangeTrackBar.SelectedMinimum,
            oDynamicFilterRangeTrackBar.SelectedMaximum,
            out sSelectedMinimumAddress, out sSelectedMaximumAddress);

            // Now recalculate just the dynamic filter column.

            DynamicFilterColumns eDynamicFilterColumns = DynamicFilterColumns.None;

            if (oDynamicFilterRangeTrackBar.TableName == TableNames.Edges)
            {
            eDynamicFilterColumns = DynamicFilterColumns.EdgeTable;
            }
            else if (oDynamicFilterRangeTrackBar.TableName == TableNames.Vertices)
            {
            eDynamicFilterColumns = DynamicFilterColumns.VertexTable;
            }
            else
            {
            Debug.Assert(false);
            }

            RecalculateDynamicFilterColumns(eDynamicFilterColumns);

            FireDynamicFilterColumnsChanged(eDynamicFilterColumns);
        }