bubble.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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/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 12namespace ash { 13namespace shell { 14 15struct BubbleConfig { 16 string16 label; 17 views::View* anchor_view; 18 views::BubbleBorder::ArrowLocation arrow; 19}; 20 21class 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 string16 label_; 35}; 36 37void CreatePointyBubble(views::View* anchor_view) { 38 BubbleConfig config; 39 config.label = 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); 44 bubble->Show(); 45} 46 47} // namespace shell 48} // namespace ash 49