Home | History | Annotate | Download | only in controls
      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