| Index: views/examples/bubble_example.cc
|
| diff --git a/views/examples/bubble_example.cc b/views/examples/bubble_example.cc
|
| index ea3173591716de13fd5d40731b492768b5780788..58c19ece4da7170d1447d983024b32ceda498aa8 100644
|
| --- a/views/examples/bubble_example.cc
|
| +++ b/views/examples/bubble_example.cc
|
| @@ -5,15 +5,12 @@
|
| #include "views/examples/bubble_example.h"
|
|
|
| #include "base/utf_string_conversions.h"
|
| -#include "third_party/skia/include/core/SkColor.h"
|
| -#include "views/bubble/bubble_border.h"
|
| #include "views/bubble/bubble_delegate.h"
|
| #include "views/bubble/bubble_view.h"
|
| -#include "views/controls/button/checkbox.h"
|
| #include "views/controls/button/text_button.h"
|
| #include "views/controls/label.h"
|
| #include "views/layout/box_layout.h"
|
| -#include "views/view.h"
|
| +#include "views/layout/fill_layout.h"
|
| #include "views/widget/widget.h"
|
|
|
| namespace examples {
|
| @@ -21,105 +18,86 @@ namespace examples {
|
| struct BubbleConfig {
|
| string16 label;
|
| SkColor color;
|
| - gfx::Rect bound;
|
| + gfx::Point arrow_point;
|
| views::BubbleBorder::ArrowLocation arrow;
|
| bool fade_out;
|
| };
|
|
|
| // Create three types of bubbles, one without arrow, one with
|
| // arrow, and the third has a fade animation.
|
| -BubbleConfig kRoundBubbleConfig = {
|
| - ASCIIToUTF16("RoundBubble"), 0xFFC1B1E1, gfx::Rect(50, 350, 100, 50),
|
| - views::BubbleBorder::NONE, false };
|
| -BubbleConfig kPointyBubbleConfig = {
|
| - ASCIIToUTF16("PointyBubble"), SK_ColorLTGRAY, gfx::Rect(250, 350, 180, 180),
|
| - views::BubbleBorder::TOP_LEFT, false };
|
| -BubbleConfig kFadeBubbleConfig = {
|
| - ASCIIToUTF16("FadeBubble"), SK_ColorYELLOW, gfx::Rect(500, 350, 200, 100),
|
| - views::BubbleBorder::BOTTOM_RIGHT, true };
|
| +BubbleConfig kRoundBubbleConfig = { ASCIIToUTF16("RoundBubble"), 0xFFC1B1E1,
|
| + gfx::Point(), views::BubbleBorder::NONE, false };
|
| +BubbleConfig kArrowBubbleConfig = { ASCIIToUTF16("ArrowBubble"), SK_ColorGRAY,
|
| + gfx::Point(), views::BubbleBorder::TOP_LEFT, false };
|
| +BubbleConfig kFadeBubbleConfig = { ASCIIToUTF16("FadeBubble"), SK_ColorYELLOW,
|
| + gfx::Point(), views::BubbleBorder::BOTTOM_RIGHT, true };
|
|
|
| class ExampleBubbleDelegateView : public views::BubbleDelegateView {
|
| public:
|
| - ExampleBubbleDelegateView(const BubbleConfig& config, views::Widget* widget)
|
| - : BubbleDelegateView(widget), config_(config) {}
|
| + ExampleBubbleDelegateView(const BubbleConfig& config)
|
| + : config_(config) {}
|
|
|
| - virtual views::View* GetContentsView() { return this; }
|
| -
|
| - SkColor GetFrameBackgroundColor() {
|
| - return config_.color;
|
| - }
|
| - gfx::Rect GetBounds() {
|
| - return config_.bound;
|
| + virtual gfx::Point GetArrowPoint() const OVERRIDE {
|
| + return config_.arrow_point;
|
| }
|
|
|
| - views::BubbleBorder::ArrowLocation GetFrameArrowLocation() {
|
| + views::BubbleBorder::ArrowLocation GetArrowLocation() const OVERRIDE {
|
| return config_.arrow;
|
| }
|
|
|
| + SkColor GetColor() const OVERRIDE {
|
| + return config_.color;
|
| +}
|
| +
|
| + virtual void Init() OVERRIDE {
|
| + SetLayoutManager(new views::FillLayout());
|
| + views::Label* label = new views::Label(config_.label);
|
| + label->set_border(views::Border::CreateSolidBorder(10, config_.color));
|
| + AddChildView(label);
|
| + }
|
| +
|
| private:
|
| const BubbleConfig& config_;
|
| };
|
|
|
| BubbleExample::BubbleExample(ExamplesMain* main)
|
| - : ExampleBase(main, "Bubble") {
|
| -}
|
| + : ExampleBase(main, "Bubble") {}
|
|
|
| -BubbleExample::~BubbleExample() {
|
| -}
|
| +BubbleExample::~BubbleExample() {}
|
|
|
| void BubbleExample::CreateExampleView(views::View* container) {
|
| - layout_ = new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 1);
|
| - container->SetLayoutManager(layout_);
|
| + container->SetLayoutManager(
|
| + new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 1));
|
| round_ = new views::TextButton(this,
|
| UTF16ToWideHack(kRoundBubbleConfig.label));
|
| - pointy_ = new views::TextButton(this,
|
| - UTF16ToWideHack(kPointyBubbleConfig.label));
|
| + arrow_ = new views::TextButton(this,
|
| + UTF16ToWideHack(kArrowBubbleConfig.label));
|
| fade_ = new views::TextButton(this,
|
| UTF16ToWideHack(kFadeBubbleConfig.label));
|
| container->AddChildView(round_);
|
| - container->AddChildView(pointy_);
|
| + container->AddChildView(arrow_);
|
| container->AddChildView(fade_);
|
| }
|
|
|
| void BubbleExample::ButtonPressed(views::Button* sender,
|
| const views::Event& event) {
|
| - if (sender == round_) {
|
| - round_bubble_ = AddBubbleButton(kRoundBubbleConfig);
|
| - round_bubble_->Show();
|
| - } else if (sender == pointy_) {
|
| - pointy_bubble_ = AddBubbleButton(kPointyBubbleConfig);
|
| - pointy_bubble_->Show();
|
| - } else if (sender == fade_) {
|
| - fade_bubble_ = AddBubbleButton(kFadeBubbleConfig);
|
| - fade_bubble_->Show();
|
| - // Start fade animation.
|
| - fade_bubble_->client_view()->AsBubbleView()->set_animation_delegate(this);
|
| - fade_bubble_->client_view()->AsBubbleView()->StartFade();
|
| - }
|
| - example_view()->SchedulePaint();
|
| -}
|
| -
|
| -views::Widget* BubbleExample::AddBubbleButton(const BubbleConfig& config) {
|
| - // Create a Label.
|
| - views::Label* bubble_message = new views::Label(
|
| - ASCIIToUTF16("I am a ") + config.label);
|
| - bubble_message->SetMultiLine(true);
|
| - bubble_message->SetAllowCharacterBreak(true);
|
| - bubble_message->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
|
| -
|
| - views::Widget* bubble_widget = new views::Widget();
|
| - views::Widget::InitParams params(views::Widget::InitParams::TYPE_BUBBLE);
|
| - params.delegate = new ExampleBubbleDelegateView(config, bubble_widget);
|
| - params.transparent = true;
|
| - params.bounds = config.bound;
|
| - params.parent = example_view()->GetWidget()->GetNativeView();
|
| - bubble_widget->Init(params);
|
| - bubble_widget->client_view()->AsBubbleView()->AddChildView(bubble_message);
|
| - return bubble_widget;
|
| -}
|
| -
|
| -void BubbleExample::AnimationEnded(const ui::Animation* animation) {
|
| - PrintStatus("Done Bubble Animation");
|
| + BubbleConfig config;
|
| + if (sender == round_)
|
| + config = kRoundBubbleConfig;
|
| + else if (sender == arrow_)
|
| + config = kArrowBubbleConfig;
|
| + else if (sender == fade_)
|
| + config = kFadeBubbleConfig;
|
| +
|
| + config.arrow_point.set_x(sender->width() / 2);
|
| + config.arrow_point.set_y(sender->height() / 2);
|
| + views::View::ConvertPointToScreen(sender, &config.arrow_point);
|
| +
|
| + views::Widget* bubble = views::BubbleDelegateView::ConstructBubble(
|
| + new ExampleBubbleDelegateView(config), example_view()->GetWidget());
|
| + bubble->Show();
|
| + if (config.fade_out)
|
| + bubble->client_view()->AsBubbleView()->StartFade();
|
| }
|
|
|
| } // namespace examples
|
|
|