summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/frame/browser_view2.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/views/frame/browser_view2.h')
-rw-r--r--chrome/browser/views/frame/browser_view2.h195
1 files changed, 195 insertions, 0 deletions
diff --git a/chrome/browser/views/frame/browser_view2.h b/chrome/browser/views/frame/browser_view2.h
new file mode 100644
index 0000000..52973ef
--- /dev/null
+++ b/chrome/browser/views/frame/browser_view2.h
@@ -0,0 +1,195 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef CHROME_BROWSER_VIEWS_FRAME_BROWSER_VIEW2_H_
+#define CHROME_BROWSER_VIEWS_FRAME_BROWSER_VIEW2_H_
+
+#include "chrome/browser/browser_window.h"
+#include "chrome/browser/views/frame/browser_frame.h"
+#include "chrome/views/client_view.h"
+#include "chrome/views/window_delegate.h"
+
+// NOTE: For more information about the objects and files in this directory,
+// view: https://sites.google.com/a/google.com/the-chrome-project/developers/design-documents/browser-window
+
+class BookmarkBarView;
+class Browser;
+class BrowserToolbarView;
+class StatusBubble;
+class TabContentsContainerView;
+
+///////////////////////////////////////////////////////////////////////////////
+// BrowserView2
+//
+// A ClientView subclass that provides the contents of a browser window,
+// including the TabStrip, toolbars, download shelves, the content area etc.
+//
+class BrowserView2 : public BrowserWindow,
+ public ChromeViews::WindowDelegate,
+ public ChromeViews::ClientView {
+ public:
+ explicit BrowserView2(Browser* browser);
+ virtual ~BrowserView2();
+
+ void set_frame(BrowserFrame* frame) { frame_ = frame; }
+
+ // Returns the bounds of the toolbar, in BrowserView2 coordinates.
+ gfx::Rect GetToolbarBounds() const;
+
+ // Returns the bounds of the content area, in the coordinates of the
+ // BrowserView2's parent.
+ gfx::Rect GetClientAreaBounds() const;
+
+ // Overridden from BrowserWindow:
+ virtual void Init();
+ virtual void Show(int command, bool adjust_to_fit);
+ virtual void BrowserDidPaint(HRGN region);
+ virtual void Close();
+ virtual void* GetPlatformID();
+ virtual TabStrip* GetTabStrip() const;
+ virtual StatusBubble* GetStatusBubble();
+ virtual ChromeViews::RootView* GetRootView();
+ virtual void ShelfVisibilityChanged();
+ virtual void SelectedTabToolbarSizeChanged(bool is_animating);
+ virtual void UpdateTitleBar();
+ virtual void SetWindowTitle(const std::wstring& title);
+ virtual void Activate();
+ virtual void FlashFrame();
+ virtual void ShowTabContents(TabContents* contents);
+ virtual void ContinueDetachConstrainedWindowDrag(
+ const gfx::Point& mouse_pt,
+ int frame_component);
+ virtual void SizeToContents(const gfx::Rect& contents_bounds);
+ virtual void SetAcceleratorTable(
+ std::map<ChromeViews::Accelerator, int>* accelerator_table);
+ virtual void ValidateThrobber();
+ virtual gfx::Rect GetNormalBounds();
+ virtual bool IsMaximized();
+ virtual gfx::Rect GetBoundsForContentBounds(const gfx::Rect content_rect);
+ virtual void DetachFromBrowser();
+ virtual void InfoBubbleShowing();
+ virtual void InfoBubbleClosing();
+ virtual ToolbarStarToggle* GetStarButton() const;
+ virtual LocationBarView* GetLocationBarView() const;
+ virtual GoButton* GetGoButton() const;
+ virtual BookmarkBarView* GetBookmarkBarView();
+ virtual BrowserView* GetBrowserView() const;
+ virtual void Update(TabContents* contents, bool should_restore_state);
+ virtual void ProfileChanged(Profile* profile);
+ virtual void FocusToolbar();
+ virtual void DestroyBrowser();
+
+ // Overridden from ChromeViews::WindowDelegate:
+ virtual bool CanResize() const;
+ virtual bool CanMaximize() const;
+ virtual bool IsModal() const;
+ virtual std::wstring GetWindowTitle() const;
+ virtual ChromeViews::View* GetInitiallyFocusedView() const;
+ virtual bool ShouldShowWindowTitle() const;
+ virtual SkBitmap GetWindowIcon();
+ virtual bool ShouldShowWindowIcon() const;
+ virtual void ExecuteWindowsCommand(int command_id);
+ virtual void WindowClosing();
+ virtual ChromeViews::View* GetContentsView();
+ virtual ChromeViews::ClientView* CreateClientView(
+ ChromeViews::Window* window);
+
+ // Overridden from ChromeViews::ClientView:
+ virtual bool CanClose() const;
+ virtual int NonClientHitTest(const gfx::Point& point);
+
+ // Overridden from ChromeViews::View:
+ virtual void Layout();
+ virtual void DidChangeBounds(const CRect& previous, const CRect& current);
+ virtual void ViewHierarchyChanged(bool is_add,
+ ChromeViews::View* parent,
+ ChromeViews::View* child);
+
+ private:
+ // Layout the TabStrip, returns the coordinate of the bottom of the TabStrip,
+ // for laying out subsequent controls.
+ int LayoutTabStrip();
+ // Layout the following controls, starting at |top|, returns the coordinate
+ // of the bottom of the control, for laying out the next control.
+ int LayoutToolbar(int top);
+ int LayoutBookmarkAndInfoBars(int top);
+ int LayoutBookmarkBar(int top);
+ int LayoutInfoBar(int top);
+ // Layout the TabContents container, between the coordinates |top| and
+ // |bottom|.
+ void LayoutTabContents(int top, int bottom);
+ // Layout the Download Shelf, returns the coordinate of the top of the\
+ // control, for laying out the previous control.
+ int LayoutDownloadShelf();
+ // Layout the Status Bubble.
+ void LayoutStatusBubble(int top);
+
+ // Updates various optional child Views, e.g. Bookmarks Bar, Info Bar or the
+ // Download Shelf in response to a change notification from the specified
+ // |contents|.
+ void UpdateUIForContents(TabContents* contents);
+
+ // Updates an optional child View, e.g. Bookmarks Bar, Info Bar, Download
+ // Shelf. If |*old_view| differs from new_view, the old_view is removed and
+ // the new_view is added. This is intended to be used when swapping in/out
+ // child views that are referenced via a field.
+ // Returns true if anything was changed, and a re-Layout is now required.
+ bool UpdateChildViewAndLayout(ChromeViews::View* new_view,
+ ChromeViews::View** old_view);
+
+ // The BrowserFrame that hosts this view.
+ BrowserFrame* frame_;
+
+ // The Browser object we are associated with.
+ scoped_ptr<Browser> browser_;
+
+ // Tool/Info bars that we are currently showing. Used for layout.
+ ChromeViews::View* active_bookmark_bar_;
+ ChromeViews::View* active_info_bar_;
+ ChromeViews::View* active_download_shelf_;
+
+ // The Toolbar containing the navigation buttons, menus and the address bar.
+ BrowserToolbarView* toolbar_;
+
+ // The Bookmark Bar View for this window. Lazily created.
+ scoped_ptr<BookmarkBarView> bookmark_bar_view_;
+
+ // The view that contains the selected TabContents.
+ TabContentsContainerView* contents_container_;
+
+ // The Status information bubble that appears at the bottom of the window.
+ scoped_ptr<StatusBubble> status_bubble_;
+
+ // True if we have already been initialized.
+ bool initialized_;
+
+ DISALLOW_EVIL_CONSTRUCTORS(BrowserView2);
+};
+
+#endif // #ifndef CHROME_BROWSER_VIEWS_FRAME_BROWSER_VIEW2_H_