Exemplo n.º 1
0
  /** deletes the selected text */
  public void delete(final TextSelection selection) {
    final CursorPosition from = selection.from();
    final CursorPosition to = selection.to();

    final BlockToLineMapping fromMapping = findBlockFor(from.getLine());
    final int fromBlock = fromMapping.index;
    final int fromLine = fromMapping.line;
    final int fromCharacter = from.getCharacter();

    final BlockToLineMapping toMapping = findBlockFor(to.getLine());
    final int toBlock = toMapping.index;
    final int toLine = toMapping.line;
    final int toCharacter = to.getCharacter();

    if (fromBlock == toBlock) {
      final TextBlock block = (TextBlock) blocks.elementAt(fromBlock);
      block.delete(fromLine, fromCharacter, toLine, toCharacter);
    } else {
      TextBlock block = (TextBlock) blocks.elementAt(toBlock);
      block.deleteTo(toLine, toCharacter);

      block = (TextBlock) blocks.elementAt(fromBlock);
      block.deleteFrom(fromLine, fromCharacter);

      fromMapping.textBlock.join(toMapping.textBlock);
      blocks.removeElementAt(toMapping.index);

      for (int i = fromBlock + 1; i < toBlock; i++) {
        blocks.removeElementAt(i);
      }
    }
  }