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 12namespace views { 13 14class ResizeAreaDelegate; 15 16//////////////////////////////////////////////////////////////////////////////// 17// 18// An invisible area that acts like a horizontal resizer. 19// 20//////////////////////////////////////////////////////////////////////////////// 21class 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_ 54