Home | History | Annotate | Download | only in shell
      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 #include "base/strings/utf_string_conversions.h"
      6 #include "ui/views/bubble/bubble_border.h"
      7 #include "ui/views/bubble/bubble_delegate.h"
      8 #include "ui/views/controls/label.h"
      9 #include "ui/views/layout/fill_layout.h"
     10 #include "ui/views/widget/widget.h"
     11 
     12 namespace ash {
     13 namespace shell {
     14 
     15 struct BubbleConfig {
     16   base::string16 label;
     17   views::View* anchor_view;
     18   views::BubbleBorder::Arrow arrow;
     19 };
     20 
     21 class ExampleBubbleDelegateView : public views::BubbleDelegateView {
     22  public:
     23   ExampleBubbleDelegateView(const BubbleConfig& config)
     24       : BubbleDelegateView(config.anchor_view, config.arrow),
     25         label_(config.label) {}
     26 
     27   virtual void Init() OVERRIDE {
     28     SetLayoutManager(new views::FillLayout());
     29     views::Label* label = new views::Label(label_);
     30     AddChildView(label);
     31   }
     32 
     33  private:
     34   base::string16 label_;
     35 };
     36 
     37 void CreatePointyBubble(views::View* anchor_view) {
     38   BubbleConfig config;
     39   config.label = base::ASCIIToUTF16("PointyBubble");
     40   config.anchor_view = anchor_view;
     41   config.arrow = views::BubbleBorder::TOP_LEFT;
     42   ExampleBubbleDelegateView* bubble = new ExampleBubbleDelegateView(config);
     43   views::BubbleDelegateView::CreateBubble(bubble)->Show();
     44 }
     45 
     46 }  // namespace shell
     47 }  // namespace ash
     48