EmojiAppCompatEditText.java revision f8ec169d022fbed42fd82091d24c45f3767cdfe7
1f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir/*
2f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * Copyright (C) 2017 The Android Open Source Project
3f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir *
4f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * Licensed under the Apache License, Version 2.0 (the "License");
5f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * you may not use this file except in compliance with the License.
6f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * You may obtain a copy of the License at
7f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir *
8f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir *      http://www.apache.org/licenses/LICENSE-2.0
9f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir *
10f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * Unless required by applicable law or agreed to in writing, software
11f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * distributed under the License is distributed on an "AS IS" BASIS,
12f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * See the License for the specific language governing permissions and
14f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * limitations under the License.
15f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir */
16f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir
17f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirpackage android.support.text.emoji.widget;
18f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir
19f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport android.content.Context;
20f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport android.support.v7.widget.AppCompatEditText;
21f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport android.util.AttributeSet;
22f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport android.view.inputmethod.EditorInfo;
23f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport android.view.inputmethod.InputConnection;
24f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir
25f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir/**
26f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * AppCompatEditText widget enhanced with emoji capability by using {@link EmojiEditTextHelper}.
27f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir */
28f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirpublic class EmojiAppCompatEditText extends AppCompatEditText {
29f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    private EmojiEditTextHelper mEmojiEditTextHelper;
30f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    private boolean mInitialized;
31f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir
32f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    public EmojiAppCompatEditText(Context context) {
33f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        super(context);
34f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        init();
35f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    }
36f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir
37f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    public EmojiAppCompatEditText(Context context, AttributeSet attrs) {
38f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        super(context, attrs);
39f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        init();
40f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    }
41f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir
42f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    public EmojiAppCompatEditText(Context context, AttributeSet attrs, int defStyleAttr) {
43f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        super(context, attrs, defStyleAttr);
44f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        init();
45f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    }
46f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir
47f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    private void init() {
48f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        if (!mInitialized) {
49f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir            mInitialized = true;
50f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir            setKeyListener(getKeyListener());
51f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        }
52f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    }
53f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir
54f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    @Override
55f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    public void setKeyListener(android.text.method.KeyListener input) {
56f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        super.setKeyListener(getEmojiEditTextHelper().getKeyListener(input));
57f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    }
58f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir
59f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    @Override
60f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
61f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        InputConnection inputConnection = super.onCreateInputConnection(outAttrs);
62f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        return getEmojiEditTextHelper().onCreateInputConnection(inputConnection, outAttrs);
63f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    }
64f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir
65f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    private EmojiEditTextHelper getEmojiEditTextHelper() {
66f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        if (mEmojiEditTextHelper == null) {
67f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir            mEmojiEditTextHelper = new EmojiEditTextHelper(this);
68f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        }
69f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir        return mEmojiEditTextHelper;
70f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir    }
71f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir}
72