Home | History | Annotate | Download | only in wm
      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 
     13 namespace aura {
     14 class Window;
     15 }
     16 
     17 namespace ash {
     18 class ShelfLayoutManager;
     19 class WorkspaceControllerTestHelper;
     20 class WorkspaceEventHandler;
     21 class WorkspaceLayoutManager;
     22 class WorkspaceLayoutManagerDelegate;
     23 
     24 // WorkspaceController acts as a central place that ties together all the
     25 // various workspace pieces.
     26 class 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