Home | History | Annotate | Download | only in panels
      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.
      4 
      5 #ifndef ASH_WM_PANELS_PANEL_FRAME_VIEW_H_
      6 #define ASH_WM_PANELS_PANEL_FRAME_VIEW_H_
      7 
      8 #include "ash/ash_export.h"
      9 #include "base/basictypes.h"
     10 #include "ui/views/window/non_client_view.h"
     11 
     12 namespace views {
     13 class ImageView;
     14 }
     15 
     16 namespace ash {
     17 class DefaultHeaderPainter;
     18 class FrameCaptionButtonContainerView;
     19 class FrameBorderHitTestController;
     20 
     21 class ASH_EXPORT PanelFrameView : public views::NonClientFrameView {
     22  public:
     23   // Internal class name.
     24   static const char kViewClassName[];
     25 
     26   enum FrameType {
     27     FRAME_NONE,
     28     FRAME_ASH
     29   };
     30 
     31   PanelFrameView(views::Widget* frame, FrameType frame_type);
     32   virtual ~PanelFrameView();
     33 
     34   // Overridden from views::View:
     35   virtual const char* GetClassName() const OVERRIDE;
     36 
     37  private:
     38   void InitHeaderPainter();
     39 
     40   // Height from top of window to top of client area.
     41   int NonClientTopBorderHeight() const;
     42 
     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;
     54 
     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;
     59 
     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_;
     66 
     67   // Helper class for painting the header.
     68   scoped_ptr<DefaultHeaderPainter> header_painter_;
     69 
     70   // Updates the hittest bounds overrides based on the window state type.
     71   scoped_ptr<FrameBorderHitTestController> frame_border_hit_test_controller_;
     72 
     73   DISALLOW_COPY_AND_ASSIGN(PanelFrameView);
     74 };
     75 
     76 }
     77 
     78 #endif // ASH_WM_PANELS_PANEL_FRAME_VIEW_H_
     79