1 // Copyright 2013 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 ASH_WM_OVERVIEW_WINDOW_SELECTOR_PANELS_H_ 6 #define ASH_WM_OVERVIEW_WINDOW_SELECTOR_PANELS_H_ 7 8 #include "ash/wm/overview/window_selector_item.h" 9 #include "base/compiler_specific.h" 10 #include "base/memory/scoped_vector.h" 11 #include "ui/gfx/rect.h" 12 #include "ui/views/controls/button/button.h" 13 14 namespace ash { 15 16 class ScopedTransformOverviewWindow; 17 18 // This class implements a window selector item containing one or more attached 19 // panel windows. These panels are grouped into a single overview item in 20 // overview mode and the callout arrows are hidden at this point. 21 class WindowSelectorPanels : public WindowSelectorItem { 22 public: 23 explicit WindowSelectorPanels(aura::Window* panels_root_window); 24 virtual ~WindowSelectorPanels(); 25 26 // Adds |window| to the selector item. This window should be an attached 27 // panel window. 28 void AddWindow(aura::Window* window); 29 30 // WindowSelectorItem: 31 virtual aura::Window* GetRootWindow() OVERRIDE; 32 virtual bool HasSelectableWindow(const aura::Window* window) OVERRIDE; 33 virtual bool Contains(const aura::Window* target) OVERRIDE; 34 virtual void RestoreWindowOnExit(aura::Window* window) OVERRIDE; 35 virtual aura::Window* SelectionWindow() OVERRIDE; 36 virtual void RemoveWindow(const aura::Window* window) OVERRIDE; 37 virtual bool empty() const OVERRIDE; 38 virtual void PrepareForOverview() OVERRIDE; 39 virtual void SetItemBounds(aura::Window* root_window, 40 const gfx::Rect& target_bounds, 41 bool animate) OVERRIDE; 42 43 private: 44 typedef ScopedVector<ScopedTransformOverviewWindow> WindowList; 45 WindowList transform_windows_; 46 47 // The root window of the panels this item contains. 48 aura::Window* panels_root_window_; 49 50 DISALLOW_COPY_AND_ASSIGN(WindowSelectorPanels); 51 }; 52 53 } // namespace ash 54 55 #endif // ASH_WM_OVERVIEW_WINDOW_SELECTOR_PANELS_H_ 56