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 "ui/views/examples/throbber_example.h"
6
7#include "ui/views/controls/throbber.h"
8#include "ui/views/layout/fill_layout.h"
9#include "ui/views/view.h"
10
11namespace views {
12namespace examples {
13
14namespace {
15
16// Time in ms per throbber frame.
17const int kThrobberFrameMs = 60;
18
19class ThrobberView : public View {
20 public:
21  ThrobberView() {
22    throbber_ = new Throbber(kThrobberFrameMs, false);
23    AddChildView(throbber_);
24    throbber_->SetVisible(true);
25    throbber_->Start();
26  }
27
28  virtual gfx::Size GetPreferredSize() const OVERRIDE {
29    return gfx::Size(width(), height());
30  }
31
32  virtual void Layout() OVERRIDE {
33    View* child = child_at(0);
34    gfx::Size ps = child->GetPreferredSize();
35    child->SetBounds((width() - ps.width()) / 2,
36                     (height() - ps.height()) / 2,
37                     ps.width(), ps.height());
38    SizeToPreferredSize();
39  }
40
41 private:
42  Throbber* throbber_;
43
44  DISALLOW_COPY_AND_ASSIGN(ThrobberView);
45};
46
47}  // namespace
48
49ThrobberExample::ThrobberExample() : ExampleBase("Throbber") {
50}
51
52ThrobberExample::~ThrobberExample() {
53}
54
55void ThrobberExample::CreateExampleView(View* container) {
56  container->SetLayoutManager(new FillLayout());
57  container->AddChildView(new ThrobberView());
58}
59
60}  // namespace examples
61}  // namespace views
62