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