panel_browser_view.h revision 731df977c0511bca2206b5f333555b1205ff1f43
1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_CHROMEOS_FRAME_PANEL_BROWSER_VIEW_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_CHROMEOS_FRAME_PANEL_BROWSER_VIEW_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "app/x11_util.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/scoped_ptr.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/frame/panel_controller.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/views/frame/browser_view.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Browser; 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos { 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass PanelController; 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A browser view that implements Panel specific behavior. 21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// NOTE: This inherits from ::BrowserView in chrome/browser/views/frame/, 22731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// not chromeos::BrowserView in chrome/browser/chromeos/frame/. 23731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass PanelBrowserView : public ::BrowserView, 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public PanelController::Delegate { 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch explicit PanelBrowserView(Browser* browser); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // BrowserView overrides. 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void Init(); 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void Show(); 31731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick virtual void SetBounds(const gfx::Rect& bounds); 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void Close(); 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void UpdateTitleBar(); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void ActivationChanged(bool activated); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetCreatorView(PanelBrowserView* creator); 36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const; 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // PanelController::Delegate overrides 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual string16 GetPanelTitle(); 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual SkBitmap GetPanelIcon(); 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void ClosePanel(); 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void OnPanelStateChanged(PanelController::State state) {} 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 45731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Enforces the min, max, and default bounds. 46731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick void LimitBounds(gfx::Rect* bounds) const; 47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Controls interactions with the window manager for popup panels. 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<chromeos::PanelController> panel_controller_; 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // X id for the content window of the panel that created this 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // panel. This tells ChromeOS that it should be created next to the 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // content window of this panel. 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch XID creator_xid_; 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(PanelBrowserView); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace chromeos 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_CHROMEOS_FRAME_PANEL_BROWSER_VIEW_H_ 61