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. 4 5 #ifndef UI_VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_VIEWS_H_ 6 #define UI_VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_VIEWS_H_ 7 8 #include "base/compiler_specific.h" 9 #include "ui/gfx/point.h" 10 #include "ui/native_theme/native_theme.h" 11 #include "ui/views/controls/button/button.h" 12 #include "ui/views/controls/scrollbar/base_scroll_bar.h" 13 #include "ui/views/controls/scrollbar/native_scroll_bar_wrapper.h" 14 #include "ui/views/view.h" 15 16 namespace gfx { 17 class Canvas; 18 } 19 20 namespace views { 21 22 class NativeScrollBar; 23 24 // Views implementation for the scrollbar. 25 class VIEWS_EXPORT NativeScrollBarViews : public BaseScrollBar, 26 public ButtonListener, 27 public NativeScrollBarWrapper { 28 public: 29 static const char kViewClassName[]; 30 31 // Creates new scrollbar, either horizontal or vertical. 32 explicit NativeScrollBarViews(NativeScrollBar* native_scroll_bar); 33 virtual ~NativeScrollBarViews(); 34 35 private: 36 // View overrides: 37 virtual void Layout() OVERRIDE; 38 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 39 virtual gfx::Size GetPreferredSize() OVERRIDE; 40 virtual const char* GetClassName() const OVERRIDE; 41 42 // ScrollBar overrides: 43 virtual int GetLayoutSize() const OVERRIDE; 44 45 // BaseScrollBar overrides: 46 virtual void ScrollToPosition(int position) OVERRIDE; 47 virtual int GetScrollIncrement(bool is_page, bool is_positive) OVERRIDE; 48 49 // BaseButton::ButtonListener overrides: 50 virtual void ButtonPressed(Button* sender, 51 const ui::Event& event) OVERRIDE; 52 53 // NativeScrollBarWrapper overrides: 54 virtual int GetPosition() const OVERRIDE; 55 virtual View* GetView() OVERRIDE; 56 virtual void Update(int viewport_size, 57 int content_size, 58 int current_pos) OVERRIDE; 59 60 // Returns the area for the track. This is the area of the scrollbar minus 61 // the size of the arrow buttons. 62 virtual gfx::Rect GetTrackBounds() const OVERRIDE; 63 64 // The NativeScrollBar we are bound to. 65 NativeScrollBar* native_scroll_bar_; 66 67 // The scroll bar buttons (Up/Down, Left/Right). 68 Button* prev_button_; 69 Button* next_button_; 70 71 ui::NativeTheme::ExtraParams params_; 72 ui::NativeTheme::Part part_; 73 ui::NativeTheme::State state_; 74 75 DISALLOW_COPY_AND_ASSIGN(NativeScrollBarViews); 76 }; 77 78 } // namespace views 79 80 #endif // UI_VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_VIEWS_H_ 81