| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/strings/utf_string_conversions.h" |
| #include "ui/views/bubble/bubble_border.h" |
| #include "ui/views/bubble/bubble_delegate.h" |
| #include "ui/views/controls/label.h" |
| #include "ui/views/layout/fill_layout.h" |
| #include "ui/views/widget/widget.h" |
| |
| namespace ash { |
| namespace shell { |
| |
| struct BubbleConfig { |
| base::string16 label; |
| views::View* anchor_view; |
| views::BubbleBorder::Arrow arrow; |
| }; |
| |
| class ExampleBubbleDelegateView : public views::BubbleDelegateView { |
| public: |
| ExampleBubbleDelegateView(const BubbleConfig& config) |
| : BubbleDelegateView(config.anchor_view, config.arrow), |
| label_(config.label) {} |
| |
| virtual void Init() OVERRIDE { |
| SetLayoutManager(new views::FillLayout()); |
| views::Label* label = new views::Label(label_); |
| AddChildView(label); |
| } |
| |
| private: |
| base::string16 label_; |
| }; |
| |
| void CreatePointyBubble(views::View* anchor_view) { |
| BubbleConfig config; |
| config.label = base::ASCIIToUTF16("PointyBubble"); |
| config.anchor_view = anchor_view; |
| config.arrow = views::BubbleBorder::TOP_LEFT; |
| ExampleBubbleDelegateView* bubble = new ExampleBubbleDelegateView(config); |
| views::BubbleDelegateView::CreateBubble(bubble)->Show(); |
| } |
| |
| } // namespace shell |
| } // namespace ash |