@Override public final boolean covers(TextEdit other) { if (fDefined) return super.covers(other); // an undefined multiple text edit covers everything return true; }
@Override public final boolean covers(TextEdit other) { if (fDefined) return super.covers(other); // an undefined multiple text edit covers everything return true; }
private void addToMultiEdit(TextEdit edit, MultiTextEdit multiEdit) { // check for overlap here // discard overlapping edits.. // possible exponential performance hit... need a better way... TextEdit[] children = multiEdit.getChildren(); for (int i = 0; i < children.length; i++) { if (children[i].covers(edit)) // don't add return; } multiEdit.addChild(edit); }
void internalAdd(TextEdit child) throws MalformedTreeException { child.aboutToBeAdded(this); if (child.isDeleted()) throw new MalformedTreeException(this, child, TextEditMessages.getString("TextEdit.deleted_edit")); //$NON-NLS-1$ if (!covers(child)) throw new MalformedTreeException(this, child, TextEditMessages.getString("TextEdit.range_outside")); //$NON-NLS-1$ if (fChildren == null) { fChildren= new ArrayList<>(2); } int index= computeInsertionIndex(child); fChildren.add(index, child); child.internalSetParent(this); }
void internalAdd(TextEdit child) throws MalformedTreeException { child.aboutToBeAdded(this); if (child.isDeleted()) throw new MalformedTreeException(this, child, TextEditMessages.getString("TextEdit.deleted_edit")); //$NON-NLS-1$ if (!covers(child)) throw new MalformedTreeException(this, child, TextEditMessages.getString("TextEdit.range_outside")); //$NON-NLS-1$ if (fChildren == null) { fChildren= new ArrayList<>(2); } int index= computeInsertionIndex(child); fChildren.add(index, child); child.internalSetParent(this); }
private static void insert(TextEdit parent, ReplaceEdit edit, List<ReplaceEdit> edits) { if (!parent.hasChildren()) { parent.addChild(edit); return; } TextEdit[] children= parent.getChildren(); // First dive down to find the right parent. int removed= 0; for (int i= 0; i < children.length; i++) { TextEdit child= children[i]; if (child.covers(edit)) { insert(child, edit, edits); return; } else if (edit.covers(child)) { parent.removeChild(i - removed++); edit.addChild(child); } else { IRegion intersect= intersect(edit, child); if (intersect != null) { ReplaceEdit[] splits= splitEdit(edit, intersect); insert(child, splits[0], edits); edits.add(splits[1]); return; } } } parent.addChild(edit); }
private static void insert(TextEdit parent, ReplaceEdit edit, List<ReplaceEdit> edits) { if (!parent.hasChildren()) { parent.addChild(edit); return; } TextEdit[] children= parent.getChildren(); // First dive down to find the right parent. int removed= 0; for (int i= 0; i < children.length; i++) { TextEdit child= children[i]; if (child.covers(edit)) { insert(child, edit, edits); return; } else if (edit.covers(child)) { parent.removeChild(i - removed++); edit.addChild(child); } else { IRegion intersect= intersect(edit, child); if (intersect != null) { ReplaceEdit[] splits= splitEdit(edit, intersect); insert(child, splits[0], edits); edits.add(splits[1]); return; } } } parent.addChild(edit); }