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 Font; 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::Font& font, 24 int font_y_offset, 25 SkColor text_color, 26 SkColor parent_background_color, 27 Profile* profile); 28 virtual ~SelectedKeywordView(); 29 30 virtual gfx::Size GetPreferredSize() OVERRIDE; 31 virtual gfx::Size GetMinimumSize() OVERRIDE; 32 virtual void Layout() OVERRIDE; 33 34 // The current keyword, or an empty string if no keyword is displayed. 35 void SetKeyword(const string16& keyword); 36 const string16& keyword() const { return keyword_; } 37 38 private: 39 // The keyword we're showing. If empty, no keyword is selected. 40 // NOTE: we don't cache the TemplateURL as it is possible for it to get 41 // deleted out from under us. 42 string16 keyword_; 43 44 // These labels are never visible. They are used to size the view. One 45 // label contains the complete description of the keyword, the second 46 // contains a truncated version of the description, for if there is not 47 // enough room to display the complete description. 48 views::Label full_label_; 49 views::Label partial_label_; 50 51 Profile* profile_; 52 53 DISALLOW_COPY_AND_ASSIGN(SelectedKeywordView); 54 }; 55 56 #endif // CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_SELECTED_KEYWORD_VIEW_H_ 57