19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.text;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * When an object of a type is attached to an Editable, its methods will
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be called when the text is changed.
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic interface TextWatcher extends NoCopySpan {
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This method is called to notify you that, within <code>s</code>,
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the <code>count</code> characters beginning at <code>start</code>
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are about to be replaced by new text with length <code>after</code>.
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * It is an error to attempt to make changes to <code>s</code> from
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this callback.
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void beforeTextChanged(CharSequence s, int start,
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                  int count, int after);
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This method is called to notify you that, within <code>s</code>,
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the <code>count</code> characters beginning at <code>start</code>
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * have just replaced old text that had length <code>before</code>.
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * It is an error to attempt to make changes to <code>s</code> from
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this callback.
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void onTextChanged(CharSequence s, int start, int before, int count);
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This method is called to notify you that, somewhere within
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>s</code>, the text has been changed.
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * It is legitimate to make further changes to <code>s</code> from
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this callback, but be careful not to get yourself into an infinite
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * loop, because any changes you make will cause this method to be
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * called again recursively.
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (You are not told where the change took place because other
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * afterTextChanged() methods may already have made other changes
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and invalidated the offsets.  But if you need to know here,
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * you can use {@link Spannable#setSpan} in {@link #onTextChanged}
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to mark your place and then look up from here where the span
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ended up.
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void afterTextChanged(Editable s);
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
58