/* * Copyright (C) 2007-2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package android.view.inputmethod; import android.os.Bundle; import android.view.KeyEvent; /** *
Wrapper class for proxying calls to another InputConnection. Subclass * and have fun! */ public class InputConnectionWrapper implements InputConnection { private InputConnection mTarget; final boolean mMutable; public InputConnectionWrapper(InputConnection target, boolean mutable) { mMutable = mutable; mTarget = target; } /** * Change the target of the input connection. */ public void setTarget(InputConnection target) { if (mTarget != null && !mMutable) { throw new SecurityException("not mutable"); } mTarget = target; } public CharSequence getTextBeforeCursor(int n, int flags) { return mTarget.getTextBeforeCursor(n, flags); } public CharSequence getTextAfterCursor(int n, int flags) { return mTarget.getTextAfterCursor(n, flags); } public CharSequence getSelectedText(int flags) { return mTarget.getSelectedText(flags); } public int getCursorCapsMode(int reqModes) { return mTarget.getCursorCapsMode(reqModes); } public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) { return mTarget.getExtractedText(request, flags); } public boolean deleteSurroundingText(int beforeLength, int afterLength) { return mTarget.deleteSurroundingText(beforeLength, afterLength); } public boolean setComposingText(CharSequence text, int newCursorPosition) { return mTarget.setComposingText(text, newCursorPosition); } public boolean setComposingRegion(int start, int end) { return mTarget.setComposingRegion(start, end); } public boolean finishComposingText() { return mTarget.finishComposingText(); } public boolean commitText(CharSequence text, int newCursorPosition) { return mTarget.commitText(text, newCursorPosition); } public boolean commitCompletion(CompletionInfo text) { return mTarget.commitCompletion(text); } public boolean commitCorrection(CorrectionInfo correctionInfo) { return mTarget.commitCorrection(correctionInfo); } public boolean setSelection(int start, int end) { return mTarget.setSelection(start, end); } public boolean performEditorAction(int editorAction) { return mTarget.performEditorAction(editorAction); } public boolean performContextMenuAction(int id) { return mTarget.performContextMenuAction(id); } public boolean beginBatchEdit() { return mTarget.beginBatchEdit(); } public boolean endBatchEdit() { return mTarget.endBatchEdit(); } public boolean sendKeyEvent(KeyEvent event) { return mTarget.sendKeyEvent(event); } public boolean clearMetaKeyStates(int states) { return mTarget.clearMetaKeyStates(states); } public boolean reportFullscreenMode(boolean enabled) { return mTarget.reportFullscreenMode(enabled); } public boolean performPrivateCommand(String action, Bundle data) { return mTarget.performPrivateCommand(action, data); } public boolean requestCursorUpdates(int cursorUpdateMode) { return mTarget.requestCursorUpdates(cursorUpdateMode); } }