@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { if (selfEdit || mask == null) { return; } // copy original string textBeforeChange = new String(s.toString()); diffMeasures.calculateBeforeTextChanged(start, count, after); }
public int getCursorPosition() { return diffMeasures.getCursorPosition(); }
if (diffMeasures.isInsertingChars()) { diffChars = s.subSequence(diffMeasures.getStartPosition(), diffMeasures.getInsertEndPosition()); if (diffMeasures.isTrimmingSequence()) { CharSequence diffBefore = textBeforeChange.subSequence(diffMeasures.getStartPosition(), diffMeasures.getInsertEndPosition()); if (diffBefore.equals(diffChars)) { diffMeasures.recalculateOnModifyingWord(diffChars.length()); if (diffMeasures.isRemovingChars()) { if (!diffMeasures.isInsertingChars()) { diffMeasures.setCursorPosition(mask.removeBackwards(diffMeasures.getRemoveEndPosition(), diffMeasures.getRemoveLength())); } else { diffMeasures.setCursorPosition(mask.removeBackwardsWithoutHardcoded(diffMeasures.getRemoveEndPosition(), diffMeasures.getRemoveLength())); if (diffMeasures.isInsertingChars()) { diffMeasures.setCursorPosition(mask.insertAt(diffMeasures.getStartPosition(), diffChars));
public void refreshMask(@Nullable final CharSequence initialValue) { final boolean initial = this.mask == null; this.mask = createMask(); checkMask(); final boolean initiationNeeded = initialValue != null; diffMeasures = new DiffMeasures(); if (initiationNeeded) { diffMeasures.setCursorPosition(mask.insertFront(initialValue)); } if ((!initial || initWithMask || initiationNeeded) && isInstalled()) { selfEdit = true; final String formattedInitialValue = mask.toString(); if (textView instanceof EditText) { final Editable editable = (Editable) textView.getText(); editable.replace(0, editable.length(), formattedInitialValue, 0, formattedInitialValue.length()); } else { textView.setText(formattedInitialValue); } setSelection(mask.getInitialInputPosition()); selfEdit = false; } }
final int cursorPosition = diffMeasures.getCursorPosition();