1988323c57bd25a58f05dfa492d9b9c8ab62c5153satok/*
2988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Copyright (C) 2011 The Android Open Source Project
3988323c57bd25a58f05dfa492d9b9c8ab62c5153satok *
4988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * use this file except in compliance with the License. You may obtain a copy of
6988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * the License at
7988323c57bd25a58f05dfa492d9b9c8ab62c5153satok *
8988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * http://www.apache.org/licenses/LICENSE-2.0
9988323c57bd25a58f05dfa492d9b9c8ab62c5153satok *
10988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * Unless required by applicable law or agreed to in writing, software
11988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * License for the specific language governing permissions and limitations under
14988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * the License.
15988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */
16988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
17988323c57bd25a58f05dfa492d9b9c8ab62c5153satokpackage android.view.textservice;
18988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
19988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.os.Parcel;
20988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.os.Parcelable;
21988323c57bd25a58f05dfa492d9b9c8ab62c5153satokimport android.text.TextUtils;
22988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
23988323c57bd25a58f05dfa492d9b9c8ab62c5153satok/**
24988323c57bd25a58f05dfa492d9b9c8ab62c5153satok * This class contains a metadata of the input of TextService
25988323c57bd25a58f05dfa492d9b9c8ab62c5153satok */
26988323c57bd25a58f05dfa492d9b9c8ab62c5153satokpublic final class TextInfo implements Parcelable {
27988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private final String mText;
28988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private final int mCookie;
29988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    private final int mSequence;
30988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
31988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
32988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Constructor.
33988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param text the text which will be input to TextService
34988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
35988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public TextInfo(String text) {
36988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        this(text, 0, 0);
37988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
38988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
39988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
40988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Constructor.
41988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param text the text which will be input to TextService
42988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param cookie the cookie for this TextInfo
43988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param sequence the sequence number for this TextInfo
44988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
45988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public TextInfo(String text, int cookie, int sequence) {
46988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        if (TextUtils.isEmpty(text)) {
47988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            throw new IllegalArgumentException(text);
48988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
49988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mText = text;
50988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mCookie = cookie;
51988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSequence = sequence;
52988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
53988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
54988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public TextInfo(Parcel source) {
55988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mText = source.readString();
56988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mCookie = source.readInt();
57988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        mSequence = source.readInt();
58988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
59988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
60988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
61988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to package this object into a {@link Parcel}.
62988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     *
63988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param dest The {@link Parcel} to be written.
64988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @param flags The flags used for parceling.
65988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
66988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    @Override
67988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public void writeToParcel(Parcel dest, int flags) {
68988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeString(mText);
69988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeInt(mCookie);
70988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        dest.writeInt(mSequence);
71988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
72988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
73988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
74988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the text which is an input of a text service
75988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
76988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public String getText() {
77988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mText;
78988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
79988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
80988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
81988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the cookie of TextInfo
82988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
83988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int getCookie() {
84988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mCookie;
85988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
86988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
87988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
88988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * @return the sequence of TextInfo
89988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
90988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int getSequence() {
91988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return mSequence;
92988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
93988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
94988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
95988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to make this class parcelable.
96988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
97988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public static final Parcelable.Creator<TextInfo> CREATOR
98988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            = new Parcelable.Creator<TextInfo>() {
99988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        @Override
100988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        public TextInfo createFromParcel(Parcel source) {
101988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            return new TextInfo(source);
102988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
103988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
104988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        @Override
105988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        public TextInfo[] newArray(int size) {
106988323c57bd25a58f05dfa492d9b9c8ab62c5153satok            return new TextInfo[size];
107988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        }
108988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    };
109988323c57bd25a58f05dfa492d9b9c8ab62c5153satok
110988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    /**
111988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     * Used to make this class parcelable.
112988323c57bd25a58f05dfa492d9b9c8ab62c5153satok     */
113988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    @Override
114988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    public int describeContents() {
115988323c57bd25a58f05dfa492d9b9c8ab62c5153satok        return 0;
116988323c57bd25a58f05dfa492d9b9c8ab62c5153satok    }
117988323c57bd25a58f05dfa492d9b9c8ab62c5153satok}
118