Add ICU message format support
[chromium-blink-merge.git] / ui / views / controls / scrollbar / native_scroll_bar.cc
bloba768af5e52edd160ec5fa8d56697af4a424a42f1
1 // Copyright (c) 2012 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.
5 #include "ui/views/controls/scrollbar/native_scroll_bar.h"
7 #include <algorithm>
8 #include <string>
10 #include "base/message_loop/message_loop.h"
11 #include "ui/events/event.h"
12 #include "ui/views/controls/scrollbar/native_scroll_bar_views.h"
13 #include "ui/views/controls/scrollbar/native_scroll_bar_wrapper.h"
14 #include "ui/views/widget/widget.h"
16 namespace views {
18 // static
19 const char NativeScrollBar::kViewClassName[] = "NativeScrollBar";
21 ////////////////////////////////////////////////////////////////////////////////
22 // NativeScrollBar, public:
23 NativeScrollBar::NativeScrollBar(bool is_horizontal)
24 : ScrollBar(is_horizontal),
25 native_wrapper_(NULL) {
28 NativeScrollBar::~NativeScrollBar() {
31 // static
32 int NativeScrollBar::GetHorizontalScrollBarHeight(
33 const ui::NativeTheme* theme) {
34 return NativeScrollBarWrapper::GetHorizontalScrollBarHeight(theme);
37 // static
38 int NativeScrollBar::GetVerticalScrollBarWidth(
39 const ui::NativeTheme* theme) {
40 return NativeScrollBarWrapper::GetVerticalScrollBarWidth(theme);
43 ////////////////////////////////////////////////////////////////////////////////
44 // NativeScrollBar, View overrides:
45 gfx::Size NativeScrollBar::GetPreferredSize() const {
46 if (native_wrapper_)
47 return native_wrapper_->GetView()->GetPreferredSize();
48 return gfx::Size();
51 void NativeScrollBar::Layout() {
52 if (native_wrapper_) {
53 native_wrapper_->GetView()->SetBounds(0, 0, width(), height());
54 native_wrapper_->GetView()->Layout();
58 void NativeScrollBar::ViewHierarchyChanged(
59 const ViewHierarchyChangedDetails& details) {
60 if (details.is_add && !native_wrapper_ && GetWidget()) {
61 native_wrapper_ = NativeScrollBarWrapper::CreateWrapper(this);
62 AddChildView(native_wrapper_->GetView());
66 const char* NativeScrollBar::GetClassName() const {
67 return kViewClassName;
70 // Overridden from View for keyboard UI.
71 bool NativeScrollBar::OnKeyPressed(const ui::KeyEvent& event) {
72 if (!native_wrapper_)
73 return false;
74 return native_wrapper_->GetView()->OnKeyPressed(event);
77 void NativeScrollBar::OnGestureEvent(ui::GestureEvent* event) {
78 if (!native_wrapper_)
79 return;
80 native_wrapper_->GetView()->OnGestureEvent(event);
83 bool NativeScrollBar::OnMouseWheel(const ui::MouseWheelEvent& event) {
84 if (!native_wrapper_)
85 return false;
86 return native_wrapper_->GetView()->OnMouseWheel(event);
89 ////////////////////////////////////////////////////////////////////////////////
90 // NativeScrollBar, ScrollBar overrides:
91 void NativeScrollBar::Update(int viewport_size,
92 int content_size,
93 int current_pos) {
94 ScrollBar::Update(viewport_size, content_size, current_pos);
96 if (native_wrapper_)
97 native_wrapper_->Update(viewport_size, content_size, current_pos);
100 int NativeScrollBar::GetLayoutSize() const {
101 return IsHorizontal() ?
102 GetHorizontalScrollBarHeight(GetNativeTheme()) :
103 GetVerticalScrollBarWidth(GetNativeTheme());
106 int NativeScrollBar::GetPosition() const {
107 if (!native_wrapper_)
108 return 0;
109 return native_wrapper_->GetPosition();
112 } // namespace views