use of org.apache.pivot.wtk.text.Paragraph in project pivot by apache.
the class TextPane method removeText.
/**
* Remove the text from the document starting at the given position
* for the given number of characters.
* @param offset Starting location to remove text.
* @param characterCount The number of characters to remove.
*/
public void removeText(int offset, int characterCount) {
checkDocumentExists();
if (offset >= 0 && offset < document.getCharacterCount()) {
Node descendant = document.getDescendantAt(offset);
// Used to be: if (selectionLength == 0 && ...
if (characterCount <= 1 && descendant instanceof Paragraph) {
// We are deleting a paragraph terminator
Paragraph paragraph = (Paragraph) descendant;
Element parent = paragraph.getParent();
int index = parent.indexOf(paragraph);
// Attempt to merge any successive content into the paragraph
if (index < parent.getLength() - 1) {
// TODO This won't always be a paragraph - we'll need to
// find the next paragraph by walking the tree, then
// remove any empty nodes
Sequence<Node> removed = parent.remove(index + 1, 1);
Paragraph nextParagraph = (Paragraph) removed.get(0);
paragraph.insertRange(nextParagraph, paragraph.getCharacterCount() - 1);
}
} else {
removeDocumentRange(offset, characterCount);
}
}
// Ensure that the document remains editable
if (document.getCharacterCount() == 0) {
document.add(new Paragraph());
}
// Move the caret to the removal point
if (offset >= 0) {
setSelection(offset, 0);
}
}
Aggregations