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 ASH_WM_WORKSPACE_CONTROLLER_H_ 6#define ASH_WM_WORKSPACE_CONTROLLER_H_ 7 8#include "ash/ash_export.h" 9#include "ash/wm/workspace/workspace_types.h" 10#include "base/basictypes.h" 11#include "base/memory/scoped_ptr.h" 12 13namespace aura { 14class Window; 15} 16 17namespace ash { 18class ShelfLayoutManager; 19class WorkspaceControllerTestHelper; 20class WorkspaceEventHandler; 21class WorkspaceLayoutManager; 22class WorkspaceLayoutManagerDelegate; 23 24// WorkspaceController acts as a central place that ties together all the 25// various workspace pieces. 26class ASH_EXPORT WorkspaceController { 27 public: 28 explicit WorkspaceController(aura::Window* viewport); 29 virtual ~WorkspaceController(); 30 31 // Returns the current window state. 32 WorkspaceWindowState GetWindowState() const; 33 34 void SetShelf(ShelfLayoutManager* shelf); 35 36 // Starts the animation that occurs on first login. 37 void DoInitialAnimation(); 38 39 // Add a delegate which adds a backdrop behind the top window of the default 40 // workspace. 41 void SetMaximizeBackdropDelegate( 42 scoped_ptr<WorkspaceLayoutManagerDelegate> delegate); 43 44 WorkspaceLayoutManager* layout_manager() { return layout_manager_; } 45 46 private: 47 friend class WorkspaceControllerTestHelper; 48 49 aura::Window* viewport_; 50 51 ShelfLayoutManager* shelf_; 52 scoped_ptr<WorkspaceEventHandler> event_handler_; 53 WorkspaceLayoutManager* layout_manager_; 54 55 DISALLOW_COPY_AND_ASSIGN(WorkspaceController); 56}; 57 58} // namespace ash 59 60#endif // ASH_WM_WORKSPACE_CONTROLLER_H_ 61