コード例 #1
0
        public void SetExtension(ExtensionDirection i)
        {
            Extension = i;
            switch (i)
            {
            case ExtensionDirection.None:
            {
                Limleft  = 0;
                Limright = 1;
                break;
            }

            case ExtensionDirection.Left:
            {
                Limleft  = -ExtensionRatio;
                Limright = 1;
                break;
            }

            case ExtensionDirection.Right:
            {
                Limleft  = 0;
                Limright = 1 + ExtensionRatio;
                break;
            }

            case ExtensionDirection.Both:
            {
                Limleft  = -ExtensionRatio;
                Limright = 1 + ExtensionRatio;
                break;
            }
            }
        }
コード例 #2
0
        public void RemoveExtension(ExtensionDirection i)
        {
            switch (Extension)
            {
            case ExtensionDirection.Left:
                if (i == ExtensionDirection.Left)
                {
                    SetExtension(ExtensionDirection.None);
                }
                break;

            case ExtensionDirection.Right:
                if (i == ExtensionDirection.Right)
                {
                    SetExtension(ExtensionDirection.None);
                }
                break;

            case ExtensionDirection.Both:
                if (i == ExtensionDirection.Left)
                {
                    SetExtension(ExtensionDirection.Right);
                }
                else if (i == ExtensionDirection.Right)
                {
                    SetExtension(ExtensionDirection.Left);
                }
                else
                {
                    SetExtension(ExtensionDirection.None);
                }
                break;
            }
        }
コード例 #3
0
        private ExtensionDirection GetExtensionDirection()
        {
            bool searching = true;
            ExtensionDirection direction = ExtensionDirection.None;

            if (Offset != 0)
            {
                itsOffset++;
            }
            itsEndOffset--;

            do
            {
                if (MoveLeft() && IsLeftBlockChar(itsDocument.GetCharAt(Offset)))
                {
                    direction = ExtensionDirection.Right;
                    searching = false;
                }
                else if (MoveRight() && IsRightBlockChar(itsDocument.GetCharAt(EndOffset)))
                {
                    if (EndOffset == (itsDocument.TextLength - 1))
                    {
                        direction = ExtensionDirection.None;
                    }
                    else
                    {
                        direction = ExtensionDirection.Left;
                    }
                    searching = false;
                }

                if (searching)
                {
                    if (itsDocument.GetCharAt(Offset) == '\n')
                    {
                        direction = ExtensionDirection.Right;
                    }

                    if (itsDocument.GetCharAt(EndOffset) == '\n')
                    {
                        direction = ExtensionDirection.Left;
                    }

                    if (direction != ExtensionDirection.None)
                    {
                        searching = false;
                    }
                }
            } while (searching);

            return(direction);
        }
コード例 #4
0
        public void AddExtension(ExtensionDirection i)
        {
            switch (Extension)
            {
            case ExtensionDirection.Left:
                if (i == ExtensionDirection.Right)
                {
                    i = ExtensionDirection.Both;
                }
                break;

            case ExtensionDirection.Right:
                if (i == ExtensionDirection.Left)
                {
                    i = ExtensionDirection.Both;
                }
                break;
            }
            SetExtension(i);
        }
コード例 #5
0
        private void ExtendBlock()
        {
            ExtensionDirection direction = GetExtensionDirection();

            if (direction == ExtensionDirection.Right)
            {
                ExtendSelectionRight();
            }


            if (direction == ExtensionDirection.Left)
            {
                ExtendSelectionLeft();
            }


            /*
             *  //TODO direction search
             *  if (direction == ExtensionDirection.None)
             *      System.Diagnostics.Debug.WriteLine("None direction");
             */
        }