Home | History | Annotate | Download | only in location_bar
      1 // Copyright (c) 2011 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_ICON_LABEL_BUBBLE_VIEW_H_
      6 #define CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_ICON_LABEL_BUBBLE_VIEW_H_
      7 #pragma once
      8 
      9 #include <string>
     10 
     11 #include "ui/gfx/size.h"
     12 #include "views/painter.h"
     13 #include "views/view.h"
     14 
     15 namespace gfx {
     16 class Canvas;
     17 class Font;
     18 }
     19 namespace views {
     20 class ImageView;
     21 class Label;
     22 }
     23 
     24 class SkBitmap;
     25 
     26 // View used to draw a bubble to the left of the address, containing an icon and
     27 // a label.  We use this as a base for the classes that handle the EV bubble and
     28 // tab-to-search UI.
     29 class IconLabelBubbleView : public views::View {
     30  public:
     31   IconLabelBubbleView(const int background_images[],
     32                       int contained_image,
     33                       const SkColor& color);
     34   virtual ~IconLabelBubbleView();
     35 
     36   void SetFont(const gfx::Font& font);
     37   void SetLabel(const std::wstring& label);
     38   void SetImage(const SkBitmap& bitmap);
     39   void set_is_extension_icon(bool is_extension_icon) {
     40     is_extension_icon_ = is_extension_icon;
     41   }
     42 
     43   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
     44   virtual gfx::Size GetPreferredSize() OVERRIDE;
     45   virtual void Layout() OVERRIDE;
     46 
     47  protected:
     48   void SetElideInMiddle(bool elide_in_middle);
     49   gfx::Size GetNonLabelSize() const;
     50 
     51  private:
     52   int GetPreLabelWidth() const;
     53   int GetNonLabelWidth() const;
     54 
     55   // For painting the background.
     56   views::HorizontalPainter background_painter_;
     57 
     58   // The contents of the bubble.
     59   views::ImageView* image_;
     60   views::Label* label_;
     61 
     62   bool is_extension_icon_;
     63 
     64   DISALLOW_IMPLICIT_CONSTRUCTORS(IconLabelBubbleView);
     65 };
     66 
     67 #endif  // CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_ICON_LABEL_BUBBLE_VIEW_H_
     68