selected_keyword_view.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_SELECTED_KEYWORD_VIEW_H_ 6#define CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_SELECTED_KEYWORD_VIEW_H_ 7 8#include <string> 9 10#include "base/compiler_specific.h" 11#include "chrome/browser/ui/views/location_bar/icon_label_bubble_view.h" 12#include "ui/views/controls/label.h" 13 14class Profile; 15namespace gfx { 16class FontList; 17class Size; 18} 19 20// SelectedKeywordView displays the tab-to-search UI in the location bar view. 21class SelectedKeywordView : public IconLabelBubbleView { 22 public: 23 SelectedKeywordView(const gfx::FontList& font_list, 24 SkColor text_color, 25 SkColor parent_background_color, 26 Profile* profile); 27 virtual ~SelectedKeywordView(); 28 29 virtual gfx::Size GetPreferredSize() const OVERRIDE; 30 virtual gfx::Size GetMinimumSize() const OVERRIDE; 31 virtual void Layout() OVERRIDE; 32 33 // The current keyword, or an empty string if no keyword is displayed. 34 void SetKeyword(const base::string16& keyword); 35 const base::string16& keyword() const { return keyword_; } 36 37 private: 38 // The keyword we're showing. If empty, no keyword is selected. 39 // NOTE: we don't cache the TemplateURL as it is possible for it to get 40 // deleted out from under us. 41 base::string16 keyword_; 42 43 // These labels are never visible. They are used to size the view. One 44 // label contains the complete description of the keyword, the second 45 // contains a truncated version of the description, for if there is not 46 // enough room to display the complete description. 47 views::Label full_label_; 48 views::Label partial_label_; 49 50 Profile* profile_; 51 52 DISALLOW_COPY_AND_ASSIGN(SelectedKeywordView); 53}; 54 55#endif // CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_SELECTED_KEYWORD_VIEW_H_ 56