Exemple #1
0
        public override void onKeyDown(object sender, KeyboardKeyEventArgs e)
        {
            //base.onKeyDown (sender, e);

            Key key = e.Key;

            switch (key)
            {
            case Key.Back:
                buffer.DeleteChar();
                break;

            case Key.Clear:
                break;

            case Key.Delete:
                if (buffer.SelectionIsEmpty)
                {
                    MoveRight();
                }
                else if (e.Shift)
                {
                    CurrentInterface.Clipboard = buffer.SelectedText;
                }
                buffer.DeleteChar();
                break;

            case Key.Enter:
            case Key.KeypadEnter:
                if (!buffer.SelectionIsEmpty)
                {
                    buffer.DeleteChar();
                }
                buffer.InsertLineBreak();
                break;

            case Key.Escape:
                buffer.ResetSelection();
                break;

            case Key.Home:
                if (e.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    if (e.Control)
                    {
                        buffer.CurrentLine = 0;
                    }
                    buffer.CurrentColumn = 0;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                if (e.Control)
                {
                    buffer.CurrentLine = 0;
                }
                buffer.CurrentColumn = 0;
                break;

            case Key.End:
                if (e.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    if (e.Control)
                    {
                        buffer.CurrentLine = int.MaxValue;
                    }
                    buffer.CurrentColumn = int.MaxValue;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                if (e.Control)
                {
                    buffer.CurrentLine = int.MaxValue;
                }
                buffer.CurrentColumn = int.MaxValue;
                break;

            case Key.Insert:
                if (e.Shift)
                {
                    buffer.Insert(CurrentInterface.Clipboard);
                }
                else if (e.Control && !buffer.SelectionIsEmpty)
                {
                    CurrentInterface.Clipboard = buffer.SelectedText;
                }
                break;

            case Key.Left:
                if (e.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    if (e.Control)
                    {
                        buffer.GotoWordStart();
                    }
                    else
                    {
                        MoveLeft();
                    }
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                if (e.Control)
                {
                    buffer.GotoWordStart();
                }
                else
                {
                    MoveLeft();
                }
                break;

            case Key.Right:
                if (e.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    if (e.Control)
                    {
                        buffer.GotoWordEnd();
                    }
                    else
                    {
                        MoveRight();
                    }
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                if (e.Control)
                {
                    buffer.GotoWordEnd();
                }
                else
                {
                    MoveRight();
                }
                break;

            case Key.Up:
                if (e.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    PrintedCurrentLine--;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                PrintedCurrentLine--;
                break;

            case Key.Down:
                if (e.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    PrintedCurrentLine++;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                PrintedCurrentLine++;
                break;

            case Key.Menu:
                break;

            case Key.NumLock:
                break;

            case Key.PageDown:
                if (e.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    PrintedCurrentLine += visibleLines;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                PrintedCurrentLine += visibleLines;
                break;

            case Key.PageUp:
                if (e.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    PrintedCurrentLine -= visibleLines;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                PrintedCurrentLine -= visibleLines;
                break;

            case Key.RWin:
                break;

            case Key.Tab:
                buffer.Insert("\t");
                break;

            case Key.F8:
                toogleFolding(buffer.CurrentLine);
//				if (parser != null)
//					reparseSource ();
                break;

            default:
                break;
            }
            RegisterForGraphicUpdate();
        }
Exemple #2
0
        public override void onKeyDown(object sender, KeyEventArgs e)
        {
            //base.onKeyDown (sender, e);

            Key key = e.Key;

            if (IFace.Ctrl)
            {
                switch (key)
                {
                case Key.S:
                    projFile.Save();
                    break;

                case Key.Z:
                    editorMutex.EnterWriteLock();
                    if (IFace.Shift)
                    {
                        projFile.Redo(null);
                    }
                    else
                    {
                        projFile.Undo(null);
                    }
                    editorMutex.ExitWriteLock();
                    break;

                default:
                    Console.WriteLine("");
                    break;
                }
            }

            switch (key)
            {
            case Key.Backspace:
                buffer.DeleteChar();
                break;

            case Key.Delete:
                if (buffer.SelectionIsEmpty)
                {
                    MoveRight();
                }
                else if (IFace.Shift)
                {
                    IFace.Clipboard = buffer.SelectedText;
                }
                buffer.DeleteChar();
                break;

            case Key.Enter:
            case Key.KeypadEnter:
                if (!buffer.SelectionIsEmpty)
                {
                    buffer.DeleteChar();
                }
                buffer.InsertLineBreak();
                break;

            case Key.Escape:
                buffer.ResetSelection();
                break;

            case Key.Home:
                if (IFace.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    if (IFace.Ctrl)
                    {
                        buffer.CurrentLine = 0;
                    }
                    buffer.CurrentColumn = 0;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                if (IFace.Ctrl)
                {
                    buffer.CurrentLine = 0;
                }
                buffer.CurrentColumn = 0;
                break;

            case Key.End:
                if (IFace.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    if (IFace.Ctrl)
                    {
                        buffer.CurrentLine = int.MaxValue;
                    }
                    buffer.CurrentColumn = int.MaxValue;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                if (IFace.Ctrl)
                {
                    buffer.CurrentLine = int.MaxValue;
                }
                buffer.CurrentColumn = int.MaxValue;
                break;

            case Key.Insert:
                if (IFace.Shift)
                {
                    buffer.Insert(IFace.Clipboard);
                }
                else if (IFace.Ctrl && !buffer.SelectionIsEmpty)
                {
                    IFace.Clipboard = buffer.SelectedText;
                }
                break;

            case Key.Left:
                if (IFace.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    if (IFace.Ctrl)
                    {
                        buffer.GotoWordStart();
                    }
                    else
                    {
                        MoveLeft();
                    }
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                if (IFace.Ctrl)
                {
                    buffer.GotoWordStart();
                }
                else
                {
                    MoveLeft();
                }
                break;

            case Key.Right:
                if (IFace.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    if (IFace.Ctrl)
                    {
                        buffer.GotoWordEnd();
                    }
                    else
                    {
                        MoveRight();
                    }
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                if (IFace.Ctrl)
                {
                    buffer.GotoWordEnd();
                }
                else
                {
                    MoveRight();
                }
                break;

            case Key.Up:
                if (IFace.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    PrintedCurrentLine--;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                PrintedCurrentLine--;
                break;

            case Key.Down:
                if (IFace.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    PrintedCurrentLine++;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                PrintedCurrentLine++;
                break;

            case Key.Menu:
                break;

            case Key.PageDown:
                if (IFace.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    PrintedCurrentLine += visibleLines;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                PrintedCurrentLine += visibleLines;
                break;

            case Key.PageUp:
                if (IFace.Shift)
                {
                    if (buffer.SelectionIsEmpty)
                    {
                        buffer.SetSelStartPos();
                    }
                    PrintedCurrentLine -= visibleLines;
                    buffer.SetSelEndPos();
                    break;
                }
                buffer.ResetSelection();
                PrintedCurrentLine -= visibleLines;
                break;

            case Key.Tab:
                if (IFace.Shift)
                {
                    if (buffer.SelectionIsEmpty ||
                        (buffer.SelectionStart.Y == buffer.SelectionEnd.Y))
                    {
                        //TODO
                        break;
                    }
                    for (int i = buffer.SelectionStart.Y; i <= buffer.SelectionEnd.Y; i++)
                    {
                        buffer.RemoveLeadingTab(i);
                    }
                    buffer.SetSelectionOnFullLines();
                }
                else
                {
                    if (buffer.SelectionIsEmpty ||
                        (buffer.SelectionStart.Y == buffer.SelectionEnd.Y))
                    {
                        buffer.Insert("\t");
                        break;
                    }
                    for (int i = buffer.SelectionStart.Y; i <= buffer.SelectionEnd.Y; i++)
                    {
                        buffer.UpdateLine(i, "\t" + buffer [i].Content);
                    }
                }

                break;

            case Key.F8:
                toogleFolding(buffer.CurrentLine);
                break;

            default:
                break;
            }
            RegisterForGraphicUpdate();
        }