Package com.google.collide.shared.document

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


     * minimum selection
     */
    ensureMinimumDragSelectionFromCurrentSelection();

    int lineNumber = buffer.convertYToLineNumber(y, true);
    LineInfo newLineInfo =
        document.getLineFinder().findLine(cursorAnchor.getLineInfo(), lineNumber);

    // Only move the cursor
    if (viewport.isLineNumberFullyVisibleInViewport(newLineInfo.number())) {
      moveCursorUsingSelectionGranularity(newLineInfo, x, false);
    }
    manageRepeaterForDrag(x, y);
  }
View Full Code Here


    int roundedTargetColumn = buffer.convertXToRoundedVisibleColumn(x, targetLine);
    // Forward if the cursor anchor will be ahead of the base anchor
    boolean growForward =
        AnchorUtils.compare(baseAnchor, targetLineInfo.number(), roundedTargetColumn) <= 0;

    LineInfo newLineInfo = targetLineInfo;
    int newColumn = roundedTargetColumn;

    switch (selectionGranularity) {
      case WORD:
        if (growForward) {
          /*
           * Floor the column so the last pixel of the last character of the
           * current word does not trigger a finding of the next word
           */
          newColumn =
              TextUtils.findNextWord(
                  targetLine.getText(),
                  buffer.convertXToColumn(x, targetLine, RoundingStrategy.FLOOR), false);
        } else {
          // See note above about flooring, but we ceil here instead
          newColumn =
              TextUtils.findPreviousWord(
                  targetLine.getText(),
                  buffer.convertXToColumn(x, targetLine, RoundingStrategy.CEIL), false);
        }
        break;

      case LINE:
        // The cursor is on column 0 regardless
        newColumn = 0;
        if (growForward) {
          // If growing forward, move to the next line, if possible
          newLineInfo = targetLineInfo.copy();
          if (!newLineInfo.moveToNext()) {
            /*
             * There isn't a next line, so just move the cursor to the end of
             * line
             */
            newColumn = LineUtils.getLastCursorColumn(newLineInfo.line());
          }
        }
        break;
    }

    Position[] oldSelectionRange = getSelectionRangeForCallback();

    newColumn = LineUtils.rubberbandColumn(newLineInfo.line(), newColumn);
    ensureNewSelectionObeysMinimumDragSelection(newLineInfo, newColumn);

    moveCursor(newLineInfo, newColumn, updatePreferredColumn, true, oldSelectionRange);
  }
View Full Code Here

  }

  public void selectAll() {
    Position[] oldSelectionRange = getSelectionRangeForCallback();

    moveAnchor(baseAnchor, new LineInfo(document.getFirstLine(), 0), 0, false);
    moveCursor(new LineInfo(document.getLastLine(), document.getLastLineNumber()),
        LineUtils.getLastCursorColumn(document.getLastLine()), true, true, oldSelectionRange);
  }
View Full Code Here

      // check for movement this frame
      if (deltaY == 0 && deltaX == 0) {
        return false;
      }

      LineInfo cursorLineInfo = cursorAnchor.getLineInfo();
      int cursorColumn = cursorAnchor.getColumn();
      int newScrollTop = buffer.getScrollTop() + deltaY;

      if (deltaY != 0) {
        int targetCursorY = deltaY < 0 ? newScrollTop : newScrollTop + buffer.getHeight();
        int cursorLineNumber = buffer.convertYToLineNumber(targetCursorY, true);
        int actualCursorTop = buffer.convertLineNumberToY(cursorLineNumber);
        if (deltaY < 0 && actualCursorTop < newScrollTop && cursorLineNumber > 0) {
          /*
           * The current line is partially visible, increment so we get a fully
           * visible line
           */
          cursorLineNumber++;
        } else if (deltaY > 0 && cursorLineNumber < document.getLastLineNumber()) {
          // See above
          cursorLineNumber--;
        }

        cursorLineInfo = document.getLineFinder().findLine(cursorLineNumber);
      }

      if (deltaX != 0) {
        int targetCursorX =
            buffer.calculateColumnLeft(cursorLineInfo.line(), cursorAnchor.getColumn()) + deltaX;
        cursorColumn = buffer.convertXToRoundedVisibleColumn(targetCursorX, cursorLineInfo.line());
      }

      buffer.setScrollTop(newScrollTop);
      if (viewport.isLineNumberFullyVisibleInViewport(cursorLineInfo.number())) {
        // Only move cursor if the target line is visible inside of viewport
        moveCursorUsingSelectionGranularity(
            cursorLineInfo, buffer.convertColumnToX(cursorLineInfo.line(), cursorColumn), false);
      }

      return true;
    }
View Full Code Here

  public Line getLine() {
    return line;
  }

  public LineInfo getLineInfo() {
    return new LineInfo(line, lineNumber);
  }
View Full Code Here

    Preconditions.checkArgument(end.isAttached(), "end must be attached");
    Preconditions.checkArgument(
        begin.getLineNumber() <= end.getLineNumber(), "begin line below end line");

    // TODO: Fix same-line text replacement.
    LineInfo topLineInfo = begin.getLineInfo();
    Line topLine = topLineInfo.line();
    Line bottomLine = end.getLine();

    /*
     * At the very end of the document, the text being inserted will have a
     * trailing "\n" that needs to be deleted to avoid an empty line at the
     * end.
     */
    boolean deleteEndingNewline = !bottomLine.getText().endsWith("\n");
    if (!text.endsWith("\n")) {
      text = text + "\n";
    }
    // Delete all of the existing text, minus the last newline.
    int deleteCount =
        LineUtils.getTextCount(topLine, 0, bottomLine, bottomLine.getText().length() -
          (deleteEndingNewline ? 0 : 1));

    documentMutator.insertText(topLine, topLineInfo.number(), 0, text, false);
    Position endOfInsertion =
        PositionUtils.getPosition(topLine, topLineInfo.number(), 0, text.length() - 1);
    documentMutator.deleteText(endOfInsertion.getLine(), endOfInsertion.getColumn(), deleteCount);
  }
View Full Code Here

    // TODO: Fix scroller appearing in front of cursor if snippet is too long.
    String tooltipContent = JsoArray.from(
        StringUtils.ensureNotEmpty(reference.getTargetName(), ""),
        StringUtils.ensureNotEmpty(reference.getSnippet(), "")).join("\n");
    snippetPopupRenderer.setContent(tooltipContent);
    LineInfo lineInfo = editor.getDocument().getLineFinder().findLine(reference.getLineNumber());
    popupRemover = popupController.showPopup(lineInfo, reference.getStartColumn(),
        reference.getEndColumn(), null, snippetPopupRenderer, null, VerticalAlign.TOP,
        false /* shouldCaptureOutsideClickOnClose */, POPUP_DELAY_MS);
  }
View Full Code Here

  }

  @Override
  public void onParseLine(Line line, int lineNumber, JsonArray<Token> tokens) {
    ParseResult<XmlState> parserState =
        parser.getState(XmlState.class, new Position(new LineInfo(line, lineNumber), 0), null);
    if (parserState != null && parserState.getState() != null
        && parserState.getState().getContext() != null
        && "a".equalsIgnoreCase(parserState.getState().getContext().getTagName())) {
      inAnchorTag = true;
    }
View Full Code Here

  public void testStartingAtLineWorks() {
    ViewportModel viewport = createMockViewport(document, 5);
    SearchTask task = new SearchTask(document, viewport, scheduler);

    LineInfo lineInfo = viewport.getTopLineInfo();
    lineInfo.moveToNext();

    SearchTaskExecutor executor = EasyMock.createMock(SearchTaskExecutor.class);
    expect(executor.onSearchLine(lineInfo.line(), 1, true)).andReturn(true);
    expect(
        executor.onSearchLine(EasyMock.anyObject(Line.class), EasyMock.anyInt(), EasyMock.eq(true)))
        .andReturn(true).times(2);
    expect(executor.onSearchLine(viewport.getBottomLine(), 4, true)).andReturn(true);
View Full Code Here

    Resources mockResources = createMockResource();
    SearchMatchRenderer renderer = new SearchMatchRenderer(mockResources, mockSearchModel);
   
    // Now ask it about each line in our document and check to see if its right
    Document doc = SearchTestsUtil.createDocument();
    LineInfo lineInfo = doc.getFirstLineInfo();
    for (int i = 0; i < 6; i++) {
      assertFalse(renderer.resetToBeginningOfLine(lineInfo.line(), lineInfo.number()));
      lineInfo.moveToNext();
    }
   
    // Check that this line is parsed correctly
    ImmutableList<Integer> lengthList = ImmutableList.of(41, 4);
    Target mockTarget = createMockTarget(lengthList, false);
    assertTrue(renderer.resetToBeginningOfLine(lineInfo.line(), lineInfo.number()));
    for (int i = 0; i < lengthList.size(); i++) {
      renderer.renderNextChunk(mockTarget);
    }
    lineInfo.moveToNext();
    verify(mockTarget);
   
    assertFalse(renderer.resetToBeginningOfLine(lineInfo.line(), lineInfo.number()));
    lineInfo.moveToNext();
   
    // The next fun line
    lengthList = ImmutableList.of(4,1,4,4,4,1,4,1,4,3,4,1,4);
    mockTarget = createMockTarget(lengthList, true);
    assertTrue(renderer.resetToBeginningOfLine(lineInfo.line(), lineInfo.number()));
    for (int i = 0; i < lengthList.size(); i++) {
      renderer.renderNextChunk(mockTarget);
    }
    lineInfo.moveToNext();
    verify(mockTarget);
   
    assertFalse(renderer.resetToBeginningOfLine(lineInfo.line(), lineInfo.number()));
    lineInfo.moveToNext();
    assertFalse(renderer.resetToBeginningOfLine(lineInfo.line(), lineInfo.number()));
  }
View Full Code Here

TOP

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

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.