• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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 CHROME_BROWSER_UI_PANELS_PANEL_RESIZE_CONTROLLER_H_
6 #define CHROME_BROWSER_UI_PANELS_PANEL_RESIZE_CONTROLLER_H_
7 
8 #include <set>
9 #include "base/basictypes.h"
10 #include "chrome/browser/ui/panels/panel_constants.h"
11 #include "ui/gfx/point.h"
12 #include "ui/gfx/rect.h"
13 
14 class Panel;
15 class PanelManager;
16 namespace gfx {
17   class Rect;
18 }
19 
20 // Responsible for handling resize operations initiated for all panels.
21 class PanelResizeController {
22  public:
23   explicit PanelResizeController(PanelManager* panel_manager);
24 
25   // Resize the given panel.
26   // |mouse_location| is in screen coordinate system.
27   void StartResizing(Panel* panel,
28                      const gfx::Point& mouse_location,
29                      panel::ResizingSides sides);
30   void Resize(const gfx::Point& mouse_location);
31 
32   // Returns the panel that was resized.
33   Panel* EndResizing(bool cancelled);
34 
35   // Asynchronous confirmation of panel having been closed.
36   void OnPanelClosed(Panel* panel);
37 
IsResizing()38   bool IsResizing() const { return resizing_panel_ != NULL; }
39 
40  private:
41   PanelManager* panel_manager_;  // Weak, owns us.
42 
43   // Panel currently being resized.
44   Panel* resizing_panel_;
45 
46   // Resizing at which side?
47   panel::ResizingSides sides_resized_;
48 
49   // The mouse location, in screen coordinates, when StartResizing
50   // previously called.
51   gfx::Point mouse_location_at_start_;
52 
53   // Bounds to restore the panel to if resize is cancelled.
54   gfx::Rect bounds_at_start_;
55 
56   DISALLOW_COPY_AND_ASSIGN(PanelResizeController);
57 };
58 
59 #endif  // CHROME_BROWSER_UI_PANELS_PANEL_RESIZE_CONTROLLER_H_
60