124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Copyright (c) 2012 The Chromium Authors. All rights reserved. 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Use of this source code is governed by a BSD-style license that can be 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// found in the LICENSE file. 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef ASH_SHELL_WINDOW_WATCHER_H_ 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define ASH_SHELL_WINDOW_WATCHER_H_ 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <map> 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "ash/shelf/shelf_item_types.h" 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "base/compiler_specific.h" 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "base/logging.h" 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "base/memory/scoped_ptr.h" 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "ui/aura/window_observer.h" 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "ui/gfx/display_observer.h" 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace aura { 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass Window; 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace ash { 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace shell { 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// TODO(sky): fix this class, its a bit broke with workspace2. 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// WindowWatcher is responsible for listening for newly created windows and 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// creating items on the Shelf for them. 280e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Claytonclass WindowWatcher : public aura::WindowObserver, 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner public gfx::DisplayObserver { 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner public: 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner WindowWatcher(); 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual ~WindowWatcher(); 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner aura::Window* GetWindowByID(ash::ShelfID id); 35188091899842b140313b54e097f16efbe165c998Greg Clayton 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // aura::WindowObserver overrides: 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual void OnWindowAdded(aura::Window* new_window) OVERRIDE; 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual void OnWillRemoveWindow(aura::Window* window) OVERRIDE; 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 403508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton // gfx::DisplayObserver overrides: 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE; 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE; 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual void OnDisplayMetricsChanged(const gfx::Display& display, 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t metrics) OVERRIDE; 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner private: 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner class WorkspaceWindowWatcher; 480e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef std::map<ash::ShelfID, aura::Window*> IDToWindow; 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Maps from window to the id we gave it. 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner IDToWindow id_to_window_; 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner scoped_ptr<WorkspaceWindowWatcher> workspace_window_watcher_; 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN(WindowWatcher); 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 59} // namespace shell 60} // namespace ash 61 62#endif // ASH_SHELL_WINDOW_WATCHER_H_ 63