keyword_hint_view.h revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_KEYWORD_HINT_VIEW_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_KEYWORD_HINT_VIEW_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/view.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocationBarView;
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class Profile;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Font;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views {
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class ImageView;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Label;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// KeywordHintView is used by the location bar view to display a hint to the
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// user when the selected url has a corresponding keyword.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Internally KeywordHintView uses two labels to render the text, and draws
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the tab image itself.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NOTE: This should really be called LocationBarKeywordHintView, but I
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// couldn't bring myself to use such a long name.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class KeywordHintView : public views::View {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  KeywordHintView(Profile* profile,
3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                  const gfx::Font& font,
3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                  int font_y_offset,
3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                  const LocationBarView* location_bar_view);
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~KeywordHintView();
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetKeyword(const string16& keyword);
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  string16 keyword() const { return keyword_; }
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Size GetPreferredSize() OVERRIDE;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The minimum size is just big enough to show the tab.
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Size GetMinimumSize() OVERRIDE;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Layout() OVERRIDE;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  views::Label* CreateLabel(const gfx::Font& font,
5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                            int font_y_offset,
5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                            const LocationBarView* location_bar_view);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  Profile* profile_;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Label* leading_label_;
5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  views::ImageView* tab_image_;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::Label* trailing_label_;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  string16 keyword_;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(KeywordHintView);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_KEYWORD_HINT_VIEW_H_
65