Home | History | Annotate | Download | only in shell
      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_SHELL_PANEL_WINDOW_H_
      6 #define ASH_SHELL_PANEL_WINDOW_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "ui/aura/aura_export.h"
     10 #include "ui/views/widget/widget.h"
     11 #include "ui/views/widget/widget_delegate.h"
     12 
     13 namespace ash {
     14 
     15 class PanelFrameView;
     16 
     17 // Example Class for panel windows (Widget::InitParams::TYPE_PANEL).
     18 // Instances of PanelWindow will get added to the PanelContainer top level
     19 // window which manages the panel layout through PanelLayoutManager.
     20 class PanelWindow : public views::WidgetDelegateView {
     21  public:
     22   explicit PanelWindow(const std::string& name);
     23   virtual ~PanelWindow();
     24 
     25   // Creates the widget for the panel window using |params_|.
     26   views::Widget* CreateWidget();
     27 
     28   const std::string& name() { return name_; }
     29   views::Widget::InitParams& params() { return params_; }
     30 
     31   // Creates a panel window and returns the associated widget.
     32   static views::Widget* CreatePanelWindow(const gfx::Rect& rect);
     33 
     34  private:
     35   // Overridden from views::View:
     36   virtual gfx::Size GetPreferredSize() OVERRIDE;
     37   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
     38 
     39   // Overridden from views::WidgetDelegate:
     40   virtual base::string16 GetWindowTitle() const OVERRIDE;
     41   virtual View* GetContentsView() OVERRIDE;
     42   virtual bool CanResize() const OVERRIDE;
     43   virtual bool CanMaximize() const OVERRIDE;
     44   virtual views::NonClientFrameView* CreateNonClientFrameView(
     45       views::Widget* widget) OVERRIDE;
     46 
     47   std::string name_;
     48   views::Widget::InitParams params_;
     49 
     50   DISALLOW_COPY_AND_ASSIGN(PanelWindow);
     51 };
     52 
     53 }  // namespace ash
     54 
     55 #endif  // ASH_SHELL_PANEL_WINDOW_H_
     56