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
38f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown    /*package*/ static InputMethodManager getInstance() {
39f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown        synchronized (InputMethodManager.class) {
40f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown            InputMethodManager imm = InputMethodManager.peekInstance();
41f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown            if (imm == null) {
42f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown                imm = new InputMethodManager(
43f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown                        new BridgeIInputMethodManager(), Looper.getMainLooper());
44f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown                InputMethodManager.sInstance = imm;
4596131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet            }
46f9e989d5f09e72f5c9a59d713521f37d3fdd93ddJeff Brown            return imm;
47af64556de0064eeb5a4d4e6d634c3f074f5f40ceXavier Ducrohet        }
4896131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet    }
4996131eef3869f2be1300e1620f5c3874b41bb534Xavier Ducrohet}
50