当前位置: 首页>>代码示例>>Java>>正文


Java EditorUtil.getLastVisualLineColumnNumber方法代码示例

本文整理汇总了Java中com.intellij.openapi.editor.ex.util.EditorUtil.getLastVisualLineColumnNumber方法的典型用法代码示例。如果您正苦于以下问题:Java EditorUtil.getLastVisualLineColumnNumber方法的具体用法?Java EditorUtil.getLastVisualLineColumnNumber怎么用?Java EditorUtil.getLastVisualLineColumnNumber使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.intellij.openapi.editor.ex.util.EditorUtil的用法示例。


在下文中一共展示了EditorUtil.getLastVisualLineColumnNumber方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getMaxWidthInRange

import com.intellij.openapi.editor.ex.util.EditorUtil; //导入方法依赖的package包/类
@Override
public int getMaxWidthInRange(int startOffset, int endOffset) {
  if (myUseNewRendering) return myView.getMaxWidthInRange(startOffset, endOffset);
  int width = 0;
  int start = offsetToVisualLine(startOffset);
  int end = offsetToVisualLine(endOffset);

  for (int i = start; i <= end; i++) {
    int lastColumn = EditorUtil.getLastVisualLineColumnNumber(this, i) + 1;
    int lineWidth = visualPositionToXY(new VisualPosition(i, lastColumn)).x;

    if (lineWidth > width) {
      width = lineWidth;
    }
  }

  return width;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:19,代码来源:bigFile.java

示例2: paintSelectionOnFirstSoftWrapLineIfNecessary

import com.intellij.openapi.editor.ex.util.EditorUtil; //导入方法依赖的package包/类
/**
 * End user is allowed to perform selection by visual coordinates (e.g. by dragging mouse with left button hold). There is a possible
 * case that such a move intersects with soft wrap introduced virtual space. We want to draw corresponding selection background
 * there then.
 * <p/>
 * This method encapsulates functionality of drawing selection background on the first soft wrap line (e.g. on a visual line where
 * it is applied).
 *
 * @param g                 graphics to draw on
 * @param position          current position (assumed to be position of soft wrap appliance)
 * @param clip              target drawing area boundaries
 * @param defaultBackground default background
 * @param fontType          current font type
 */
private void paintSelectionOnFirstSoftWrapLineIfNecessary(@NotNull Graphics g,
                                                          @NotNull Point position,
                                                          @NotNull Rectangle clip,
                                                          @NotNull Color defaultBackground,
                                                          @JdkConstants.FontStyle int fontType) {
  // There is a possible case that the user performed selection at soft wrap virtual space. We need to paint corresponding background
  // there then.
  VisualPosition selectionStartPosition = getSelectionStartPositionForPaint();
  VisualPosition selectionEndPosition = getSelectionEndPositionForPaint();
  if (selectionStartPosition.equals(selectionEndPosition)) {
    return;
  }

  int currentVisualLine = position.y / getLineHeight();
  int lastColumn = EditorUtil.getLastVisualLineColumnNumber(this, currentVisualLine);

  // Check if the first soft wrap line is within the visual selection.
  if (currentVisualLine < selectionStartPosition.line || currentVisualLine > selectionEndPosition.line
      || currentVisualLine == selectionEndPosition.line && selectionEndPosition.column <= lastColumn) {
    return;
  }

  // Adjust 'x' if selection starts at soft wrap virtual space.
  final int columnsToSkip = selectionStartPosition.column - lastColumn;
  if (columnsToSkip > 0) {
    position.x += getSoftWrapModel().getMinDrawingWidthInPixels(SoftWrapDrawingType.BEFORE_SOFT_WRAP_LINE_FEED);
    position.x += (columnsToSkip - 1) * EditorUtil.getSpaceWidth(Font.PLAIN, this);
  }

  // Calculate selection width.
  final int width;
  if (selectionEndPosition.line > currentVisualLine) {
    width = clip.x + clip.width - position.x;
  }
  else if (selectionStartPosition.line < currentVisualLine || selectionStartPosition.column <= lastColumn) {
    width = getSoftWrapModel().getMinDrawingWidthInPixels(SoftWrapDrawingType.BEFORE_SOFT_WRAP_LINE_FEED)
            + (selectionEndPosition.column - lastColumn - 1) * EditorUtil.getSpaceWidth(fontType, this);
  }
  else {
    width = (selectionEndPosition.column - selectionStartPosition.column) * EditorUtil.getSpaceWidth(fontType, this);
  }

  drawBackground(g, getColorsScheme().getColor(EditorColors.SELECTION_BACKGROUND_COLOR), width, position, defaultBackground, clip);
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:59,代码来源:bigFile.java

示例3: moveToVisualPosition

import com.intellij.openapi.editor.ex.util.EditorUtil; //导入方法依赖的package包/类
void moveToVisualPosition(@NotNull VisualPosition pos, boolean fireListeners) {
  assertIsDispatchThread();
  validateCallContext();
  if (mySkipChangeRequests) {
    return;
  }
  if (myReportCaretMoves) {
    LogMessageEx.error(LOG, "Unexpected caret move request");
  }
  if (!myEditor.isStickySelection() && !myEditor.getCaretModel().isDocumentChanged && !pos.equals(myVisibleCaret)) {
    CopyPasteManager.getInstance().stopKillRings();
  }

  myDesiredX = -1;
  int column = pos.column;
  int line = pos.line;
  boolean leanRight = pos.leansRight;

  int lastLine = myEditor.getVisibleLineCount() - 1;
  if (lastLine <= 0) {
    lastLine = 0;
  }

  if (line > lastLine) {
    line = lastLine;
  }

  EditorSettings editorSettings = myEditor.getSettings();

  if (!editorSettings.isVirtualSpace()) {
    int lineEndColumn = EditorUtil.getLastVisualLineColumnNumber(myEditor, line);
    if (column > lineEndColumn && (!myEditor.myUseNewRendering || !myEditor.getSoftWrapModel().isInsideSoftWrap(pos))) {
      column = lineEndColumn;
      leanRight = true;
    }

    if (!myEditor.myUseNewRendering && column < 0 && line > 0) {
      line--;
      column = EditorUtil.getLastVisualLineColumnNumber(myEditor, line);
    }
  }

  myVisibleCaret = new VisualPosition(line, column, leanRight);

  VerticalInfo oldInfo = myCaretInfo;
  LogicalPosition oldPosition = myLogicalCaret;

  setCurrentLogicalCaret(myEditor.visualToLogicalPosition(myVisibleCaret));
  updateOffsetsFromLogicalPosition();
  LOG.assertTrue(myOffset >= 0 && myOffset <= myEditor.getDocument().getTextLength());

  updateVisualLineInfo();

  myEditor.getFoldingModel().flushCaretPosition();

  setLastColumnNumber(myLogicalCaret.column);
  myDesiredSelectionStartColumn = myDesiredSelectionEndColumn = -1;
  myEditor.updateCaretCursor();
  requestRepaint(oldInfo);

  if (fireListeners && !oldPosition.equals(myLogicalCaret)) {
    CaretEvent event = new CaretEvent(myEditor, this, oldPosition, myLogicalCaret);
    myEditor.getCaretModel().fireCaretPositionChanged(event);
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:66,代码来源:CaretImpl.java


注:本文中的com.intellij.openapi.editor.ex.util.EditorUtil.getLastVisualLineColumnNumber方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。