Package com.google.collide.shared.document

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


   * @param chunkType the type of the diff chunk
   * @param chunkText the contents of the diff chunk
   */
  void addDiffChunk(DiffChunkResponse.DiffType chunkType, String chunkText) {
    if (!chunkText.isEmpty()) {
      Line lastLine = document.getLastLine();
      int lastColumn = lastLine.getText().length();

      document.insertText(lastLine, document.getLastLineNumber(), lastColumn, chunkText);
      Anchor anchor = document.getAnchorManager().createAnchor(
          DIFF_CHUNK_ANCHOR_TYPE, lastLine, AnchorManager.IGNORE_LINE_NUMBER, lastColumn);
      anchor.setValue(chunkStyles.get(chunkType.toString()));
View Full Code Here


    }
  };

  @Nonnull
  public static TaggableLine getPreviousLine(@Nonnull Line line) {
    Line previousLine = line.getPreviousLine();

    if (previousLine != null) {
      return previousLine;
    } else {
      return NULL_PREVIOUS_LINE;
View Full Code Here

  private class TextListenerImpl implements Document.TextListener, AnchorManager.AnchorVisitor {
    @Override
    public void onTextChange(Document document, JsonArray<TextChange> textChanges) {
      for (int i = 0, n = textChanges.size(); i < n; ++i) {
        TextChange textChange = textChanges.get(i);
        Line line = textChange.getLine();
        Line stopAtLine = textChange.getEndLine().getNextLine();
        while (line != stopAtLine) {
          AnchorUtils.visitAnchorsOnLine(line, this);
          line = line.getNextLine();
        }
      }
View Full Code Here

  @Override
  public ExplicitAction getExplicitAction(SelectionModel selectionModel,
      SignalEventEssence signal, boolean popupIsShown) {
    Position cursor = selectionModel.getCursorPosition();
    int cursorColumn = cursor.getColumn();
    Line cursorLine = cursor.getLine();
    String mode = getModeForColumn(cursorLine, cursorColumn);

    if (cssAutocompleter != null && CodeMirror2.CSS.equals(mode)) {
      return cssAutocompleter.getExplicitAction(selectionModel, signal, popupIsShown);
    } else if (jsAutocompleter != null && CodeMirror2.JAVASCRIPT.equals(mode)) {
      return jsAutocompleter.getExplicitAction(selectionModel, signal, popupIsShown);
    } else if (mode == null) {
      // This is possible if line is new and hasn't been processed yet.
      // We prefer to avoid annoying autocompletions.
      return ExplicitAction.DEFAULT;
    }

    char signalChar = signal.getChar();
    if (signalChar == '/') {
      if (selectionModel.hasSelection()) {
        return ExplicitAction.DEFAULT;
      }
      if (cursorColumn == 0 || '<' != cursorLine.getText().charAt(cursorColumn - 1)) {
        return ExplicitAction.DEFAULT;
      }
      ParseResult<HtmlState> parseResult = getParser().getState(HtmlState.class, cursor, null);
      if (parseResult != null) {
        XmlState xmlState = parseResult.getState().getXmlState();
View Full Code Here

  public AutocompleteProposals findAutocompletions(
      SelectionModel selection, SignalEventEssence trigger) {
    resetDirtyScope();

    Position cursor = selection.getCursorPosition();
    final Line line = cursor.getLine();
    final int column = cursor.getColumn();

    DocumentParser parser = getParser();
    JsonArray<Token> tokens = parser.parseLineSync(line);
    if (tokens == null) {
      // This line has never been parsed yet. No variants.
      return AutocompleteProposals.EMPTY;
    }

    // We do not ruin parse results for "clean" lines.
    if (parser.isLineDirty(cursor.getLineNumber())) {
      // But "processing" of "dirty" line is harmless.
      XmlCodeAnalyzer.processLine(TaggableLineUtil.getPreviousLine(line), line, tokens);
    }
    String initialMode = parser.getInitialMode(line);
    JsonArray<Pair<Integer, String>> modes = TokenUtil.buildModes(initialMode, tokens);
    putModeAnchors(line, modes);
    String mode = TokenUtil.findModeForColumn(initialMode, modes, column);

    if (cssAutocompleter != null && CodeMirror2.CSS.equals(mode)) {
      return cssAutocompleter.findAutocompletions(selection, trigger);
    } else if (jsAutocompleter != null && CodeMirror2.JAVASCRIPT.equals(mode)) {
      return jsAutocompleter.findAutocompletions(selection, trigger);
    }

    if (selection.hasSelection()) {
      // Do not autocomplete in HTML when something is selected.
      return AutocompleteProposals.EMPTY;
    }

    HtmlTagWithAttributes tag = line.getTag(XmlCodeAnalyzer.TAG_START_TAG);
    boolean inTag = tag != null;

    if (column == 0) {
      // On first column we either add attribute or do nothing.
      if (inTag) {
        JsonArray<AutocompleteProposal> proposals = htmlAttributes.searchAttributes(
            tag.getTagName(), tag.getAttributes(), "");
        return new HtmlAutocompleteProposals("", proposals, ATTRIBUTE);
      }
      return AutocompleteProposals.EMPTY;
    }

    FindTagResult findTagResult = findTag(tokens, inTag, column);

    if (!findTagResult.inTag || findTagResult.inToken == null) {
      // Ooops =(
      return AutocompleteProposals.EMPTY;
    }

    // If not unfinished tag at the beginning of line surrounds cursor...
    if (findTagResult.startTagIndex >= 0) {
      // Unfinished tag at he end of line may be used...
      if (findTagResult.endTagIndex == -1) {
        tag = line.getTag(XmlCodeAnalyzer.TAG_END_TAG);
        if (tag == null) {
          // Ooops =(
          return AutocompleteProposals.EMPTY;
        }
      } else {
View Full Code Here

  void putModeAnchors(@Nonnull TaggableLine currentLine,
      @Nonnull JsonArray<Pair<Integer, String>> modes) {
    Preconditions.checkState(currentLine instanceof Line);
    // TODO: pull AnchorManager.getAnchorsByTypeOrNull to
    // TaggableLine interface (for decoupling).
    Line line = (Line) currentLine;
    AnchorManager anchorManager = line.getDocument().getAnchorManager();
    Preconditions.checkNotNull(anchorManager);
    JsonArray<Anchor> oldAnchors =
        AnchorManager.getAnchorsByTypeOrNull(line, MODE_ANCHOR_TYPE);
    if (oldAnchors != null) {
      for (Anchor anchor : oldAnchors.asIterable()) {
View Full Code Here

      return;
    }
    if (anchor.isAttached()) {
      // TODO: check that item is still there,
      //               see comments in OutlineNodeBuilder.
      Line line = anchor.getLine();
      if (line.getText().contains(data.getName())) {
        editor.getFocusManager().focus();
        LineFinder lineFinder = editor.getDocument().getLineFinder();
        editor.scrollTo(lineFinder.findLine(line).number(), anchor.getColumn());
        return;
      }
View Full Code Here

    prepareAutocompleter();

    Document document = helper.editor.getDocument();
    AnchorManager anchorManager = document.getAnchorManager();
    Line line = document.getFirstLine();
    HtmlAutocompleter htmlAutocompleter = helper.autocompleter.htmlAutocompleter;

    // Delete the anchor that was set by prepareAutocompleter().
    JsonArray<Anchor> anchors =
        AnchorManager.getAnchorsByTypeOrNull(line, HtmlAutocompleter.MODE_ANCHOR_TYPE);
View Full Code Here

    lineTokens.add(new Token(CodeMirror2.HTML, TokenType.WHITESPACE, " "));

    prepareAutocompleter();

    Document document = helper.editor.getDocument();
    Line line = document.getFirstLine();
    HtmlAutocompleter htmlAutocompleter = helper.autocompleter.htmlAutocompleter;

    // Delete the anchor that was set by prepareAutocompleter().
    JsonArray<Anchor> anchors =
        AnchorManager.getAnchorsByTypeOrNull(line, HtmlAutocompleter.MODE_ANCHOR_TYPE);
    assertEquals(0, anchors.size());

    // Modes are empty, the previous line is null.
    JsonArray<Pair<Integer, String>> modes = JsonCollections.createArray();
    htmlAutocompleter.putModeAnchors(line, modes);
    assertTrue(
        AnchorManager.getAnchorsByTypeOrNull(line, HtmlAutocompleter.MODE_ANCHOR_TYPE).isEmpty());

    // Modes are empty, the previous line is "null object".
    htmlAutocompleter.putModeAnchors(line, modes);
    assertTrue(
        AnchorManager.getAnchorsByTypeOrNull(line, HtmlAutocompleter.MODE_ANCHOR_TYPE).isEmpty());

    // Create a line in another document and use it as a not-null previousLine.
    Line previousLine = Document.createFromString("").getFirstLine();
    assertNull(
        AnchorManager.getAnchorsByTypeOrNull(previousLine, HtmlAutocompleter.MODE_ANCHOR_TYPE));

    // Modes are empty, the previous line has no mode anchor.
    htmlAutocompleter.putModeAnchors(line, modes);
    assertTrue(
        AnchorManager.getAnchorsByTypeOrNull(line, HtmlAutocompleter.MODE_ANCHOR_TYPE).isEmpty());

    // Modes are empty, the previous line has mode anchor.
    Anchor previousLineAnchor = previousLine.getDocument().getAnchorManager().createAnchor(
        HtmlAutocompleter.MODE_ANCHOR_TYPE, previousLine, AnchorManager.IGNORE_LINE_NUMBER, 0);
    previousLineAnchor.setValue("m1");
    htmlAutocompleter.putModeAnchors(line, modes);
    assertTrue(modes.isEmpty());
    anchors = AnchorManager.getAnchorsByTypeOrNull(line, HtmlAutocompleter.MODE_ANCHOR_TYPE);
View Full Code Here

   * }
   * </code>
   */
  public void testMatchDownDifferentLines() {
    customSetUp(ImmutableList.of("function foo() {", "  var temp = 1;", "}"));
    Line startLine = document.getFirstLine();
    Line matchLine = document.getLastLine();

    // should find the match on line 3, column 0
    expect(
        mockAnchorManager.createAnchor(EasyMock.eq(ParenMatchHighlighter.MATCH_ANCHOR_TYPE),
            EasyMock.eq(matchLine), EasyMock.eq(3), EasyMock.eq(0))).andReturn(null);
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.