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


Java SoftWrapModelImpl类代码示例

本文整理汇总了Java中com.intellij.openapi.editor.impl.SoftWrapModelImpl的典型用法代码示例。如果您正苦于以下问题:Java SoftWrapModelImpl类的具体用法?Java SoftWrapModelImpl怎么用?Java SoftWrapModelImpl使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


SoftWrapModelImpl类属于com.intellij.openapi.editor.impl包,在下文中一共展示了SoftWrapModelImpl类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: visualLineStartOffset

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
private int visualLineStartOffset(int offset, boolean leanForward) {
  EditorImpl editor = myView.getEditor();
  int result = EditorUtil.getNotFoldedLineStartOffset(editor, offset);

  SoftWrapModelImpl softWrapModel = editor.getSoftWrapModel();
  List<? extends SoftWrap> softWraps = softWrapModel.getRegisteredSoftWraps();
  int currentOrPrevWrapIndex = softWrapModel.getSoftWrapIndex(offset);
  SoftWrap currentOrPrevWrap;
  if (currentOrPrevWrapIndex < 0) {
    currentOrPrevWrapIndex = - currentOrPrevWrapIndex - 2;
    currentOrPrevWrap = currentOrPrevWrapIndex < 0 || currentOrPrevWrapIndex >= softWraps.size() ? null :
                        softWraps.get(currentOrPrevWrapIndex);
  }
  else {
    currentOrPrevWrap = leanForward ? softWraps.get(currentOrPrevWrapIndex) : null;
  }
  if (currentOrPrevWrap != null && currentOrPrevWrap.getStart() > result) {
    result = currentOrPrevWrap.getStart();
  }
  return result;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:22,代码来源:EditorCoordinateMapper.java

示例2: processFoldRegion

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
@Override
public Integer processFoldRegion(@NotNull EditorPosition position, @NotNull FoldRegion foldRegion) {
  int startLine = position.logicalLine;
  int startColumn = position.logicalColumn;
  int startX = position.x;

  advancePositionOnFolding(position, foldRegion);

  if (position.logicalLine < targetPosition.line
      || position.logicalLine == targetPosition.line && position.logicalColumn <= targetPosition.column) {
    return null;
  }

  Document document = myEditor.getDocument();
  int lineEndOffset = document.getLineEndOffset(targetPosition.line);
  int result = SoftWrapModelImpl.getEditorTextRepresentationHelper(myEditor)
    .calcSoftWrapUnawareOffset(targetPosition.line == startLine ? foldRegion.getStartOffset()
                                                                : document.getLineStartOffset(targetPosition.line),
                               lineEndOffset,
                               targetPosition.line == startLine ? startColumn : 0,
                               targetPosition.column,
                               targetPosition.line == startLine ? startX : 0);
  return result < 0 ? lineEndOffset : result;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:25,代码来源:LogicalToOffsetCalculationStrategy.java

示例3: testNoUnnecessaryHorizontalScrollBar

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
public void testNoUnnecessaryHorizontalScrollBar() throws IOException {
  // Inspired by IDEA-87184
  final String text = "12345678 abcdefgh";
  init(15, 7, text);
  myEditor.getCaretModel().moveToOffset(text.length());
  final Ref<Boolean> fail = new Ref<Boolean>(true);
  SoftWrapApplianceManager applianceManager = ((SoftWrapModelImpl)myEditor.getSoftWrapModel()).getApplianceManager();
  SoftWrapAwareDocumentParsingListener listener = new SoftWrapAwareDocumentParsingListenerAdapter() {
    @Override
    public void beforeSoftWrapLineFeed(@NotNull EditorPosition position) {
      if (position.x == text.indexOf("a") * 7) {
        fail.set(false);
      }
    }
  };
  applianceManager.addListener(listener);
  try {
    backspace();
  }
  finally {
    applianceManager.removeListener(listener);
  }
  assertFalse(fail.get());
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:25,代码来源:SoftWrapApplianceOnDocumentModificationTest.java

示例4: testOnlyMinimalRangeIsRecalculatedOnDocumentChange

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
public void testOnlyMinimalRangeIsRecalculatedOnDocumentChange() throws IOException {
  init("aa bb cc dd ee<caret> ff gg hh ii jj", TestFileType.TEXT);
  EditorTestUtil.configureSoftWraps(myEditor, 8);
  verifySoftWrapPositions(6, 12, 18, 24);
  
  final IncrementalCacheUpdateEvent[] event = new IncrementalCacheUpdateEvent[1];
  ((SoftWrapModelImpl)myEditor.getSoftWrapModel()).getApplianceManager().addListener(new SoftWrapAwareDocumentParsingListenerAdapter() {
    @Override
    public void onRecalculationEnd(@NotNull IncrementalCacheUpdateEvent e) {
      assertNull(event[0]);
      event[0] = e;
    }
  });
  
  type(' ');
  
  verifySoftWrapPositions(6, 12, 19, 25);
  assertNotNull(event[0]);
  assertEquals(6, event[0].getStartOffset());
  assertEquals(19, event[0].getActualEndOffset());
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:22,代码来源:SoftWrapApplianceOnDocumentModificationTest.java

示例5: init

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
private void init(final int visibleWidth, @NotNull String fileText, @NotNull TestFileType fileType, final int symbolWidth) throws IOException {
  init(fileText, fileType);
  myEditor.getSettings().setUseSoftWraps(true);
  SoftWrapModelImpl model = (SoftWrapModelImpl)myEditor.getSoftWrapModel();
  model.reinitSettings();

  SoftWrapApplianceManager applianceManager = model.getApplianceManager();
  applianceManager.setWidthProvider(new SoftWrapApplianceManager.VisibleAreaWidthProvider() {
    @Override
    public int getVisibleAreaWidth() {
      return visibleWidth;
    }
  });

  if (symbolWidth > 0) {
    applianceManager.setRepresentationHelper(new DefaultEditorTextRepresentationHelper(myEditor) {
      @Override
      public int charWidth(char c, int fontType) {
        return symbolWidth;
      }
    });
  }
  
  applianceManager.registerSoftWrapIfNecessary();
}
 
开发者ID:lshain-android-source,项目名称:tools-idea,代码行数:26,代码来源:SoftWrapApplianceOnDocumentModificationTest.java

示例6: testOnlyMinimalRangeIsRecalculatedOnDocumentChange

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
public void testOnlyMinimalRangeIsRecalculatedOnDocumentChange() throws IOException {
  init("aa bb cc dd ee<caret> ff gg hh ii jj", TestFileType.TEXT);
  EditorTestUtil.configureSoftWraps(myEditor, 8);
  verifySoftWrapPositions(6, 12, 18, 24);

  final IncrementalCacheUpdateEvent[] event = new IncrementalCacheUpdateEvent[1];
  ((SoftWrapModelImpl)myEditor.getSoftWrapModel()).getApplianceManager().addListener(new SoftWrapAwareDocumentParsingListenerAdapter() {
    @Override
    public void onRecalculationEnd(@Nonnull IncrementalCacheUpdateEvent e) {
      assertNull(event[0]);
      event[0] = e;
    }
  });

  type(' ');

  verifySoftWrapPositions(6, 12, 19, 25);
  assertNotNull(event[0]);
  assertEquals(6, event[0].getStartOffset());
  assertEquals(19, event[0].getActualEndOffset());
}
 
开发者ID:consulo,项目名称:consulo,代码行数:22,代码来源:SoftWrapApplianceOnDocumentModificationTest.java

示例7: visualLineStartOffset

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
private int visualLineStartOffset(int offset, boolean leanForward) {
  EditorImpl editor = myView.getEditor();
  offset = DocumentUtil.alignToCodePointBoundary(myDocument, offset);
  int result = EditorUtil.getNotFoldedLineStartOffset(editor, offset);

  SoftWrapModelImpl softWrapModel = editor.getSoftWrapModel();
  List<? extends SoftWrap> softWraps = softWrapModel.getRegisteredSoftWraps();
  int currentOrPrevWrapIndex = softWrapModel.getSoftWrapIndex(offset);
  SoftWrap currentOrPrevWrap;
  if (currentOrPrevWrapIndex < 0) {
    currentOrPrevWrapIndex = - currentOrPrevWrapIndex - 2;
    currentOrPrevWrap = currentOrPrevWrapIndex < 0 || currentOrPrevWrapIndex >= softWraps.size() ? null :
                        softWraps.get(currentOrPrevWrapIndex);
  }
  else {
    currentOrPrevWrap = leanForward ? softWraps.get(currentOrPrevWrapIndex) : null;
  }
  if (currentOrPrevWrap != null && currentOrPrevWrap.getStart() > result) {
    result = currentOrPrevWrap.getStart();
  }
  return result;
}
 
开发者ID:consulo,项目名称:consulo,代码行数:23,代码来源:EditorCoordinateMapper.java

示例8: getVisualLineInfo

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
private static VisualLineInfo getVisualLineInfo(@Nonnull EditorImpl editor, int offset, boolean beforeSoftWrap) {
  Document document = editor.getDocument();
  int textLength = document.getTextLength();
  if (offset <= 0 || textLength == 0) return new VisualLineInfo(0, false);
  offset = Math.min(offset, textLength);

  int startOffset = EditorUtil.getNotFoldedLineStartOffset(editor, offset);

  SoftWrapModelImpl softWrapModel = editor.getSoftWrapModel();
  int wrapIndex = softWrapModel.getSoftWrapIndex(offset);
  int prevSoftWrapIndex = wrapIndex < 0 ? (- wrapIndex - 2) : wrapIndex - (beforeSoftWrap ? 1 : 0);
  SoftWrap prevSoftWrap = prevSoftWrapIndex < 0 ? null : softWrapModel.getRegisteredSoftWraps().get(prevSoftWrapIndex);

  int visualLineStartOffset = prevSoftWrap == null ? startOffset : Math.max(startOffset, prevSoftWrap.getStart());
  return new VisualLineInfo(visualLineStartOffset, prevSoftWrap != null && prevSoftWrap.getStart() == visualLineStartOffset);
}
 
开发者ID:consulo,项目名称:consulo,代码行数:17,代码来源:IncrementalCacheUpdateEvent.java

示例9: advance

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
/**
 * Updates state of the current processing position in order to point it to the end offset of the given fold region.
 *
 * @param foldRegion                        fold region which end offset should be pointed by the current position
 * @param collapsedSymbolsWidthInColumns    identifies collapsed text width in columns, i.e. width of the last collapsed logical line
 *                                          in columns, negative value, if it's unknown and needs to be calculated
 */
public void advance(@NotNull FoldRegion foldRegion, int collapsedSymbolsWidthInColumns) {
  // We assume that fold region placeholder contains only 'simple' symbols, i.e. symbols that occupy single visual column.
  String placeholder = foldRegion.getPlaceholderText();

  visualColumn += placeholder.length();
  offset = foldRegion.getEndOffset();

  Document document = myEditor.getDocument();
  int endOffsetLogicalLine = document.getLineNumber(foldRegion.getEndOffset());
  if (logicalLine == endOffsetLogicalLine) {
    // Single-line fold region.
    if (collapsedSymbolsWidthInColumns < 0) {
      collapsedSymbolsWidthInColumns = SoftWrapModelImpl.getEditorTextRepresentationHelper(myEditor)
        .toVisualColumnSymbolsNumber(foldRegion.getStartOffset(), foldRegion.getEndOffset(), x);
    }
    logicalColumn += collapsedSymbolsWidthInColumns;
    foldingColumnDiff += placeholder.length() - collapsedSymbolsWidthInColumns;
  }
  else {
    // Multi-line fold region.
    if (collapsedSymbolsWidthInColumns < 0) {
      collapsedSymbolsWidthInColumns = SoftWrapModelImpl.getEditorTextRepresentationHelper(myEditor)
        .toVisualColumnSymbolsNumber(foldRegion.getStartOffset(), foldRegion.getEndOffset(), 0);
    }
    int linesDiff = endOffsetLogicalLine - logicalLine;
    logicalLine += linesDiff;
    foldedLines += linesDiff;
    logicalColumn = collapsedSymbolsWidthInColumns;
    foldingColumnDiff = visualColumn - logicalColumn - softWrapColumnDiff;
    softWrapLinesBefore += softWrapLinesCurrent;
    softWrapLinesCurrent = 0;
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:41,代码来源:EditorPosition.java

示例10: buildIfExceeds

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
@Override
protected VisualPosition buildIfExceeds(@NotNull EditorPosition context, @NotNull FoldRegion foldRegion) {
  int foldEndLine = myEditor.getDocument().getLineNumber(foldRegion.getEndOffset());
  if (myTargetLogical.line > foldEndLine) {
    return null;
  }

  if (myTargetLogical.line < foldEndLine) {
    // Map all logical position that point inside collapsed fold region to visual position of its start.
    return context.buildVisualPosition();
  }

  FoldingData data = getFoldRegionData(foldRegion);
  int foldEndColumn;
  if (data == null) {
    int xStart = myEditor.getDocument().getLineNumber(foldRegion.getStartOffset()) == foldEndLine ? context.x : 0;
    foldEndColumn = SoftWrapModelImpl.getEditorTextRepresentationHelper(myEditor).toVisualColumnSymbolsNumber(
      foldRegion.getStartOffset(), foldRegion.getEndOffset(), xStart
    );
  } else {
    foldEndColumn = data.getCollapsedSymbolsWidthInColumns();
  }
  
  if (foldEndLine == context.logicalLine) {
    // Single-line fold region.
    foldEndColumn += context.logicalColumn;
  }

  if (foldEndColumn <= myTargetLogical.column) {
    return null;
  }

  // Map all logical position that point inside collapsed fold region to visual position of its start.
  return context.buildVisualPosition();
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:36,代码来源:LogicalToVisualMappingStrategy.java

示例11: buildIfExceeds

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
@Override
protected LogicalPosition buildIfExceeds(@NotNull EditorPosition position, @NotNull FoldRegion foldRegion) {
  if (myTargetOffset >= foldRegion.getEndOffset()) {
    return null;
  }

  Document document = myEditor.getDocument();
  int targetLogicalLine = document.getLineNumber(myTargetOffset);
  if (targetLogicalLine == position.logicalLine) {
    // Target offset is located on the same logical line as folding start.
    position.logicalColumn += SoftWrapModelImpl.getEditorTextRepresentationHelper(myEditor).toVisualColumnSymbolsNumber(
      foldRegion.getStartOffset(), myTargetOffset, position.x
    );
  }
  else {
    // Target offset is located on a different line with folding start.
    position.logicalColumn = SoftWrapModelImpl.getEditorTextRepresentationHelper(myEditor).toVisualColumnSymbolsNumber(
      foldRegion.getStartOffset(), myTargetOffset, 0
    );
    position.softWrapColumnDiff = 0;
    int linesDiff = document.getLineNumber(myTargetOffset) - document.getLineNumber(foldRegion.getStartOffset());
    position.logicalLine += linesDiff;
    position.foldedLines += linesDiff;
    position.softWrapLinesBefore += position.softWrapLinesCurrent;
    position.softWrapLinesCurrent = 0;
  }

  position.foldingColumnDiff = position.visualColumn - position.softWrapColumnDiff - position.logicalColumn;
  position.offset = myTargetOffset;
  return position.buildLogicalPosition();
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:32,代码来源:OffsetToLogicalCalculationStrategy.java

示例12: checkConsistency

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
private static void checkConsistency() {
  Set<Integer> softWrapOffsets = checkSoftWraps();
  List<CacheEntry> cache = ((SoftWrapModelImpl)myEditor.getSoftWrapModel()).getDataMapper().getCache();
  CacheEntry prevEntry = null;
  for (CacheEntry entry : cache) {
    boolean currentLineStartsWithSoftWrap = checkRelationBetweenNeighbourEntries(entry, prevEntry, softWrapOffsets);
    checkConsistencyWithinEntry(entry, currentLineStartsWithSoftWrap);
    checkConsistencyWithFoldingsAndTabs(entry);
    prevEntry = entry;
  }
  assertTrue(softWrapOffsets.isEmpty());
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:13,代码来源:SoftWrapStressTest.java

示例13: testNoWrapAtFirstNonWsSymbolWithCustomIndent

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
public void testNoWrapAtFirstNonWsSymbolWithCustomIndent() throws IOException {
  String text =
          "   1111111111111111111111111111111";
  init(10, text);
  getEditor().getSettings().setCustomSoftWrapIndent(0);
  getEditor().getSettings().setUseCustomSoftWrapIndent(true);
  //Trigger soft wraps recalculation.
  ((SoftWrapModelImpl)myEditor.getSoftWrapModel()).prepareToMapping();

  // Don't expect soft wraps to be registered as there is no point in wrapping at the first non-white space symbol position
  // in all cases when soft wrap is located at the left screen edge.
  assertEmpty(getSoftWrapModel().getRegisteredSoftWraps());
}
 
开发者ID:consulo,项目名称:consulo,代码行数:14,代码来源:SoftWrapApplianceOnDocumentModificationTest.java

示例14: VisualLinesIterator

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
public VisualLinesIterator(@Nonnull EditorImpl editor, int startVisualLine) {
  myEditor = editor;
  SoftWrapModelImpl softWrapModel = myEditor.getSoftWrapModel();
  myDocument = myEditor.getDocument();
  FoldRegion[] regions = myEditor.getFoldingModel().fetchTopLevel();
  myFoldRegions = regions == null ? FoldRegion.EMPTY_ARRAY : regions;
  mySoftWraps = softWrapModel.getRegisteredSoftWraps();
  myLocation = new Location(startVisualLine);
}
 
开发者ID:consulo,项目名称:consulo,代码行数:10,代码来源:VisualLinesIterator.java

示例15: VisualLineFragmentsIterator

import com.intellij.openapi.editor.impl.SoftWrapModelImpl; //导入依赖的package包/类
private VisualLineFragmentsIterator(EditorView view, int offset, boolean beforeSoftWrap, @Nullable Runnable quickEvaluationListener) {
  EditorImpl editor = view.getEditor();
  int visualLineStartOffset = EditorUtil.getNotFoldedLineStartOffset(editor, offset);

  SoftWrapModelImpl softWrapModel = editor.getSoftWrapModel();
  List<? extends SoftWrap> softWraps = softWrapModel.getRegisteredSoftWraps();
  int currentOrPrevWrapIndex = softWrapModel.getSoftWrapIndex(offset);
  if (currentOrPrevWrapIndex < 0) {
    currentOrPrevWrapIndex = - currentOrPrevWrapIndex - 2;
  }
  else if (beforeSoftWrap) {
    currentOrPrevWrapIndex--;
  }
  SoftWrap currentOrPrevWrap = currentOrPrevWrapIndex < 0 || currentOrPrevWrapIndex >= softWraps.size() ? null :
                               softWraps.get(currentOrPrevWrapIndex);
  if (currentOrPrevWrap != null && currentOrPrevWrap.getStart() > visualLineStartOffset) {
    visualLineStartOffset = currentOrPrevWrap.getStart();
  }

  int nextFoldingIndex = editor.getFoldingModel().getLastCollapsedRegionBefore(visualLineStartOffset) + 1;

  init(view,
       visualLineStartOffset,
       editor.getDocument().getLineNumber(visualLineStartOffset),
       currentOrPrevWrapIndex,
       nextFoldingIndex,
       quickEvaluationListener);
}
 
开发者ID:consulo,项目名称:consulo,代码行数:29,代码来源:VisualLineFragmentsIterator.java


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