196131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet/*
296131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * Copyright (C) 2011 The Android Open Source Project
396131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet *
496131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * Licensed under the Apache License, Version 2.0 (the "License");
596131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * you may not use this file except in compliance with the License.
696131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * You may obtain a copy of the License at
796131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet *
896131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet *      http://www.apache.org/licenses/LICENSE-2.0
996131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet *
1096131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * Unless required by applicable law or agreed to in writing, software
1196131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * distributed under the License is distributed on an "AS IS" BASIS,
1296131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1396131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * See the License for the specific language governing permissions and
1496131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * limitations under the License.
1596131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet */
1696131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet
1796131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohetpackage android.view.inputmethod;
1896131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet
1996131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohetimport com.android.layoutlib.bridge.android.BridgeIInputMethodManager;
2096131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohetimport com.android.tools.layoutlib.annotations.LayoutlibDelegate;
2196131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet
22af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohetimport android.content.Context;
2396131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohetimport android.os.Looper;
2496131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet
2596131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet
2696131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet/**
2796131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * Delegate used to provide new implementation of a select few methods of {@link InputMethodManager}
2896131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet *
2996131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * Through the layoutlib_create tool, the original  methods of InputMethodManager have been replaced
3096131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet * by calls to methods of the same name in this delegate class.
3196131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet *
3296131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet */
3396131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohetpublic class InputMethodManager_Delegate {
3496131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet
3596131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet    // ---- Overridden methods ----
3696131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet
3796131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet    @LayoutlibDelegate
3896131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet    /*package*/ static InputMethodManager getInstance(Looper mainLooper) {
3996131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet        synchronized (InputMethodManager.mInstanceSync) {
4096131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet            if (InputMethodManager.mInstance != null) {
4196131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet                return InputMethodManager.mInstance;
4296131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet            }
4396131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet
4496131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet            InputMethodManager.mInstance = new InputMethodManager(new BridgeIInputMethodManager(),
4596131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet                    mainLooper);
4696131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet        }
4796131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet        return InputMethodManager.mInstance;
48af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet    }
49af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet
50af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet    @LayoutlibDelegate
51af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet    /*package*/ static InputMethodManager getInstance(Context context) {
52af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet        synchronized (InputMethodManager.mInstanceSync) {
53af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet            if (InputMethodManager.mInstance != null) {
54af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet                return InputMethodManager.mInstance;
55af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet            }
5696131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet
57af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet            InputMethodManager.mInstance = new InputMethodManager(new BridgeIInputMethodManager(),
58af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet                    Looper.myLooper());
59af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet        }
60af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet        return InputMethodManager.mInstance;
6196131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet    }
6296131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet}
63