• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef UI_VIEWS_CONTROLS_RESIZE_AREA_H_
6 #define UI_VIEWS_CONTROLS_RESIZE_AREA_H_
7 
8 #include <string>
9 
10 #include "ui/views/view.h"
11 
12 namespace views {
13 
14 class ResizeAreaDelegate;
15 
16 ////////////////////////////////////////////////////////////////////////////////
17 //
18 // An invisible area that acts like a horizontal resizer.
19 //
20 ////////////////////////////////////////////////////////////////////////////////
21 class VIEWS_EXPORT ResizeArea : public View {
22  public:
23   static const char kViewClassName[];
24 
25   explicit ResizeArea(ResizeAreaDelegate* delegate);
26   virtual ~ResizeArea();
27 
28   // Overridden from views::View:
29   virtual const char* GetClassName() const OVERRIDE;
30   virtual gfx::NativeCursor GetCursor(const ui::MouseEvent& event) OVERRIDE;
31   virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
32   virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE;
33   virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE;
34   virtual void OnMouseCaptureLost() OVERRIDE;
35   virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE;
36 
37  private:
38   // Report the amount the user resized by to the delegate, accounting for
39   // directionality.
40   void ReportResizeAmount(int resize_amount, bool last_update);
41 
42   // The delegate to notify when we have updates.
43   ResizeAreaDelegate* delegate_;
44 
45   // The mouse position at start (in screen coordinates).
46   int initial_position_;
47 
48   DISALLOW_COPY_AND_ASSIGN(ResizeArea);
49 };
50 
51 }  // namespace views
52 
53 #endif  // UI_VIEWS_CONTROLS_RESIZE_AREA_H_
54