/** 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); } } }
public void deleteLeft(final CursorPosition cursorAt) { final BlockToLineMapping mapping = findBlockFor(cursorAt.getLine()); if (mapping == null || mapping.textBlock == null) { throw new IsisException("invalid block " + mapping + " for line " + cursorAt.getLine()); } mapping.textBlock.deleteLeft(mapping.line, cursorAt.getCharacter()); }
public void insert(final CursorPosition cursorAt, final String characters) { Assert.assertNotNull(cursorAt); final BlockToLineMapping block = findBlockFor(cursorAt.getLine()); Assert.assertNotNull("failed to get block for line " + cursorAt.getLine(), block); block.textBlock.insert(block.line, cursorAt.getCharacter(), characters); }
/** returns only the text that is selected */ public String getText(final TextSelection selection) { final CursorPosition from = selection.from(); final CursorPosition to = selection.to(); final int line = from.getLine(); String text = getText(line); if (from.getLine() == to.getLine()) { return text.substring(from.getCharacter(), to.getCharacter()); } else { final StringBuffer str = new StringBuffer(); str.append(text.substring(from.getCharacter())); for (int i = line + 1; i < line + (to.getLine() - from.getLine()); i++) { text = getText(i); str.append(text); } text = getText(line + (to.getLine() - from.getLine())); str.append(text.substring(0, to.getCharacter())); return str.toString(); } }
public void deleteRight(final CursorPosition cursorAt) { final BlockToLineMapping mapping = findBlockFor(cursorAt.getLine()); mapping.textBlock.deleteRight(mapping.line, cursorAt.getCharacter()); }
public void breakBlock(final CursorPosition cursorAt) { final BlockToLineMapping mapping = findBlockFor(cursorAt.getLine()); final TextBlock newBlock = mapping.textBlock.splitAt(mapping.line, cursorAt.getCharacter()); blocks.insertElementAt(newBlock, mapping.index + 1); }