1b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project/* 2b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * Copyright (C) 2007-2008 The Android Open Source Project 3b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * 4b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * use this file except in compliance with the License. You may obtain a copy of 6b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * the License at 7b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * 8b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * 10b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * License for the specific language governing permissions and limitations under 14b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * the License. 15b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project */ 16b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 17b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Projectpackage android.view.inputmethod; 18b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 19b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Projectimport android.os.Bundle; 20b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Projectimport android.view.KeyEvent; 21b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 22b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project/** 23b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * <p>Wrapper class for proxying calls to another InputConnection. Subclass 24b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * and have fun! 25b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project */ 26b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Projectpublic class InputConnectionWrapper implements InputConnection { 2751bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn private InputConnection mTarget; 2851bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn final boolean mMutable; 29b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 3051bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn public InputConnectionWrapper(InputConnection target, boolean mutable) { 3151bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn mMutable = mutable; 3251bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn mTarget = target; 3351bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn } 3451bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn 3551bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn /** 3651bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn * Change the target of the input connection. 3751bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn */ 3851bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn public void setTarget(InputConnection target) { 3951bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn if (mTarget != null && !mMutable) { 4051bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn throw new SecurityException("not mutable"); 4151bf077883df4f5cc816fbfec6d19eedffc26d70Dianne Hackborn } 42b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project mTarget = target; 43b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 44b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 45b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public CharSequence getTextBeforeCursor(int n, int flags) { 46b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.getTextBeforeCursor(n, flags); 47b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 48b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 49b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public CharSequence getTextAfterCursor(int n, int flags) { 50b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.getTextAfterCursor(n, flags); 51b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 52b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 53a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani public CharSequence getSelectedText(int flags) { 54a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani return mTarget.getSelectedText(flags); 55a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani } 56a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani 57b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public int getCursorCapsMode(int reqModes) { 58b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.getCursorCapsMode(reqModes); 59b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 60b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 61e3797a15fbf769a0abcbe121cfd33b4b658aea1esatok public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) { 62b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.getExtractedText(request, flags); 63b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 64b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 650c95dd3f4f02564fab9b86a221bbcbb4aafc2981Fabrice Di Meglio public boolean deleteSurroundingText(int beforeLength, int afterLength) { 660c95dd3f4f02564fab9b86a221bbcbb4aafc2981Fabrice Di Meglio return mTarget.deleteSurroundingText(beforeLength, afterLength); 67b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 68b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 69b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean setComposingText(CharSequence text, int newCursorPosition) { 70b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.setComposingText(text, newCursorPosition); 71b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 72b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 73a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani public boolean setComposingRegion(int start, int end) { 74a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani return mTarget.setComposingRegion(start, end); 75a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani } 76a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani 77b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean finishComposingText() { 78b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.finishComposingText(); 79b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 80b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 81b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean commitText(CharSequence text, int newCursorPosition) { 82b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.commitText(text, newCursorPosition); 83b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 84b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 85b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean commitCompletion(CompletionInfo text) { 86b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.commitCompletion(text); 87cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne } 88cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 89cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne public boolean commitCorrection(CorrectionInfo correctionInfo) { 90cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne return mTarget.commitCorrection(correctionInfo); 91b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 92b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 93b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean setSelection(int start, int end) { 94b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.setSelection(start, end); 95b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 96b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 97b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean performEditorAction(int editorAction) { 98b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.performEditorAction(editorAction); 99b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 100b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 101b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean performContextMenuAction(int id) { 102b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.performContextMenuAction(id); 103b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 104b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 105b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean beginBatchEdit() { 106b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.beginBatchEdit(); 107b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 108b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 109b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean endBatchEdit() { 110b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.endBatchEdit(); 111b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 112b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 113b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean sendKeyEvent(KeyEvent event) { 114b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.sendKeyEvent(event); 115b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 116b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 117b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean clearMetaKeyStates(int states) { 118b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.clearMetaKeyStates(states); 119b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 120b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 121b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean reportFullscreenMode(boolean enabled) { 122b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.reportFullscreenMode(enabled); 123b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 124b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 125b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public boolean performPrivateCommand(String action, Bundle data) { 126b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project return mTarget.performPrivateCommand(action, data); 127b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project } 128b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project} 129