@Override public void updateAttributes(AttributesUpdate attrUpdate) { insertionOp.retain(1); noninsertionOp.updateAttributes(attrUpdate); }
@Override void resolveRetain(int itemCount) { syncAnnotations(); targetDocument.updateAttributes(update); otherTarget.targetDocument.retain(1); }
@Override void resolve(int itemCount) { targetDocument.updateAttributes(update); otherTarget.targetDocument.retain(1); }
@Override void resolveReplaceAttributes(Attributes oldAttributes, Attributes newAttributes) { syncAnnotations(); targetDocument.retain(1); otherTarget.targetDocument.replaceAttributes(oldAttributes.updateWith(update), newAttributes); }
@Override public void retain(int itemCount) { int oldPosition = relativePosition.get(); relativePosition.increase(itemCount); if (relativePosition.get() < 0) { targetDocument.retain(itemCount); otherTarget.targetDocument.retain(itemCount); } else if (oldPosition < 0) { targetDocument.retain(-oldPosition); otherTarget.targetDocument.retain(-oldPosition); } }
@Override public void characters(String chars) { targetDocument.characters(chars); otherTarget.targetDocument.retain(chars.length()); }
@Override public void elementStart(String tag, Attributes attrs) { targetDocument.elementStart(tag, attrs); otherTarget.targetDocument.retain(1); }
@Override void resolveRetain(int itemCount) { targetDocument.updateAttributes(update); otherTarget.targetDocument.retain(1); }
@Override public void characters(String chars) { if (otherTarget.depth > 0) { otherTarget.targetDocument.deleteCharacters(chars); } else { targetDocument.characters(chars); otherTarget.targetDocument.retain(chars.length()); } }
@Override public void elementEnd() { if (otherTarget.depth > 0) { otherTarget.targetDocument.deleteElementEnd(); } else { targetDocument.elementEnd(); otherTarget.targetDocument.retain(1); } }
@Override public void elementStart(String tag, Attributes attrs) { if (otherTarget.depth > 0) { otherTarget.targetDocument.deleteElementStart(tag, attrs); } else { targetDocument.elementStart(tag, attrs); otherTarget.targetDocument.retain(1); } }