blob: 0517b2d14df0b929a8508d1f9d7ee1f05bbda39c [file] [log] [blame]
[email protected]6b854932012-02-04 16:44:271// 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#include "ash/shell/panel_window.h"
6
[email protected]95db9c12013-01-31 11:47:447#include "ash/screen_ash.h"
[email protected]79a87b7e2013-01-25 05:08:228#include "ash/shell.h"
[email protected]7095a652013-03-07 19:41:499#include "ash/wm/panels/panel_frame_view.h"
[email protected]6b854932012-02-04 16:44:2710#include "base/utf_string_conversions.h"
[email protected]79a87b7e2013-01-25 05:08:2211#include "ui/aura/root_window.h"
[email protected]6b854932012-02-04 16:44:2712#include "ui/aura/window.h"
13#include "ui/gfx/canvas.h"
14#include "ui/views/widget/widget.h"
15
16namespace {
17const int kMinWidth = 100;
18const int kMinHeight = 100;
19const int kDefaultWidth = 200;
20const int kDefaultHeight = 300;
21}
22
23namespace ash {
24
25// static
26views::Widget* PanelWindow::CreatePanelWindow(const gfx::Rect& rect) {
27 PanelWindow* panel_window = new PanelWindow("Example Panel Window");
28 panel_window->params().bounds = rect;
[email protected]79a87b7e2013-01-25 05:08:2229 panel_window->params().context = Shell::GetPrimaryRootWindow();
[email protected]6b854932012-02-04 16:44:2730 return panel_window->CreateWidget();
31}
32
33PanelWindow::PanelWindow(const std::string& name)
34 : name_(name),
35 params_(views::Widget::InitParams::TYPE_PANEL) {
36 params_.delegate = this;
37}
38
39PanelWindow::~PanelWindow() {
40}
41
42views::Widget* PanelWindow::CreateWidget() {
43 views::Widget* widget = new views::Widget;
44
45 if (params().bounds.width() == 0)
46 params().bounds.set_width(kDefaultWidth);
47 if (params().bounds.height() == 0)
48 params().bounds.set_height(kDefaultHeight);
[email protected]95db9c12013-01-31 11:47:4449 params().bounds = ScreenAsh::ConvertRectToScreen(
50 Shell::GetActiveRootWindow(),
51 params().bounds);
[email protected]6b854932012-02-04 16:44:2752
53 widget->Init(params());
54 widget->GetNativeView()->SetName(name_);
55 widget->Show();
56
57 return widget;
58}
59
60gfx::Size PanelWindow::GetPreferredSize() {
61 return gfx::Size(kMinWidth, kMinHeight);
62}
63
64void PanelWindow::OnPaint(gfx::Canvas* canvas) {
65 canvas->FillRect(GetLocalBounds(), SK_ColorGREEN);
66}
67
[email protected]ed95e022013-04-11 04:03:3268base::string16 PanelWindow::GetWindowTitle() const {
[email protected]6b854932012-02-04 16:44:2769 return ASCIIToUTF16(name_);
70}
71
72views::View* PanelWindow::GetContentsView() {
73 return this;
74}
75
76bool PanelWindow::CanResize() const {
77 return true;
78}
79
80bool PanelWindow::CanMaximize() const {
81 return false;
82}
83
[email protected]eb642f32012-03-17 06:56:1684views::NonClientFrameView* PanelWindow::CreateNonClientFrameView(
85 views::Widget* widget) {
[email protected]dcf1a102012-11-30 21:37:1486 return new PanelFrameView(widget, PanelFrameView::FRAME_NONE);
[email protected]6b854932012-02-04 16:44:2787}
88
89} // namespace ash