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 
17 package com.android.browser;
18 
19 import android.content.Context;
20 import android.graphics.Bitmap;
21 import android.util.AttributeSet;
22 import android.view.LayoutInflater;
23 import android.view.View;
24 import android.view.ViewGroup;
25 import android.webkit.WebView;
26 import android.widget.ImageView;
27 import android.widget.LinearLayout;
28 import android.widget.TextView;
29 
30 public 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 
NavTabView(Context context, AttributeSet attrs, int defStyle)41     public NavTabView(Context context, AttributeSet attrs, int defStyle) {
42         super(context, attrs, defStyle);
43         init();
44     }
45 
NavTabView(Context context, AttributeSet attrs)46     public NavTabView(Context context, AttributeSet attrs) {
47         super(context, attrs);
48         init();
49     }
50 
NavTabView(Context context)51     public NavTabView(Context context) {
52         super(context);
53         init();
54     }
55 
init()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 
isClose(View v)65     protected boolean isClose(View v) {
66         return v == mClose;
67     }
68 
isTitle(View v)69     protected boolean isTitle(View v) {
70         return v == mTitleBar;
71     }
72 
isWebView(View v)73     protected boolean isWebView(View v) {
74         return v == mImage;
75     }
76 
setTitle()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 
setTitleIcon(int id)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 
isHighlighted()106     protected boolean isHighlighted() {
107         return mHighlighted;
108     }
109 
setWebView(Tab tab)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
setOnClickListener(OnClickListener listener)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