Home | History | Annotate | Download | only in shell
      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_SHELL_WINDOW_WATCHER_H_
      6 #define ASH_SHELL_WINDOW_WATCHER_H_
      7 
      8 #include <map>
      9 
     10 #include "ash/launcher/launcher_types.h"
     11 #include "base/compiler_specific.h"
     12 #include "base/logging.h"
     13 #include "base/memory/scoped_ptr.h"
     14 #include "ui/aura/window_observer.h"
     15 #include "ui/gfx/display_observer.h"
     16 
     17 namespace aura {
     18 class Window;
     19 }
     20 
     21 namespace ash {
     22 namespace shell {
     23 
     24 // TODO(sky): fix this class, its a bit broke with workspace2.
     25 
     26 // WindowWatcher is responsible for listening for newly created windows and
     27 // creating items on the Launcher for them.
     28 class WindowWatcher : public aura::WindowObserver,
     29                       public gfx::DisplayObserver {
     30  public:
     31   WindowWatcher();
     32   virtual ~WindowWatcher();
     33 
     34   aura::Window* GetWindowByID(ash::LauncherID id);
     35   ash::LauncherID GetIDByWindow(aura::Window* window) const;
     36 
     37   // aura::WindowObserver overrides:
     38   virtual void OnWindowAdded(aura::Window* new_window) OVERRIDE;
     39   virtual void OnWillRemoveWindow(aura::Window* window) OVERRIDE;
     40 
     41   // gfx::DisplayObserver overrides:
     42   virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE;
     43   virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE;
     44   virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE;
     45 
     46  private:
     47   class WorkspaceWindowWatcher;
     48 
     49   typedef std::map<ash::LauncherID, aura::Window*> IDToWindow;
     50 
     51   // Maps from window to the id we gave it.
     52   IDToWindow id_to_window_;
     53 
     54   scoped_ptr<WorkspaceWindowWatcher> workspace_window_watcher_;
     55 
     56   DISALLOW_COPY_AND_ASSIGN(WindowWatcher);
     57 };
     58 
     59 }  // namespace shell
     60 }  // namespace ash
     61 
     62 #endif  // ASH_SHELL_WINDOW_WATCHER_H_
     63