Home | History | Annotate | Download | only in location_bar
      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