1/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License. You may obtain a copy of
6 * the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations under
14 * the License.
15 */
16
17package com.android.browser;
18
19import android.content.Context;
20import android.graphics.Bitmap;
21import android.util.AttributeSet;
22import android.view.LayoutInflater;
23import android.view.View;
24import android.view.ViewGroup;
25import android.webkit.WebView;
26import android.widget.ImageView;
27import android.widget.LinearLayout;
28import android.widget.TextView;
29
30public class NavTabView extends LinearLayout {
31
32    private ViewGroup mContent;
33    private Tab mTab;
34    private ImageView mClose;
35    private TextView mTitle;
36    private View mTitleBar;
37    ImageView mImage;
38    private OnClickListener mClickListener;
39    private boolean mHighlighted;
40
41    public NavTabView(Context context, AttributeSet attrs, int defStyle) {
42        super(context, attrs, defStyle);
43        init();
44    }
45
46    public NavTabView(Context context, AttributeSet attrs) {
47        super(context, attrs);
48        init();
49    }
50
51    public NavTabView(Context context) {
52        super(context);
53        init();
54    }
55
56    private void init() {
57        LayoutInflater.from(mContext).inflate(R.layout.nav_tab_view, this);
58        mContent = (ViewGroup) findViewById(R.id.main);
59        mClose = (ImageView) findViewById(R.id.closetab);
60        mTitle = (TextView) findViewById(R.id.title);
61        mTitleBar = findViewById(R.id.titlebar);
62        mImage = (ImageView) findViewById(R.id.tab_view);
63    }
64
65    protected boolean isClose(View v) {
66        return v == mClose;
67    }
68
69    protected boolean isTitle(View v) {
70        return v == mTitleBar;
71    }
72
73    protected boolean isWebView(View v) {
74        return v == mImage;
75    }
76
77    private void setTitle() {
78        if (mTab == null) return;
79        if (mHighlighted) {
80            mTitle.setText(mTab.getUrl());
81        } else {
82            String txt = mTab.getTitle();
83            if (txt == null) {
84                txt = mTab.getUrl();
85            }
86            mTitle.setText(txt);
87        }
88        if (mTab.isSnapshot()) {
89            setTitleIcon(R.drawable.ic_history_holo_dark);
90        } else if (mTab.isPrivateBrowsingEnabled()) {
91            setTitleIcon(R.drawable.ic_incognito_holo_dark);
92        } else {
93            setTitleIcon(0);
94        }
95    }
96
97    private void setTitleIcon(int id) {
98        if (id == 0) {
99            mTitle.setPadding(mTitle.getCompoundDrawablePadding(), 0, 0, 0);
100        } else {
101            mTitle.setPadding(0, 0, 0, 0);
102        }
103        mTitle.setCompoundDrawablesWithIntrinsicBounds(id, 0, 0, 0);
104    }
105
106    protected boolean isHighlighted() {
107        return mHighlighted;
108    }
109
110    protected void setWebView(Tab tab) {
111        mTab = tab;
112        setTitle();
113        Bitmap image = tab.getScreenshot();
114        if (image != null) {
115            mImage.setImageBitmap(image);
116            if (tab != null) {
117                mImage.setContentDescription(tab.getTitle());
118            }
119        }
120    }
121
122    @Override
123    public void setOnClickListener(OnClickListener listener) {
124        mClickListener = listener;
125        mTitleBar.setOnClickListener(mClickListener);
126        mClose.setOnClickListener(mClickListener);
127        if (mImage != null) {
128            mImage.setOnClickListener(mClickListener);
129        }
130    }
131
132}
133