| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ | 5 #ifndef CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ |
| 6 #define CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ | 6 #define CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ |
| 7 | 7 |
| 8 #include <list> |
| 8 #include <vector> | 9 #include <vector> |
| 9 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 10 #include "base/lazy_instance.h" | 11 #include "base/lazy_instance.h" |
| 11 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 12 #include "chrome/browser/ui/panels/display_settings_provider.h" | 13 #include "chrome/browser/ui/panels/display_settings_provider.h" |
| 13 #include "chrome/browser/ui/panels/panel.h" | 14 #include "chrome/browser/ui/panels/panel.h" |
| 14 #include "chrome/browser/ui/panels/panel_collection.h" | 15 #include "chrome/browser/ui/panels/panel_collection.h" |
| 15 #include "chrome/browser/ui/panels/panel_constants.h" | 16 #include "chrome/browser/ui/panels/panel_constants.h" |
| 16 #include "ui/gfx/rect.h" | 17 #include "ui/gfx/rect.h" |
| 17 | 18 |
| 18 class DetachedPanelCollection; | 19 class DetachedPanelCollection; |
| 19 class DockedPanelCollection; | 20 class DockedPanelCollection; |
| 20 class GURL; | 21 class GURL; |
| 21 class PanelDragController; | 22 class PanelDragController; |
| 22 class PanelResizeController; | 23 class PanelResizeController; |
| 23 class PanelMouseWatcher; | 24 class PanelMouseWatcher; |
| 25 class StackedPanelCollection; |
| 24 | 26 |
| 25 // This class manages a set of panels. | 27 // This class manages a set of panels. |
| 26 class PanelManager : public DisplaySettingsProvider::DisplayAreaObserver, | 28 class PanelManager : public DisplaySettingsProvider::DisplayAreaObserver, |
| 27 public DisplaySettingsProvider::FullScreenObserver { | 29 public DisplaySettingsProvider::FullScreenObserver { |
| 28 public: | 30 public: |
| 31 typedef std::list<StackedPanelCollection*> Stacks; |
| 32 |
| 29 enum CreateMode { | 33 enum CreateMode { |
| 30 CREATE_AS_DOCKED, // Creates a docked panel. The default. | 34 CREATE_AS_DOCKED, // Creates a docked panel. The default. |
| 31 CREATE_AS_DETACHED // Creates a detached panel. | 35 CREATE_AS_DETACHED // Creates a detached panel. |
| 32 }; | 36 }; |
| 33 | 37 |
| 34 // Returns a single instance. | 38 // Returns a single instance. |
| 35 static PanelManager* GetInstance(); | 39 static PanelManager* GetInstance(); |
| 36 | 40 |
| 37 // Returns true if panels should be used for the extension. | 41 // Returns true if panels should be used for the extension. |
| 38 static bool ShouldUsePanels(const std::string& extension_id); | 42 static bool ShouldUsePanels(const std::string& extension_id); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 56 const GURL& url, | 60 const GURL& url, |
| 57 const gfx::Rect& requested_bounds, | 61 const gfx::Rect& requested_bounds, |
| 58 CreateMode mode); | 62 CreateMode mode); |
| 59 | 63 |
| 60 // Close all panels (asynchronous). Panels will be removed after closing. | 64 // Close all panels (asynchronous). Panels will be removed after closing. |
| 61 void CloseAll(); | 65 void CloseAll(); |
| 62 | 66 |
| 63 // Asynchronous confirmation of panel having been closed. | 67 // Asynchronous confirmation of panel having been closed. |
| 64 void OnPanelClosed(Panel* panel); | 68 void OnPanelClosed(Panel* panel); |
| 65 | 69 |
| 70 // Creates a StackedPanelCollection and returns it. |
| 71 StackedPanelCollection* CreateStack(); |
| 72 |
| 73 // Deletes |stack|. The stack must be empty at the time of deletion. |
| 74 void RemoveStack(StackedPanelCollection* stack); |
| 75 |
| 66 // Returns the maximum size that panel can be auto-resized or resized by the | 76 // Returns the maximum size that panel can be auto-resized or resized by the |
| 67 // API. | 77 // API. |
| 68 int GetMaxPanelWidth() const; | 78 int GetMaxPanelWidth() const; |
| 69 int GetMaxPanelHeight() const; | 79 int GetMaxPanelHeight() const; |
| 70 | 80 |
| 71 // Drags the given panel. | 81 // Drags the given panel. |
| 72 // |mouse_location| is in screen coordinate system. | 82 // |mouse_location| is in screen coordinate system. |
| 73 void StartDragging(Panel* panel, const gfx::Point& mouse_location); | 83 void StartDragging(Panel* panel, const gfx::Point& mouse_location); |
| 74 void Drag(const gfx::Point& mouse_location); | 84 void Drag(const gfx::Point& mouse_location); |
| 75 void EndDragging(bool cancelled); | 85 void EndDragging(bool cancelled); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 89 PanelCollection* target_collection, | 99 PanelCollection* target_collection, |
| 90 PanelCollection::PositioningMask positioning_mask); | 100 PanelCollection::PositioningMask positioning_mask); |
| 91 | 101 |
| 92 // Returns true if we should bring up the titlebars, given the current mouse | 102 // Returns true if we should bring up the titlebars, given the current mouse |
| 93 // point. | 103 // point. |
| 94 bool ShouldBringUpTitlebars(int mouse_x, int mouse_y) const; | 104 bool ShouldBringUpTitlebars(int mouse_x, int mouse_y) const; |
| 95 | 105 |
| 96 // Brings up or down the titlebars for all minimized panels. | 106 // Brings up or down the titlebars for all minimized panels. |
| 97 void BringUpOrDownTitlebars(bool bring_up); | 107 void BringUpOrDownTitlebars(bool bring_up); |
| 98 | 108 |
| 109 std::vector<Panel*> GetDetachedAndStackedPanels() const; |
| 110 |
| 99 int num_panels() const; | 111 int num_panels() const; |
| 100 std::vector<Panel*> panels() const; | 112 std::vector<Panel*> panels() const; |
| 101 | 113 |
| 114 const Stacks& stacks() const { return stacks_; } |
| 115 int num_stacks() const { return stacks_.size(); } |
| 116 |
| 102 PanelDragController* drag_controller() const { | 117 PanelDragController* drag_controller() const { |
| 103 return drag_controller_.get(); | 118 return drag_controller_.get(); |
| 104 } | 119 } |
| 105 | 120 |
| 106 #ifdef UNIT_TEST | 121 #ifdef UNIT_TEST |
| 107 PanelResizeController* resize_controller() const { | 122 PanelResizeController* resize_controller() const { |
| 108 return resize_controller_.get(); | 123 return resize_controller_.get(); |
| 109 } | 124 } |
| 110 #endif | 125 #endif |
| 111 | 126 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 virtual void OnFullScreenModeChanged(bool is_full_screen) OVERRIDE; | 191 virtual void OnFullScreenModeChanged(bool is_full_screen) OVERRIDE; |
| 177 | 192 |
| 178 // Tests may want to use a mock panel mouse watcher. | 193 // Tests may want to use a mock panel mouse watcher. |
| 179 void SetMouseWatcher(PanelMouseWatcher* watcher); | 194 void SetMouseWatcher(PanelMouseWatcher* watcher); |
| 180 | 195 |
| 181 // Tests may want to shorten time intervals to reduce running time. | 196 // Tests may want to shorten time intervals to reduce running time. |
| 182 static bool shorten_time_intervals_; | 197 static bool shorten_time_intervals_; |
| 183 | 198 |
| 184 scoped_ptr<DetachedPanelCollection> detached_collection_; | 199 scoped_ptr<DetachedPanelCollection> detached_collection_; |
| 185 scoped_ptr<DockedPanelCollection> docked_collection_; | 200 scoped_ptr<DockedPanelCollection> docked_collection_; |
| 201 Stacks stacks_; |
| 186 | 202 |
| 187 scoped_ptr<PanelDragController> drag_controller_; | 203 scoped_ptr<PanelDragController> drag_controller_; |
| 188 scoped_ptr<PanelResizeController> resize_controller_; | 204 scoped_ptr<PanelResizeController> resize_controller_; |
| 189 | 205 |
| 190 // Use a mouse watcher to know when to bring up titlebars to "peek" at | 206 // Use a mouse watcher to know when to bring up titlebars to "peek" at |
| 191 // minimized panels. Mouse movement is only tracked when there is a minimized | 207 // minimized panels. Mouse movement is only tracked when there is a minimized |
| 192 // panel. | 208 // panel. |
| 193 scoped_ptr<PanelMouseWatcher> panel_mouse_watcher_; | 209 scoped_ptr<PanelMouseWatcher> panel_mouse_watcher_; |
| 194 | 210 |
| 195 scoped_ptr<DisplaySettingsProvider> display_settings_provider_; | 211 scoped_ptr<DisplaySettingsProvider> display_settings_provider_; |
| 196 | 212 |
| 197 gfx::Rect display_area_; | 213 gfx::Rect display_area_; |
| 198 | 214 |
| 199 // Whether or not bounds will be updated when the preferred content size is | 215 // Whether or not bounds will be updated when the preferred content size is |
| 200 // changed. The testing code could set this flag to false so that other tests | 216 // changed. The testing code could set this flag to false so that other tests |
| 201 // will not be affected. | 217 // will not be affected. |
| 202 bool auto_sizing_enabled_; | 218 bool auto_sizing_enabled_; |
| 203 | 219 |
| 204 DISALLOW_COPY_AND_ASSIGN(PanelManager); | 220 DISALLOW_COPY_AND_ASSIGN(PanelManager); |
| 205 }; | 221 }; |
| 206 | 222 |
| 207 #endif // CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ | 223 #endif // CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ |
| OLD | NEW |