15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ASH_WM_WORKSPACE_CONTROLLER_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ASH_WM_WORKSPACE_CONTROLLER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/ash_export.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/wm/workspace/workspace_types.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Window; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShelfLayoutManager; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WorkspaceControllerTestHelper; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WorkspaceEventHandler; 21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class WorkspaceLayoutManager; 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class WorkspaceLayoutManagerDelegate; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// WorkspaceController acts as a central place that ties together all the 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// various workspace pieces. 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class ASH_EXPORT WorkspaceController { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit WorkspaceController(aura::Window* viewport); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~WorkspaceController(); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the current window state. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WorkspaceWindowState GetWindowState() const; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetShelf(ShelfLayoutManager* shelf); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Starts the animation that occurs on first login. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DoInitialAnimation(); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Add a delegate which adds a backdrop behind the top window of the default 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // workspace. 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void SetMaximizeBackdropDelegate( 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<WorkspaceLayoutManagerDelegate> delegate); 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) WorkspaceLayoutManager* layout_manager() { return layout_manager_; } 4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class WorkspaceControllerTestHelper; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) aura::Window* viewport_; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ShelfLayoutManager* shelf_; 52c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<WorkspaceEventHandler> event_handler_; 53c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch WorkspaceLayoutManager* layout_manager_; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(WorkspaceController); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // ASH_WM_WORKSPACE_CONTROLLER_H_ 61