1 // Copyright (c) 2012 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.
5 #ifndef ASH_WM_PANELS_PANEL_FRAME_VIEW_H_
6 #define ASH_WM_PANELS_PANEL_FRAME_VIEW_H_
8 #include "ash/ash_export.h"
9 #include "base/basictypes.h"
10 #include "ui/views/window/non_client_view.h"
17 class DefaultHeaderPainter;
18 class FrameCaptionButtonContainerView;
19 class FrameBorderHitTestController;
21 class ASH_EXPORT PanelFrameView : public views::NonClientFrameView {
23 // Internal class name.
24 static const char kViewClassName[];
31 PanelFrameView(views::Widget* frame, FrameType frame_type);
32 virtual ~PanelFrameView();
34 // Overridden from views::View:
35 virtual const char* GetClassName() const OVERRIDE;
38 void InitHeaderPainter();
40 // Height from top of window to top of client area.
41 int NonClientTopBorderHeight() const;
43 // Overridden from views::NonClientFrameView:
44 virtual gfx::Rect GetBoundsForClientView() const OVERRIDE;
45 virtual gfx::Rect GetWindowBoundsForClientBounds(
46 const gfx::Rect& client_bounds) const OVERRIDE;
47 virtual int NonClientHitTest(const gfx::Point& point) OVERRIDE;
48 virtual void GetWindowMask(const gfx::Size& size,
49 gfx::Path* window_mask) OVERRIDE;
50 virtual void ResetWindowControls() OVERRIDE;
51 virtual void UpdateWindowIcon() OVERRIDE;
52 virtual void UpdateWindowTitle() OVERRIDE;
53 virtual void SizeConstraintsChanged() OVERRIDE;
55 // Overridden from views::View:
56 virtual gfx::Size GetMinimumSize() const OVERRIDE;
57 virtual void Layout() OVERRIDE;
58 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
60 // Child View class describing the panel's title bar behavior
61 // and buttons, owned by the view hierarchy
62 views::Widget* frame_;
63 FrameCaptionButtonContainerView* caption_button_container_;
64 views::ImageView* window_icon_;
65 gfx::Rect client_view_bounds_;
67 // Helper class for painting the header.
68 scoped_ptr<DefaultHeaderPainter> header_painter_;
70 // Updates the hittest bounds overrides based on the window state type.
71 scoped_ptr<FrameBorderHitTestController> frame_border_hit_test_controller_;
73 DISALLOW_COPY_AND_ASSIGN(PanelFrameView);
78 #endif // ASH_WM_PANELS_PANEL_FRAME_VIEW_H_