12ec310026e3218fb67a1a0ec9020199863a9282
[platform/framework/web/crosswalk.git] / src / ui / views / controls / resize_area.h
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::AXViewState* 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_