| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_CHROMEOS_FRAME_BROWSER_VIEW_H_ |
| #define CHROME_BROWSER_CHROMEOS_FRAME_BROWSER_VIEW_H_ |
| #pragma once |
| |
| #include <vector> |
| |
| #include "chrome/browser/chromeos/status/status_area_host.h" |
| #include "chrome/browser/ui/views/frame/browser_view.h" |
| #include "views/controls/menu/menu_wrapper.h" |
| |
| class AccessibleToolbarView; |
| class Profile; |
| class TabStripModel; |
| |
| namespace ui { |
| class SimpleMenuModel; |
| } // namespace ui |
| |
| namespace views { |
| class ImageButton; |
| class ImageView; |
| class Menu2; |
| } // namespace views |
| |
| namespace chromeos { |
| |
| class StatusAreaView; |
| class StatusAreaButton; |
| |
| // chromeos::BrowserView adds ChromeOS specific controls and menus to a |
| // BrowserView created with Browser::TYPE_NORMAL. This extender adds controls |
| // to the title bar as follows: |
| // ____ __ __ |
| // / \ \ \ [StatusArea] |
| // |
| // and adds the system context menu to the remaining arae of the titlebar. |
| class BrowserView : public ::BrowserView, |
| public views::ContextMenuController, |
| public views::MenuListener, |
| public StatusAreaHost { |
| public: |
| explicit BrowserView(Browser* browser); |
| virtual ~BrowserView(); |
| |
| // BrowserView overrides. |
| virtual void Init() OVERRIDE; |
| virtual void Show() OVERRIDE; |
| virtual void ShowInactive() OVERRIDE; |
| virtual void FocusChromeOSStatus() OVERRIDE; |
| virtual views::LayoutManager* CreateLayoutManager() const OVERRIDE; |
| virtual void ChildPreferredSizeChanged(View* child) OVERRIDE; |
| virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const OVERRIDE; |
| virtual void Cut() OVERRIDE; |
| virtual void Copy() OVERRIDE; |
| virtual void Paste() OVERRIDE; |
| |
| // views::ContextMenuController overrides. |
| virtual void ShowContextMenuForView(views::View* source, |
| const gfx::Point& p, |
| bool is_mouse_gesture) OVERRIDE; |
| |
| // views::MenuListener implementation. |
| virtual void OnMenuOpened() OVERRIDE; |
| |
| // StatusAreaHost overrides. |
| virtual Profile* GetProfile() const OVERRIDE; |
| virtual gfx::NativeWindow GetNativeWindow() const OVERRIDE; |
| virtual bool ShouldOpenButtonOptions( |
| const views::View* button_view) const OVERRIDE; |
| virtual void ExecuteBrowserCommand(int id) const OVERRIDE; |
| virtual void OpenButtonOptions(const views::View* button_view) OVERRIDE; |
| virtual ScreenMode GetScreenMode() const OVERRIDE; |
| virtual TextStyle GetTextStyle() const OVERRIDE; |
| |
| gfx::NativeView saved_focused_widget() const { |
| return saved_focused_widget_; |
| } |
| |
| protected: |
| virtual void GetAccessiblePanes( |
| std::vector<AccessiblePaneView*>* panes); |
| |
| private: |
| void InitSystemMenu(); |
| |
| void ShowInternal(bool is_active); |
| |
| // Status Area view. |
| StatusAreaView* status_area_; |
| |
| // System menus. |
| scoped_ptr<ui::SimpleMenuModel> system_menu_contents_; |
| scoped_ptr<views::Menu2> system_menu_menu_; |
| |
| // Focused native widget before wench menu shows up. We need this to properly |
| // perform cut, copy and paste. See http://crosbug.com/8496 |
| gfx::NativeView saved_focused_widget_; |
| |
| DISALLOW_COPY_AND_ASSIGN(BrowserView); |
| }; |
| |
| } // namespace chromeos |
| |
| #endif // CHROME_BROWSER_CHROMEOS_FRAME_BROWSER_VIEW_H_ |