1cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne/* 2cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * Copyright (C) 2007-2010 The Android Open Source Project 3cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * 4cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * use this file except in compliance with the License. You may obtain a copy of 6cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * the License at 7cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * 8cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * http://www.apache.org/licenses/LICENSE-2.0 9cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * 10cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * Unless required by applicable law or agreed to in writing, software 11cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * License for the specific language governing permissions and limitations under 14cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * the License. 15cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne */ 16cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 17cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunnepackage android.view.inputmethod; 18cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 19cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunneimport android.os.Parcel; 20cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunneimport android.os.Parcelable; 21cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunneimport android.text.TextUtils; 22cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 23cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne/** 24cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * Information about a single text correction that an editor has reported to 25cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * an input method. 26cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne */ 27cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunnepublic final class CorrectionInfo implements Parcelable { 28cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne private final int mOffset; 29cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne private final CharSequence mOldText; 30cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne private final CharSequence mNewText; 31cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 32cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne /** 33cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * @param offset The offset in the edited text where the old and new text start. 34cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * @param oldText The old text that has been replaced. 35cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * @param newText The replacement text. 36cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne */ 37cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne public CorrectionInfo(int offset, CharSequence oldText, CharSequence newText) { 38cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne mOffset = offset; 39cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne mOldText = oldText; 40cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne mNewText = newText; 41cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne } 42cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 43cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne private CorrectionInfo(Parcel source) { 44cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne mOffset = source.readInt(); 45cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne mOldText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); 46cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne mNewText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); 47cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne } 48cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 49cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne /** 50cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * Return the offset position of this correction in the text. Both the {@link #getOldText()} and 51cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * {@link #getNewText()} start at this offset. 52cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne */ 53cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne public int getOffset() { 54cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne return mOffset; 55cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne } 56cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 57cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne /** 58cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * Return the text that has actually been typed by the user, and which has been corrected. 59cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne */ 60cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne public CharSequence getOldText() { 61cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne return mOldText; 62cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne } 63cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 64cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne /** 65cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * Return the new text that corrects what was typed by the user. 66cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne */ 67cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne public CharSequence getNewText() { 68cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne return mNewText; 69cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne } 70cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 71cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne @Override 72cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne public String toString() { 73cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne return "CorrectionInfo{#" + mOffset + " \"" + mOldText + "\" -> \"" + mNewText + "\"}"; 74cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne } 75cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 76cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne /** 77cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * Used to package this object into a {@link Parcel}. 78cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * 79cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * @param dest The {@link Parcel} to be written. 80cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * @param flags The flags used for parceling. 81cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne */ 82cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne public void writeToParcel(Parcel dest, int flags) { 83cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne dest.writeInt(mOffset); 84cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne TextUtils.writeToParcel(mOldText, dest, flags); 85cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne TextUtils.writeToParcel(mNewText, dest, flags); 86cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne } 87cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 88cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne /** 89cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * Used to make this class parcelable. 90cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne */ 91c2ddd6023688db5ecf6c586e05f55e262b4a802eYohei Yukawa public static final Parcelable.Creator<CorrectionInfo> CREATOR = 92c2ddd6023688db5ecf6c586e05f55e262b4a802eYohei Yukawa new Parcelable.Creator<CorrectionInfo>() { 93c2ddd6023688db5ecf6c586e05f55e262b4a802eYohei Yukawa public CorrectionInfo createFromParcel(Parcel source) { 94c2ddd6023688db5ecf6c586e05f55e262b4a802eYohei Yukawa return new CorrectionInfo(source); 95c2ddd6023688db5ecf6c586e05f55e262b4a802eYohei Yukawa } 96c2ddd6023688db5ecf6c586e05f55e262b4a802eYohei Yukawa public CorrectionInfo[] newArray(int size) { 97c2ddd6023688db5ecf6c586e05f55e262b4a802eYohei Yukawa return new CorrectionInfo[size]; 98c2ddd6023688db5ecf6c586e05f55e262b4a802eYohei Yukawa } 99c2ddd6023688db5ecf6c586e05f55e262b4a802eYohei Yukawa }; 100cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 101cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne public int describeContents() { 102cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne return 0; 103cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne } 104cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne} 105