panel_window.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
100c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen// Copyright (c) 2012 The Chromium Authors. All rights reserved. 200c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen// Use of this source code is governed by a BSD-style license that can be 300c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen// found in the LICENSE file. 400c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 500c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen#ifndef ASH_SHELL_PANEL_WINDOW_H_ 600c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen#define ASH_SHELL_PANEL_WINDOW_H_ 700c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 800c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen#include "base/basictypes.h" 900c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen#include "ui/aura/aura_export.h" 1000c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen#include "ui/views/widget/widget.h" 1100c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen#include "ui/views/widget/widget_delegate.h" 1200c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 1300c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chennamespace ash { 1400c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 1500c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chenclass PanelFrameView; 1600c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 1700c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen// Example Class for panel windows (Widget::InitParams::TYPE_PANEL). 1800c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen// Instances of PanelWindow will get added to the PanelContainer top level 1900c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen// window which manages the panel layout through PanelLayoutManager. 2000c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chenclass PanelWindow : public views::WidgetDelegateView { 2100c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen public: 2200c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen explicit PanelWindow(const std::string& name); 2300c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen virtual ~PanelWindow(); 2400c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 2500c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen // Creates the widget for the panel window using |params_|. 26ecc97cc9491f40c507e372a30bcd58a9e08066a8Ray Chen views::Widget* CreateWidget(); 2700c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 2800c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen const std::string& name() { return name_; } 2900c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen views::Widget::InitParams& params() { return params_; } 3000c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 3100c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen // Creates a panel window and returns the associated widget. 3200c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen static views::Widget* CreatePanelWindow(const gfx::Rect& rect); 3300c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 3400c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen private: 3500c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen // Overridden from views::View: 3600c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen virtual gfx::Size GetPreferredSize() const OVERRIDE; 3700c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 3800c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 3900c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen // Overridden from views::WidgetDelegate: 4000c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen virtual base::string16 GetWindowTitle() const OVERRIDE; 4100c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen virtual View* GetContentsView() OVERRIDE; 4200c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen virtual bool CanResize() const OVERRIDE; 4300c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen virtual bool CanMaximize() const OVERRIDE; 4400c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen virtual bool CanMinimize() const OVERRIDE; 4500c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen virtual views::NonClientFrameView* CreateNonClientFrameView( 4600c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen views::Widget* widget) OVERRIDE; 4700c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 4800c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen std::string name_; 4900c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen views::Widget::InitParams params_; 5000c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 5100c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen DISALLOW_COPY_AND_ASSIGN(PanelWindow); 5200c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen}; 53ecc97cc9491f40c507e372a30bcd58a9e08066a8Ray Chen 5430c918ce7fbe171944b28fc91b3f22b3d631872dGlenn Kasten} // namespace ash 5500c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen 5600c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen#endif // ASH_SHELL_PANEL_WINDOW_H_ 5700c575a3fccb9d3065e913f1b8fcf93e18d44eafRay Chen