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 namespace internal {
     19 
     20 class ShelfLayoutManager;
     21 class WorkspaceControllerTestHelper;
     22 class WorkspaceEventHandler;
     23 class WorkspaceLayoutManager;
     24 
     25 // WorkspaceController acts as a central place that ties together all the
     26 // various workspace pieces.
     27 class ASH_EXPORT WorkspaceController {
     28  public:
     29   explicit WorkspaceController(aura::Window* viewport);
     30   virtual ~WorkspaceController();
     31 
     32   // Returns the current window state.
     33   WorkspaceWindowState GetWindowState() const;
     34 
     35   void SetShelf(ShelfLayoutManager* shelf);
     36 
     37   // Starts the animation that occurs on first login.
     38   void DoInitialAnimation();
     39 
     40  private:
     41   friend class WorkspaceControllerTestHelper;
     42 
     43   aura::Window* viewport_;
     44 
     45   internal::ShelfLayoutManager* shelf_;
     46   scoped_ptr<internal::WorkspaceEventHandler> event_handler_;
     47   internal::WorkspaceLayoutManager* layout_manager_;
     48 
     49   DISALLOW_COPY_AND_ASSIGN(WorkspaceController);
     50 };
     51 
     52 }  // namespace internal
     53 }  // namespace ash
     54 
     55 #endif  // ASH_WM_WORKSPACE_CONTROLLER_H_
     56