1fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes/*
2fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * Copyright (C) 2014 The Android Open Source Project
3fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes *
4fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * Licensed under the Apache License, Version 2.0 (the "License");
5fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * you may not use this file except in compliance with the License.
6fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * You may obtain a copy of the License at
7fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes *
8fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes *      http://www.apache.org/licenses/LICENSE-2.0
9fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes *
10fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * Unless required by applicable law or agreed to in writing, software
11fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * distributed under the License is distributed on an "AS IS" BASIS,
12fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * See the License for the specific language governing permissions and
14fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes * limitations under the License.
15fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes */
16fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes
17fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banespackage android.support.v4.view;
18fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes
19fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banesimport android.content.Context;
20fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banesimport android.util.AttributeSet;
21fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banesimport android.view.LayoutInflater;
22fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banesimport android.view.View;
23fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes
24fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banesclass LayoutInflaterCompatBase {
25fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes
26fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes    static class FactoryWrapper implements LayoutInflater.Factory {
27fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes
28fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes        final LayoutInflaterFactory mDelegateFactory;
29fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes
30fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes        FactoryWrapper(LayoutInflaterFactory delegateFactory) {
31fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes            mDelegateFactory = delegateFactory;
32fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes        }
33fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes
34fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes        @Override
35fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes        public View onCreateView(String name, Context context, AttributeSet attrs) {
36fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes            return mDelegateFactory.onCreateView(null, name, context, attrs);
37fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes        }
3810850534c9e2949857133437cf1cd9af82721ab1Adam Powell
3910850534c9e2949857133437cf1cd9af82721ab1Adam Powell        public String toString() {
4010850534c9e2949857133437cf1cd9af82721ab1Adam Powell            return getClass().getName() + "{" + mDelegateFactory + "}";
4110850534c9e2949857133437cf1cd9af82721ab1Adam Powell        }
42fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes    }
43fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes
44fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes    static void setFactory(LayoutInflater inflater, LayoutInflaterFactory factory) {
45fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes        inflater.setFactory(factory != null ? new FactoryWrapper(factory) : null);
46fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes    }
47fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes
4856594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki    static LayoutInflaterFactory getFactory(LayoutInflater inflater) {
4956594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki        LayoutInflater.Factory factory = inflater.getFactory();
5056594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki        if (factory instanceof FactoryWrapper) {
5156594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki            return ((FactoryWrapper) factory).mDelegateFactory;
5256594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki        }
5356594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki        return null;
5456594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki    }
5556594b0cf74a9f71c52980044283ddb0e9e6f47cYuichi Araki
56fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes}
57