Chromium Code Reviews| Index: chrome/browser/ui/panels/panel_strip.h |
| diff --git a/chrome/browser/ui/panels/panel_manager.h b/chrome/browser/ui/panels/panel_strip.h |
| similarity index 54% |
| copy from chrome/browser/ui/panels/panel_manager.h |
| copy to chrome/browser/ui/panels/panel_strip.h |
| index ce78dbe50b283c9aff941975f9be4ffd31ed8dd7..cc0ea2e2c895d468e47daa483c6871e2925e3b9d 100644 |
| --- a/chrome/browser/ui/panels/panel_manager.h |
| +++ b/chrome/browser/ui/panels/panel_strip.h |
| @@ -2,42 +2,39 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ |
| -#define CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ |
| +#ifndef CHROME_BROWSER_UI_PANELS_PANEL_STRIP_H_ |
| +#define CHROME_BROWSER_UI_PANELS_PANEL_STRIP_H_ |
| #pragma once |
| #include <vector> |
| #include "base/basictypes.h" |
| -#include "base/lazy_instance.h" |
| -#include "base/memory/scoped_ptr.h" |
| #include "base/memory/weak_ptr.h" |
| #include "chrome/browser/ui/panels/auto_hiding_desktop_bar.h" |
| -#include "chrome/browser/ui/panels/panel.h" |
| #include "chrome/browser/ui/panels/panel_mouse_watcher_observer.h" |
| +#include "chrome/browser/ui/panels/panel.h" |
| #include "ui/gfx/rect.h" |
| class Browser; |
| -class Panel; |
| -class PanelMouseWatcher; |
| +class PanelManager; |
| -// This class manages a set of panels. |
| -// Note that the ref count is needed by using PostTask in the implementation. |
| -class PanelManager : public PanelMouseWatcherObserver, |
| - public AutoHidingDesktopBar::Observer { |
| +// This class manages a group of panels displayed in a strip. |
|
jianli
2011/11/30 19:27:01
Probably more detail to the comment like:
in a s
jennb
2011/11/30 19:55:12
Added more details, but I purposely avoided limiti
|
| +class PanelStrip : public PanelMouseWatcherObserver { |
| public: |
| typedef std::vector<Panel*> Panels; |
| - // Returns a single instance. |
| - static PanelManager* GetInstance(); |
| + explicit PanelStrip(PanelManager* panel_manager); |
| + virtual ~PanelStrip(); |
| - // Called when the display is changed, i.e. work area is updated. |
| - void OnDisplayChanged(); |
| + // Sets the bounds of the panel strip. |
| + // |bounds| is in screen coordinates. |
| + void SetBounds(const gfx::Rect bounds); |
| - // Creates a panel and returns it. The panel might be queued for display |
| - // later. |
| - Panel* CreatePanel(Browser* browser); |
| + // Adds a panel to the strip. The panel may be a newly created panel or one |
| + // that is transitioning from another grouping of panels. |
| + void AddPanel(Panel* panel); |
| - void Remove(Panel* panel); |
| + // Returns |false| if the panel is not in the strip. |
| + bool Remove(Panel* panel); |
| void RemoveAll(); |
| // Drags the given panel. |
| @@ -67,11 +64,6 @@ class PanelManager : public PanelMouseWatcherObserver, |
| int GetBottomPositionForExpansionState( |
| Panel::ExpansionState expansion_state) const; |
| - // Returns the next browser window which could be either panel window or |
| - // tabbed window, to switch to if the given panel is going to be deactivated. |
| - // Returns NULL if such window cannot be found. |
| - BrowserWindow* GetNextBrowserWindowToActivate(Panel* panel) const; |
| - |
| int num_panels() const { return panels_.size(); } |
| bool is_dragging_panel() const; |
| const Panels& panels() const { return panels_; } |
| @@ -80,39 +72,16 @@ class PanelManager : public PanelMouseWatcherObserver, |
| int GetMaxPanelHeight() const; |
| int StartingRightPosition() const; |
| - // Moves a panel to the panel strip. The panel does not currently |
| - // belong in any other strip. This may cause other panels to be |
| - // bumped out of the panel strip. |
| - void MoveToPanelStrip(Panel* panel); |
| - |
| - // Moves a panel to the overflow strip. The panel does not currently |
| - // belong in any other strip. |
| - // |is_new| is true if the panel was just created. |
| - void MoveToOverflowStrip(Panel* panel, bool is_new); |
| - |
| // Overridden from PanelMouseWatcherObserver: |
| virtual void OnMouseMove(const gfx::Point& mouse_position) OVERRIDE; |
| + void OnAutoHidingDesktopBarVisibilityChanged( |
| + AutoHidingDesktopBar::Alignment alignment, |
| + AutoHidingDesktopBar::Visibility visibility); |
| + |
| #ifdef UNIT_TEST |
| static int horizontal_spacing() { return kPanelsHorizontalSpacing; } |
| - const gfx::Rect& work_area() const { |
| - return work_area_; |
| - } |
| - |
| - void set_auto_hiding_desktop_bar( |
| - AutoHidingDesktopBar* auto_hiding_desktop_bar) { |
| - auto_hiding_desktop_bar_ = auto_hiding_desktop_bar; |
| - } |
| - |
| - void enable_auto_sizing(bool enabled) { |
| - auto_sizing_enabled_ = enabled; |
| - } |
| - |
| - void SetWorkAreaForTesting(const gfx::Rect& work_area) { |
| - SetWorkArea(work_area); |
| - } |
| - |
| void remove_delays_for_testing() { |
| remove_delays_for_testing_ = true; |
| } |
| @@ -120,38 +89,18 @@ class PanelManager : public PanelMouseWatcherObserver, |
| int minimized_panel_count() { |
| return minimized_panel_count_; |
| } |
| - |
| - // Tests should disable mouse watching if mouse movements will be simulated. |
| - void disable_mouse_watching() { |
| - mouse_watching_disabled_ = true; |
| - } |
| #endif |
| private: |
| - friend struct base::DefaultLazyInstanceTraits<PanelManager>; |
| - FRIEND_TEST_ALL_PREFIXES(PanelBrowserTest, SizeClamping); |
| - |
| enum TitlebarAction { |
| NO_ACTION, |
| BRING_UP, |
| BRING_DOWN |
| }; |
| - PanelManager(); |
| - virtual ~PanelManager(); |
| - |
| - // Overridden from AutoHidingDesktopBar::Observer: |
| - virtual void OnAutoHidingDesktopBarThicknessChanged() OVERRIDE; |
| - virtual void OnAutoHidingDesktopBarVisibilityChanged( |
| - AutoHidingDesktopBar::Alignment alignment, |
| - AutoHidingDesktopBar::Visibility visibility) OVERRIDE; |
| - |
| - // Applies the new work area. This is called by OnDisplayChanged and the test |
| - // code. |
| - void SetWorkArea(const gfx::Rect& work_area); |
| - |
| - // Adjusts the work area to exclude the influence of auto-hiding desktop bars. |
| - void AdjustWorkAreaForAutoHidingDesktopBars(); |
| + // Helper functions to add a panel to the strip. |
| + void AddNewPanel(Panel* panel); |
| + void AddExistingPanel(Panel* panel); |
| // Keep track of the minimized panels to control mouse watching. |
| void IncrementMinimizedPanels(); |
| @@ -180,29 +129,20 @@ class PanelManager : public PanelMouseWatcherObserver, |
| int GetRightMostAvailablePosition() const; |
| + PanelManager* panel_manager_; // Weak, owns us. |
| + |
| + // All panels in the panel strip must fit within this area. |
| + gfx::Rect strip_bounds_; |
|
jianli
2011/11/30 19:27:01
Would strip_area_ sounds better? The suffix |bound
jennb
2011/11/30 19:55:12
I think of the strip like a containing view and th
|
| + |
| Panels panels_; |
| // Stores the panels that are pending to remove. We want to delay the removal |
| // when we're in the process of the dragging. |
| Panels panels_pending_to_remove_; |
| - // Use a mouse watcher to know when to bring up titlebars to "peek" at |
| - // minimized panels. Mouse movement is only tracked when there is a minimized |
| - // panel. |
| - scoped_ptr<PanelMouseWatcher> panel_mouse_watcher_; |
| int minimized_panel_count_; |
| bool are_titlebars_up_; |
| - // The maximum work area avaialble. This area does not include the area taken |
| - // by the always-visible (non-auto-hiding) desktop bars. |
| - gfx::Rect work_area_; |
| - |
| - // The useable work area for computing the panel bounds. This area excludes |
| - // the potential area that could be taken by the auto-hiding desktop |
| - // bars (we only consider those bars that are aligned to bottom, left, and |
| - // right of the screen edges) when they become fully visible. |
| - gfx::Rect adjusted_work_area_; |
| - |
| // Panel to drag. |
| size_t dragging_panel_index_; |
| @@ -215,21 +155,12 @@ class PanelManager : public PanelMouseWatcherObserver, |
| // to when the dragging ends. |
| gfx::Rect dragging_panel_bounds_; |
| - scoped_refptr<AutoHidingDesktopBar> auto_hiding_desktop_bar_; |
| - |
| // Delayed transitions support. Sometimes transitions between minimized and |
| // title-only states are delayed, for better usability with Taskbars/Docks. |
| TitlebarAction delayed_titlebar_action_; |
| bool remove_delays_for_testing_; |
| // Owned by MessageLoop after posting. |
| - base::WeakPtrFactory<PanelManager> titlebar_action_factory_; |
| - |
| - // Whether or not bounds will be updated when the preferred content size is |
| - // changed. The testing code could set this flag to false so that other tests |
| - // will not be affected. |
| - bool auto_sizing_enabled_; |
| - |
| - bool mouse_watching_disabled_; // For tests to simulate mouse movements. |
| + base::WeakPtrFactory<PanelStrip> titlebar_action_factory_; |
| static const int kPanelsHorizontalSpacing = 4; |
| @@ -239,7 +170,7 @@ class PanelManager : public PanelMouseWatcherObserver, |
| static const int kPanelMinWidth; |
| static const int kPanelMinHeight; |
| - DISALLOW_COPY_AND_ASSIGN(PanelManager); |
| + DISALLOW_COPY_AND_ASSIGN(PanelStrip); |
| }; |
| -#endif // CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ |
| +#endif // CHROME_BROWSER_UI_PANELS_PANEL_STRIP_H_ |