11f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project/*
21f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
31f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project *
41f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
51f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * you may not use this file except in compliance with the License.
61f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * You may obtain a copy of the License at
71f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project *
81f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
91f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project *
101f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
111f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
121f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * See the License for the specific language governing permissions and
141f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project * limitations under the License.
151f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project */
161f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project
171f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectpackage com.android.internal.policy.impl;
181f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project
191f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport java.util.Map;
201f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project
211f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.content.Context;
221f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.util.AttributeSet;
231f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.view.View;
241f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectimport android.view.LayoutInflater;
251f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project
261f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Projectpublic class PhoneLayoutInflater extends LayoutInflater {
271f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    private static final String[] sClassPrefixList = {
281f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project        "android.widget.",
291f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project        "android.webkit."
301f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    };
311f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project
321f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    /**
331f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project     * Instead of instantiating directly, you should retrieve an instance
341f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project     * through {@link Context#getSystemService}
351f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project     *
361f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project     * @param context The Context in which in which to find resources and other
371f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project     *                application-specific things.
381f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project     *
391f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project     * @see Context#getSystemService
401f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project     */
411f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    public PhoneLayoutInflater(Context context) {
421f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project        super(context);
431f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    }
441f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project
451f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    protected PhoneLayoutInflater(LayoutInflater original, Context newContext) {
461f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project        super(original, newContext);
471f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    }
481f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project
491f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    /** Override onCreateView to instantiate names that correspond to the
501f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project        widgets known to the Widget factory. If we don't find a match,
511f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project        call through to our super class.
521f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    */
531f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    @Override protected View onCreateView(String name, AttributeSet attrs) throws ClassNotFoundException {
541f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project        for (String prefix : sClassPrefixList) {
551f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project            try {
561f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project                View view = createView(name, prefix, attrs);
571f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project                if (view != null) {
581f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project                    return view;
591f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project                }
601f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project            } catch (ClassNotFoundException e) {
611f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project                // In this case we want to let the base class take a crack
621f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project                // at it.
631f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project            }
641f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project        }
651f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project
661f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project        return super.onCreateView(name, attrs);
671f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    }
681f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project
691f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    public LayoutInflater cloneInContext(Context newContext) {
701f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project        return new PhoneLayoutInflater(this, newContext);
711f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project    }
721f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project}
731f838aaece3cd61d07ab9e41c5c6af761d643324The Android Open Source Project
74