Index: views/controls/scrollbar/base_scroll_bar.h |
=================================================================== |
--- views/controls/scrollbar/base_scroll_bar.h (revision 98466) |
+++ views/controls/scrollbar/base_scroll_bar.h (working copy) |
@@ -1,156 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef VIEWS_CONTROLS_SCROLLBAR_BASE_SCROLL_BAR_H_ |
-#define VIEWS_CONTROLS_SCROLLBAR_BASE_SCROLL_BAR_H_ |
-#pragma once |
- |
-#include "views/context_menu_controller.h" |
-#include "views/controls/button/image_button.h" |
-#include "views/controls/menu/menu.h" |
-#include "views/controls/scrollbar/scroll_bar.h" |
-#include "views/repeat_controller.h" |
- |
-namespace views { |
- |
-class BaseScrollBarThumb; |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// |
-// BaseScrollBar |
-// |
-/////////////////////////////////////////////////////////////////////////////// |
-class VIEWS_EXPORT BaseScrollBar : public ScrollBar, |
- public ContextMenuController, |
- public Menu::Delegate { |
- public: |
- BaseScrollBar(bool horizontal, BaseScrollBarThumb* thumb); |
- virtual ~BaseScrollBar() { } |
- |
- // Get the bounds of the "track" area that the thumb is free to slide within. |
- virtual gfx::Rect GetTrackBounds() const = 0; |
- |
- // An enumeration of different amounts of incremental scroll, representing |
- // events sent from different parts of the UI/keyboard. |
- enum ScrollAmount { |
- SCROLL_NONE = 0, |
- SCROLL_START, |
- SCROLL_END, |
- SCROLL_PREV_LINE, |
- SCROLL_NEXT_LINE, |
- SCROLL_PREV_PAGE, |
- SCROLL_NEXT_PAGE, |
- }; |
- |
- // Scroll the contents by the specified type (see ScrollAmount above). |
- void ScrollByAmount(ScrollAmount amount); |
- |
- // Scroll the contents to the appropriate position given the supplied |
- // position of the thumb (thumb track coordinates). If |scroll_to_middle| is |
- // true, then the conversion assumes |thumb_position| is in the middle of the |
- // thumb rather than the top. |
- void ScrollToThumbPosition(int thumb_position, bool scroll_to_middle); |
- |
- // Scroll the contents by the specified offset (contents coordinates). |
- void ScrollByContentsOffset(int contents_offset); |
- |
- // View overrides: |
- virtual gfx::Size GetPreferredSize() OVERRIDE = 0; |
- virtual void Layout() OVERRIDE = 0; |
- virtual bool OnMousePressed(const MouseEvent& event) OVERRIDE; |
- virtual void OnMouseReleased(const MouseEvent& event) OVERRIDE; |
- virtual void OnMouseCaptureLost() OVERRIDE; |
- virtual bool OnKeyPressed(const KeyEvent& event) OVERRIDE; |
- virtual bool OnMouseWheel(const MouseWheelEvent& event) OVERRIDE; |
- |
- // ScrollBar overrides: |
- virtual void Update(int viewport_size, |
- int content_size, |
- int contents_scroll_offset) OVERRIDE; |
- virtual int GetLayoutSize() const OVERRIDE = 0; |
- virtual int GetPosition() const OVERRIDE; |
- |
- // ContextMenuController overrides. |
- virtual void ShowContextMenuForView(View* source, |
- const gfx::Point& p, |
- bool is_mouse_gesture) OVERRIDE; |
- |
- // Menu::Delegate overrides: |
- virtual std::wstring GetLabel(int id) const OVERRIDE; |
- virtual bool IsCommandEnabled(int id) const OVERRIDE; |
- virtual void ExecuteCommand(int id) OVERRIDE; |
- |
- protected: |
- // View overrides: |
- virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE = 0; |
- |
- BaseScrollBarThumb* GetThumb() const; |
- |
- CustomButton::ButtonState GetThumbTrackState() const; |
- |
- // Wrapper functions that calls the controller. We need this since native |
- // scrollbars wrap around a different scrollbar. When calling the controller |
- // we need to pass in the appropriate scrollbar. For normal scrollbars it's |
- // the |this| scrollbar, for native scrollbars it's the native scrollbar used |
- // to create this. |
- virtual void ScrollToPosition(int position); |
- virtual int GetScrollIncrement(bool is_page, bool is_positive); |
- |
- private: |
- // Called when the mouse is pressed down in the track area. |
- void TrackClicked(); |
- |
- // Responsible for scrolling the contents and also updating the UI to the |
- // current value of the Scroll Offset. |
- void ScrollContentsToOffset(); |
- |
- // Returns the size (width or height) of the track area of the ScrollBar. |
- int GetTrackSize() const; |
- |
- // Calculate the position of the thumb within the track based on the |
- // specified scroll offset of the contents. |
- int CalculateThumbPosition(int contents_scroll_offset) const; |
- |
- // Calculates the current value of the contents offset (contents coordinates) |
- // based on the current thumb position (thumb track coordinates). See |
- // |ScrollToThumbPosition| for an explanation of |scroll_to_middle|. |
- int CalculateContentsOffset(int thumb_position, |
- bool scroll_to_middle) const; |
- |
- // Called when the state of the thumb track changes (e.g. by the user |
- // pressing the mouse button down in it). |
- void SetThumbTrackState(CustomButton::ButtonState state); |
- |
- BaseScrollBarThumb* thumb_; |
- |
- // The size of the scrolled contents, in pixels. |
- int contents_size_; |
- |
- // The current amount the contents is offset by in the viewport. |
- int contents_scroll_offset_; |
- |
- // The state of the scrollbar track. Typically, the track will highlight when |
- // the user presses the mouse on them (during page scrolling). |
- CustomButton::ButtonState thumb_track_state_; |
- |
- // The last amount of incremental scroll that this scrollbar performed. This |
- // is accessed by the callbacks for the auto-repeat up/down buttons to know |
- // what direction to repeatedly scroll in. |
- ScrollAmount last_scroll_amount_; |
- |
- // An instance of a RepeatController which scrolls the scrollbar continuously |
- // as the user presses the mouse button down on the up/down buttons or the |
- // track. |
- RepeatController repeater_; |
- |
- // The position of the mouse within the scroll bar when the context menu |
- // was invoked. |
- int context_menu_mouse_position_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BaseScrollBar); |
-}; |
- |
-} // namespace views |
- |
-#endif // VIEWS_CONTROLS_SCROLLBAR_BASE_SCROLL_BAR_H_ |