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 14 class Profile; 15 namespace gfx { 16 class FontList; 17 class Size; 18 } 19 20 // SelectedKeywordView displays the tab-to-search UI in the location bar view. 21 class 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); 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