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 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.TextView; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.KeyEvent; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MotionEvent; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.*; 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