browser_view.h revision 731df977c0511bca2206b5f333555b1205ff1f43
1// Copyright (c) 2010 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_BROWSER_VIEW_H_ 6#define CHROME_BROWSER_CHROMEOS_FRAME_BROWSER_VIEW_H_ 7#pragma once 8 9#include <vector> 10 11#include "chrome/browser/chromeos/status/status_area_host.h" 12#include "chrome/browser/views/frame/browser_view.h" 13 14class AccessibleToolbarView; 15class TabStripModel; 16 17namespace menus { 18class SimpleMenuModel; 19} // namespace menus 20 21namespace views { 22class ImageButton; 23class ImageView; 24class Menu2; 25} // namespace views 26 27class Profile; 28 29namespace chromeos { 30 31class StatusAreaView; 32class StatusAreaButton; 33 34// chromeos::BrowserView adds ChromeOS specific controls and menus to a 35// BrowserView created with Browser::TYPE_NORMAL. This extender adds controls 36// to the title bar as follows: 37// ____ __ __ 38// / \ \ \ [StatusArea] 39// 40// and adds the system context menu to the remaining arae of the titlebar. 41class BrowserView : public ::BrowserView, 42 public views::ContextMenuController, 43 public StatusAreaHost { 44 public: 45 explicit BrowserView(Browser* browser); 46 virtual ~BrowserView(); 47 48 // BrowserView overrides. 49 virtual void Init(); 50 virtual void Show(); 51 virtual void FocusChromeOSStatus(); 52 virtual views::LayoutManager* CreateLayoutManager() const; 53 virtual void ChildPreferredSizeChanged(View* child); 54 virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const; 55 56 // views::ContextMenuController overrides. 57 virtual void ShowContextMenu(views::View* source, 58 const gfx::Point& p, 59 bool is_mouse_gesture); 60 61 // StatusAreaHost overrides. 62 virtual Profile* GetProfile() const; 63 virtual gfx::NativeWindow GetNativeWindow() const; 64 virtual bool ShouldOpenButtonOptions( 65 const views::View* button_view) const; 66 virtual void ExecuteBrowserCommand(int id) const; 67 virtual void OpenButtonOptions(const views::View* button_view) const; 68 virtual bool IsBrowserMode() const; 69 virtual bool IsScreenLockerMode() const; 70 71 protected: 72 virtual void GetAccessiblePanes( 73 std::vector<AccessiblePaneView*>* panes); 74 75 private: 76 void InitSystemMenu(); 77 78 // Status Area view. 79 StatusAreaView* status_area_; 80 81 // System menus. 82 scoped_ptr<menus::SimpleMenuModel> system_menu_contents_; 83 scoped_ptr<views::Menu2> system_menu_menu_; 84 85 DISALLOW_COPY_AND_ASSIGN(BrowserView); 86}; 87 88} // namespace chromeos 89 90#endif // CHROME_BROWSER_CHROMEOS_FRAME_BROWSER_VIEW_H_ 91