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.method;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
194037d51b132a85dcfe37a95f9d2d91ad23d162fdAurimas Liutikasimport android.text.Spannable;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.KeyEvent;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MotionEvent;
224037d51b132a85dcfe37a95f9d2d91ad23d162fdAurimas Liutikasimport android.widget.TextView;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2467b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown/**
2567b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown * Provides cursor positioning, scrolling and text selection functionality in a {@link TextView}.
2667b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown * <p>
2767b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown * The {@link TextView} delegates handling of key events, trackball motions and touches to
2867b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown * the movement method for purposes of content navigation.  The framework automatically
2967b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown * selects an appropriate movement method based on the content of the {@link TextView}.
3067b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown * </p><p>
3167b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown * This interface is intended for use by the framework; it should not be implemented
3267b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown * directly by applications.
3367b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown * </p>
3467b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown */
3567b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brownpublic interface MovementMethod {
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void initialize(TextView widget, Spannable text);
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean onKeyDown(TextView widget, Spannable text, int keyCode, KeyEvent event);
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean onKeyUp(TextView widget, Spannable text, int keyCode, KeyEvent event);
3967b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the key listener wants to other kinds of key events, return true,
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * otherwise return false and the caller (i.e. the widget host)
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * will handle the key.
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean onKeyOther(TextView view, Spannable text, KeyEvent event);
4667b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void onTakeFocus(TextView widget, Spannable text, int direction);
4867b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown    public boolean onTrackballEvent(TextView widget, Spannable text, MotionEvent event);
4967b6ab72ae96a9f2be929de2c32c110df5390fddJeff Brown    public boolean onTouchEvent(TextView widget, Spannable text, MotionEvent event);
508f34567c71003505456a9b1a0d461a4e62883d70Jeff Brown    public boolean onGenericMotionEvent(TextView widget, Spannable text, MotionEvent event);
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns true if this movement method allows arbitrary selection
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of any text; false if it has no selection (like a movement method
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that only scrolls) or a constrained selection (for example
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * limited to links.  The "Select All" menu item is disabled
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if arbitrary selection is not allowed.
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean canSelectArbitrarily();
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
61