1f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato/*
2f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * Copyright (C) 2010 The Android Open Source Project
3f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato *
4f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * Licensed under the Apache License, Version 2.0 (the "License");
5f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * you may not use this file except in compliance with the License.
6f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * You may obtain a copy of the License at
7f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato *
8f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato *      http://www.apache.org/licenses/LICENSE-2.0
9f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato *
10f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * Unless required by applicable law or agreed to in writing, software
11f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * distributed under the License is distributed on an "AS IS" BASIS,
12f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * See the License for the specific language governing permissions and
14f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato * limitations under the License.
15f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato */
16f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato
17f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onoratopackage com.android.systemui;
18f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato
19f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onoratoimport android.content.Context;
200ad460b087abbd4b523a2e61ff27b0bf6fb5be92Daniel Sandlerimport android.content.res.Configuration;
21f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato
22de84f0e77ea2bf713d15c290264059a413c2486aJohn Spurlockimport java.io.FileDescriptor;
23de84f0e77ea2bf713d15c290264059a413c2486aJohn Spurlockimport java.io.PrintWriter;
24d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlockimport java.util.Map;
25de84f0e77ea2bf713d15c290264059a413c2486aJohn Spurlock
26f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onoratopublic abstract class SystemUI {
27f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato    public Context mContext;
28d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    public Map<Class<?>, Object> mComponents;
29f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato
30f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato    public abstract void start();
31209bede6b9edb9171e5bee4077b48e35004a37b4John Spurlock
320ad460b087abbd4b523a2e61ff27b0bf6fb5be92Daniel Sandler    protected void onConfigurationChanged(Configuration newConfig) {
330ad460b087abbd4b523a2e61ff27b0bf6fb5be92Daniel Sandler    }
34f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato
35f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
36f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato    }
37d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock
38d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    @SuppressWarnings("unchecked")
39d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    public <T> T getComponent(Class<T> interfaceType) {
40d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock        return (T) (mComponents != null ? mComponents.get(interfaceType) : null);
41d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    }
42d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock
43d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    public <T, C extends T> void putComponent(Class<T> interfaceType, C component) {
44d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock        if (mComponents != null) {
45d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock            mComponents.put(interfaceType, component);
46d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock        }
47d08de37a2223d5183620098737eb93907a4ba92cJohn Spurlock    }
48f3c3c4fd14cb4185ec6df5a4355aab8b9f4039dcJoe Onorato}
49