115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/* 215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2008 The Android Open Source Project 315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License. 615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at 715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * http://www.apache.org/licenses/LICENSE-2.0 915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software 1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and 1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License. 1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */ 1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view.inputmethod; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.TextUtils; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information about text that has been extracted for use by an input method. 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ExtractedText implements Parcelable { 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The text that has been extracted. 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public CharSequence text; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The offset in the overall text at which the extracted text starts. 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int startOffset; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If the content is a report of a partial text change, this is the 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * offset where the change starts and it runs until 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #partialEndOffset}. If the content is the full text, this 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * field is -1. 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int partialStartOffset; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If the content is a report of a partial text change, this is the offset 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * where the change ends. Note that the actual text may be larger or 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * smaller than the difference between this and {@link #partialEndOffset}, 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * meaning a reduction or increase, respectively, in the total text. 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int partialEndOffset; 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The offset where the selection currently starts within the extracted 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * text. The real selection start position is at 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <var>startOffset</var>+<var>selectionStart</var>. 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int selectionStart; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The offset where the selection currently ends within the extracted 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * text. The real selection end position is at 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <var>startOffset</var>+<var>selectionEnd</var>. 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int selectionEnd; 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bit for {@link #flags}: set if the text being edited can only be on 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a single line. 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FLAG_SINGLE_LINE = 0x0001; 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 74b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project * Bit for {@link #flags}: set if the editor is currently in selection mode. 75b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project */ 76b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project public static final int FLAG_SELECTING = 0x0002; 77b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project 78b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project /** 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Additional bit flags of information about the edited text. 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int flags; 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Used to package this object into a {@link Parcel}. 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param dest The {@link Parcel} to be written. 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param flags The flags used for parceling. 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TextUtils.writeToParcel(text, dest, flags); 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(startOffset); 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(partialStartOffset); 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(partialEndOffset); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(selectionStart); 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(selectionEnd); 96b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54The Android Open Source Project dest.writeInt(this.flags); 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Used to make this class parcelable. 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<ExtractedText> CREATOR = new Parcelable.Creator<ExtractedText>() { 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ExtractedText createFromParcel(Parcel source) { 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ExtractedText res = new ExtractedText(); 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project res.text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project res.startOffset = source.readInt(); 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project res.partialStartOffset = source.readInt(); 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project res.partialEndOffset = source.readInt(); 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project res.selectionStart = source.readInt(); 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project res.selectionEnd = source.readInt(); 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project res.flags = source.readInt(); 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return res; 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ExtractedText[] newArray(int size) { 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ExtractedText[size]; 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 124