Package com.google.collide.shared.document

Examples of com.google.collide.shared.document.Line


      Position[] selectionRange = selection.getSelectionRange(true);
      /*
       * TODO: this isn't going to scale for document-sized
       * selections, need to change some APIs
       */
      Line beginLine = selectionRange[0].getLine();
      int beginLineNumber = selectionRange[0].getLineNumber();
      int beginColumn = selectionRange[0].getColumn();
      String textToDelete =
          LineUtils.getText(beginLine, beginColumn,
              selectionRange[1].getLine(), selectionRange[1].getColumn());
View Full Code Here


    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, 'O') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        SelectionModel selectionModel = getInputController().getEditor().getSelection();
        Document document = getInputController().getEditor().getDocument();
        Line cursorLine = selectionModel.getCursorLine();
        int cursorLineNumber = selectionModel.getCursorLineNumber();
        document.insertText(cursorLine, 0, "\n");
        selectionModel.setCursorPosition(new LineInfo(cursorLine, cursorLineNumber), 0);
        switchMode(Modes.INSERT);
        return true;
      }
    });

    /*
     * o - Insert line below, enter insert mode.
     */
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, 'o') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        SelectionModel selectionModel = getInputController().getEditor().getSelection();
        Document document = getInputController().getEditor().getDocument();
        Line cursorLine = selectionModel.getCursorLine();
        int cursorLineNumber = selectionModel.getCursorLineNumber();
        document.insertText(cursorLine, LineUtils.getLastCursorColumn(cursorLine), "\n");
        selectionModel.setCursorPosition(new LineInfo(cursorLine.getNextLine(),
            cursorLineNumber + 1), 0);
        switchMode(Modes.INSERT);
        return true;
      }
    });

    /*
     * : - Switch to colon capture mode for commands.
     */
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, ':') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        switchMode(Modes.COMMAND_CAPTURE);
        return true;
      }
    });

    /*
     * "/" - Switch to search mode.
     */
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, '/') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        switchMode(Modes.SEARCH_CAPTURE);
        return true;
      }
    });

    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, '*') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        SelectionModel selectionModel = getInputController().getEditor().getSelection();
        String word =
            TextUtils.getWordAtColumn(selectionModel.getCursorLine().getText(),
                selectionModel.getCursorColumn());
        if (word == null) {
          return true;
        }
        switchMode(Modes.SEARCH_CAPTURE);
        searchTerm.append(word);
        doPartialSearch();
        drawSearchTerm();
        return true;
      }
    });

    /*
     * Movement
     */
    /*
     * ^,0 - Move to first character in line.
     */
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, '^') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        SelectionModel selectionModel = getInputController().getEditor().getSelection();
        LineInfo cursorLineInfo =
            new LineInfo(selectionModel.getCursorLine(), selectionModel.getCursorLineNumber());
        selectionModel.setCursorPosition(cursorLineInfo, 0);
        return true;
      }
    });
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, '0') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        if (tryAddNumericPrefix('0')) {
          return true;
        }
        SelectionModel selectionModel = getInputController().getEditor().getSelection();
        LineInfo cursorLineInfo =
            new LineInfo(selectionModel.getCursorLine(), selectionModel.getCursorLineNumber());
        selectionModel.setCursorPosition(cursorLineInfo, 0);
        return true;
      }
    });

    /*
     * $ - Move to end of line.
     */
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, '$') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        SelectionModel selectionModel = getInputController().getEditor().getSelection();
        Line cursorLine = selectionModel.getCursorLine();
        LineInfo cursorLineInfo = new LineInfo(cursorLine, selectionModel.getCursorLineNumber());
        selectionModel.setCursorPosition(cursorLineInfo, LineUtils.getLastCursorColumn(cursorLine));
        return true;
      }
    });

    /*
     * w - move the cursor to the first character of the next word.
     */
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, 'w') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        SelectionModel selectionModel = getInputController().getSelection();
        LineInfo cursorLineInfo =
            new LineInfo(selectionModel.getCursorLine(), selectionModel.getCursorLineNumber());
        String text = selectionModel.getCursorLine().getText();
        int column = selectionModel.getCursorColumn();
        column = TextUtils.moveByWord(text, column, true, false);
        if (column == -1) {
          Line cursorLine = cursorLineInfo.line().getNextLine();
          if (cursorLine != null) {
            cursorLineInfo = new LineInfo(cursorLine, cursorLineInfo.number() + 1);
            column = 0;
          } else {
            column = LineUtils.getLastCursorColumn(cursorLine); // at last character
                                                          // in document
          }
        }

        selectionModel.setCursorPosition(cursorLineInfo, column);
        return true;
      }
    });

    /*
     * b - move the cursor to the first character of the previous word.
     */
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, 'b') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        SelectionModel selectionModel = getInputController().getSelection();
        LineInfo cursorLineInfo =
            new LineInfo(selectionModel.getCursorLine(), selectionModel.getCursorLineNumber());
        String text = selectionModel.getCursorLine().getText();
        int column = selectionModel.getCursorColumn();
        column = TextUtils.moveByWord(text, column, false, false);
        if (column == -1) {
          Line cursorLine = cursorLineInfo.line().getPreviousLine();
          if (cursorLine != null) {
            cursorLineInfo = new LineInfo(cursorLine, cursorLineInfo.number() - 1);
            column = LineUtils.getLastCursorColumn(cursorLine);
          } else {
            column = 0; // at first character in document
          }
        }

        selectionModel.setCursorPosition(cursorLineInfo, column);
        return true;
      }
    });

    /*
     * e - move the cursor to the last character of the next word.
     */
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, 'e') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        SelectionModel selectionModel = getInputController().getSelection();
        LineInfo cursorLineInfo =
            new LineInfo(selectionModel.getCursorLine(), selectionModel.getCursorLineNumber());
        String text = selectionModel.getCursorLine().getText();
        int column = selectionModel.getCursorColumn();
        column = TextUtils.moveByWord(text, column, true, true);
        if (column == -1) {
          Line cursorLine = cursorLineInfo.line().getNextLine();
          if (cursorLine != null) {
            cursorLineInfo = new LineInfo(cursorLine, cursorLineInfo.number() + 1);
            column = 0;
          } else {
            // at the last character in the document
            column = LineUtils.getLastCursorColumn(cursorLine);
          }
        }

        selectionModel.setCursorPosition(cursorLineInfo, column);
        return true;
      }
    });

    /*
     * % - jump to the next matching {}, [] or () character if the cursor is
     * over one of the two.
     */
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, '%') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        final SelectionModel selectionModel = getInputController().getSelection();
        Document document = getInputController().getEditor().getDocument();
        LineInfo cursorLineInfo =
            new LineInfo(selectionModel.getCursorLine(), selectionModel.getCursorLineNumber());
        String text = selectionModel.getCursorLine().getText();
        final char cursorChar = text.charAt(selectionModel.getCursorColumn());
        final char searchChar;
        final boolean searchingForward = OPENING_GROUPS.indexOf(cursorChar) >= 0;
        final Position searchingTo;
        if (searchingForward) {
          searchChar = CLOSING_GROUPS.charAt(OPENING_GROUPS.indexOf(cursorChar));
          searchingTo =
              new Position(new LineInfo(document.getLastLine(), document.getLastLineNumber()),
                  document.getLastLine().length());
        } else if (CLOSING_GROUPS.indexOf(cursorChar) >= 0) {
          searchChar = OPENING_GROUPS.charAt(CLOSING_GROUPS.indexOf(cursorChar));
          searchingTo = new Position(new LineInfo(document.getFirstLine(), 0), 0);
        } else {
          return true; // not on a valid starting character
        }


        Position startingPosition = new Position(cursorLineInfo, selectionModel.getCursorColumn()
            + (searchingForward ? 0 : 1));
        PositionUtils.visit(new LineUtils.LineVisitor() {
          // keep a stack to match the correct corresponding bracket
          ScopeMatcher scopeMatcher = new ScopeMatcher(searchingForward, cursorChar, searchChar);
          @Override
          public boolean accept(Line line, int lineNumber, int beginColumn, int endColumn) {
            int column;
            String text = line.getText().substring(beginColumn, endColumn);
            column = scopeMatcher.searchNextLine(text);
            if (column >= 0) {
              selectionModel
                  .setCursorPosition(new LineInfo(line, lineNumber), column + beginColumn);
              return false;
            }
            return true;
          }
        }, startingPosition, searchingTo);
        return true;
      }
    });

    /*
     * } - next paragraph.
     */
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, '}') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        SelectionModel selectionModel = getInputController().getSelection();
        LineInfo cursorLineInfo =
            new LineInfo(selectionModel.getCursorLine(), selectionModel.getCursorLineNumber());
        int lineNumber = cursorLineInfo.number();
        boolean skippingEmptyLines = true;
        Line line;
        for (line = cursorLineInfo.line(); line.getNextLine() != null; line = line.getNextLine(),
            lineNumber++) {
          String text = line.getText();
          text = text.substring(0, text.length() - (text.endsWith("\n") ? 1 : 0));
          boolean isEmptyLine = text.trim().length() > 0;
          if (skippingEmptyLines) {
            // check if this line is empty
            if (isEmptyLine) {
              skippingEmptyLines = false; // non-empty line
            }
          } else {
            // check if this line is not empty
            if (!isEmptyLine) {
              break;
            }
          }
        }
        selectionModel.setCursorPosition(new LineInfo(line, lineNumber), 0);
        return true;
      }
    });

    /*
     * TODO: merge both paragraph searching blocks together.
     */
    /*
     * { - previous paragraph.
     */
    commandMode.addShortcut(new EventShortcut(ModifierKeys.NONE, '{') {
      @Override
      public boolean event(InputScheme scheme, SignalEvent event) {
        SelectionModel selectionModel = getInputController().getSelection();
        LineInfo cursorLineInfo =
            new LineInfo(selectionModel.getCursorLine(), selectionModel.getCursorLineNumber());
        int lineNumber = cursorLineInfo.number();
        boolean skippingEmptyLines = true;
        Line line;
        for (line = cursorLineInfo.line(); line.getPreviousLine() != null; line =
            line.getPreviousLine(), lineNumber--) {
          String text = line.getText();
          text = text.substring(0, text.length() - (text.endsWith("\n") ? 1 : 0));
          if (skippingEmptyLines) {
            // check if this line is empty
            if (text.trim().length() > 0) {
              skippingEmptyLines = false; // non-empty line
View Full Code Here

    // Create a retain, if required
    int remainingRetainCount;
    int numNewlines = lineTexts.size() - 1;
    if (textChange.getType() == TextChange.Type.INSERT) {
      Line lastModifiedLine = LineUtils.getLine(textChange.getLine(), numNewlines);

      remainingRetainCount = lastModifiedLine.getText().length() - lastLineText.length();

      if (numNewlines == 0) {
        remainingRetainCount -= column;
      }
    } else { // DELETE
View Full Code Here

  }

  private void selectNextNLines(int numLines) {
    SelectionModel selectionModel = getInputController().getEditor().getSelection();
    Document document = getInputController().getEditor().getDocument();
    Line cursorLine = selectionModel.getCursorLine();
    int cursorLineNumber = selectionModel.getCursorLineNumber();
    LineInfo cursorLineInfo = new LineInfo(cursorLine, cursorLineNumber);
    LineInfo endLineInfo;
    if (cursorLineNumber + numLines > document.getLastLineNumber()) {
      endLineInfo = new LineInfo(document.getLastLine(), document.getLastLineNumber());
    } else {
      endLineInfo =
          cursorLine.getDocument().getLineFinder()
              .findLine(cursorLineInfo, cursorLineNumber + numLines);
    }

    selectionModel.setSelection(cursorLineInfo, 0, endLineInfo, 0);
  }
View Full Code Here

        targetLineInfo = new LineInfo(document.getFirstLine(), 0);
      } else {
        targetLineInfo = new LineInfo(document.getLastLine(), document.getLastLineNumber());
      }
    } else {
      Line cursorLine = selectionModel.getCursorLine();
      int cursorLineNumber = selectionModel.getCursorLineNumber();
      LineInfo cursorLineInfo = new LineInfo(cursorLine, cursorLineNumber);
      targetLineInfo =
          cursorLine.getDocument().getLineFinder().findLine(cursorLineInfo, lineNumber - 1);
    }
    selectionModel.setCursorPosition(targetLineInfo, 0);
  }
View Full Code Here

  }

  private void handlePaste(String text, boolean isPasteAfter) {
    SelectionModel selection = getInputController().getSelection();
    int lineNumber = selection.getCursorLineNumber();
    Line line = selection.getCursorLine();
    if (isLineCopy) {
      // multi-line paste, insert on new line above or below
      if (!isPasteAfter) {
        // insert text before the cursor line
        getInputController().getEditorDocumentMutator().insertText(line, lineNumber, 0, text);
View Full Code Here

    searchTaskHandler.setOldSearchPattern(searchPattern);
    searchPattern = RegExpUtils.createRegExpForWildcardPattern(query, regExpOptions);
   
    // setSearchPattern automatically clears any match data
    matchManager.setSearchPattern(searchPattern);
    Line line = selectionModel.getCursorLine();
    int lineNumber = selectionModel.getCursorLineNumber();
    searchTask.searchDocument(searchTaskHandler, progressListener, new LineInfo(line, lineNumber));
  }
View Full Code Here

  void processLines(DocumentMutator documentMutator, SelectionModel selection) {
    boolean moveDown = !selection.hasSelection();
    Position[] selectionRange = selection.getSelectionRange(false);
    int initialColumn = selectionRange[0].getColumn();
    Line terminator = selectionRange[1].getLine();
    if (selectionRange[1].getColumn() != 0 || !selection.hasSelection()) {
      terminator = terminator.getNextLine();
    }

    int lineNumber = selectionRange[0].getLineNumber();
    Line current = selectionRange[0].getLine();

    if (canUncommentAll(current, terminator)) {
      int headLength = commentHead.length();
      while (current != terminator) {
        int pos = current.getText().indexOf(commentHead);
        documentMutator.deleteText(current, lineNumber, pos, headLength);
        lineNumber++;
        current = current.getNextLine();
      }
    } else {
      while (current != terminator) {
        documentMutator.insertText(current, lineNumber, 0, commentHead, false);
        lineNumber++;
        current = current.getNextLine();
      }
    }

    if (moveDown) {
      moveCursorDown(selection, initialColumn);
View Full Code Here

   * commented.
   *
   * @param end {@code null} to check to document end
   */
  private boolean canUncommentAll(Line begin, Line end) {
    Line current = begin;
    while (current != end) {
      Preconditions.checkNotNull(current, "hasn't met terminator before document end");
      if (!commentChecker.test(current.getText())) {
        return false;
      }

      current = current.getNextLine();
    }
    return true;
  }
View Full Code Here

    }
    return true;
  }

  private void moveCursorDown(SelectionModel selection, int initialColumn) {
    Line line = selection.getCursorLine().getNextLine();
    if (line == null) {
      return;
    }
    int lineNumber = selection.getCursorLineNumber() + 1;

    String text = line.getText();
    int lineLength = text.length();
    if (text.endsWith("\n")) {
      lineLength--;
    }
    int column = Math.min(initialColumn, lineLength);
View Full Code Here

TOP

Related Classes of com.google.collide.shared.document.Line

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.