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