summaryrefslogtreecommitdiffstats
path: root/views/controls/scrollbar/bitmap_scroll_bar.h
diff options
context:
space:
mode:
Diffstat (limited to 'views/controls/scrollbar/bitmap_scroll_bar.h')
-rw-r--r--views/controls/scrollbar/bitmap_scroll_bar.h130
1 files changed, 12 insertions, 118 deletions
diff --git a/views/controls/scrollbar/bitmap_scroll_bar.h b/views/controls/scrollbar/bitmap_scroll_bar.h
index ce072bf..9b5cc91 100644
--- a/views/controls/scrollbar/bitmap_scroll_bar.h
+++ b/views/controls/scrollbar/bitmap_scroll_bar.h
@@ -6,11 +6,7 @@
#define VIEWS_CONTROLS_SCROLLBAR_BITMAP_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"
+#include "views/controls/scrollbar/base_scroll_bar.h"
namespace views {
@@ -27,24 +23,13 @@ class BitmapScrollBarThumb;
// well as for the thumb and track. This is intended for creating UIs that
// have customized, non-native appearances, like floating HUDs etc.
//
-// Maybe TODO(beng): (Cleanup) If we need to, we may want to factor rendering
-// out of this altogether and have the user supply
-// Background impls for each component, and just use those
-// to render, so that for example we get native theme
-// rendering.
-//
///////////////////////////////////////////////////////////////////////////////
-class BitmapScrollBar : public ScrollBar,
- public ButtonListener,
- public ContextMenuController,
- public Menu::Delegate {
+class VIEWS_EXPORT BitmapScrollBar : public BaseScrollBar,
+ public ButtonListener {
public:
BitmapScrollBar(bool horizontal, bool show_scroll_buttons);
virtual ~BitmapScrollBar() { }
- // Get the bounds of the "track" area that the thumb is free to slide within.
- gfx::Rect GetTrackBounds() const;
-
// A list of parts that the user may supply bitmaps for.
enum ScrollBarPart {
// The button used to represent scrolling up/left by 1 line.
@@ -71,122 +56,31 @@ class BitmapScrollBar : public ScrollBar,
CustomButton::ButtonState state,
SkBitmap* bitmap);
- // 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);
+ gfx::Rect GetTrackBounds() const;
+ protected:
// View overrides:
virtual gfx::Size GetPreferredSize() OVERRIDE;
virtual void Layout() OVERRIDE;
- 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;
-
- // BaseButton::ButtonListener overrides:
- virtual void ButtonPressed(Button* sender,
- const views::Event& event) OVERRIDE;
+ virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
// ScrollBar overrides:
- virtual void Update(int viewport_size,
- int content_size,
- int contents_scroll_offset) OVERRIDE;
virtual int GetLayoutSize() const OVERRIDE;
- 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;
+ // BaseButton::ButtonListener overrides:
+ virtual void ButtonPressed(Button* sender,
+ const views::Event& event) OVERRIDE;
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);
+ // Up/Down/Left/Right buttons.
+ ImageButton* prev_button_;
+ ImageButton* next_button_;
// The thumb needs to be able to access the part images.
friend BitmapScrollBarThumb;
SkBitmap* images_[PART_COUNT][CustomButton::BS_COUNT];
- // 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_;
-
- // Up/Down/Left/Right buttons and the Thumb.
- ImageButton* prev_button_;
- ImageButton* next_button_;
- BitmapScrollBarThumb* thumb_;
-
- // 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_;
-
// True if the scroll buttons at each end of the scroll bar should be shown.
bool show_scroll_buttons_;