1 // Copyright (c) 2011 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 CHROME_BROWSER_CHROMEOS_FRAME_PANEL_BROWSER_VIEW_H_ 6 #define CHROME_BROWSER_CHROMEOS_FRAME_PANEL_BROWSER_VIEW_H_ 7 #pragma once 8 9 #include "base/memory/scoped_ptr.h" 10 #include "chrome/browser/chromeos/frame/panel_controller.h" 11 #include "chrome/browser/ui/views/frame/browser_view.h" 12 #include "ui/base/x/x11_util.h" 13 14 class Browser; 15 16 namespace chromeos { 17 18 class PanelController; 19 20 // A browser view that implements Panel specific behavior. 21 // NOTE: This inherits from ::BrowserView in chrome/browser/ui/views/frame/, 22 // not chromeos::BrowserView in chrome/browser/chromeos/frame/. 23 class PanelBrowserView : public ::BrowserView, 24 public PanelController::Delegate { 25 public: 26 explicit PanelBrowserView(Browser* browser); 27 28 // BrowserView overrides. 29 virtual void Show(); 30 virtual void ShowInactive(); 31 virtual void SetBounds(const gfx::Rect& bounds); 32 virtual void Close(); 33 virtual void UpdateTitleBar(); 34 virtual void SetCreatorView(PanelBrowserView* creator); 35 virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const; 36 virtual void OnWindowActivationChanged(bool active); 37 38 // BrowserView : TabStripModelObserver overrides. 39 virtual void TabChangedAt(TabContentsWrapper* contents, 40 int index, 41 TabChangeType change_type); 42 43 // PanelController::Delegate overrides 44 virtual string16 GetPanelTitle(); 45 virtual SkBitmap GetPanelIcon(); 46 virtual bool CanClosePanel(); 47 virtual void ClosePanel(); 48 virtual void ActivatePanel(); 49 virtual void OnPanelStateChanged(PanelController::State state) {} 50 51 private: 52 // Enforces the min, max, and default bounds. 53 void LimitBounds(gfx::Rect* bounds) const; 54 55 void InitPanelController(bool is_active); 56 57 // Controls interactions with the window manager for popup panels. 58 scoped_ptr<chromeos::PanelController> panel_controller_; 59 60 // X id for the content window of the panel that created this 61 // panel. This tells ChromeOS that it should be created next to the 62 // content window of this panel. 63 XID creator_xid_; 64 DISALLOW_COPY_AND_ASSIGN(PanelBrowserView); 65 }; 66 67 } // namespace chromeos 68 69 #endif // CHROME_BROWSER_CHROMEOS_FRAME_PANEL_BROWSER_VIEW_H_ 70