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#include "chrome/browser/ui/views/open_pdf_in_reader_bubble_view.h"
6
7#include "components/pdf/browser/open_pdf_in_reader_prompt_client.h"
8#include "ui/views/controls/button/label_button.h"
9#include "ui/views/controls/label.h"
10#include "ui/views/controls/link.h"
11#include "ui/views/controls/separator.h"
12#include "ui/views/layout/grid_layout.h"
13#include "ui/views/layout/layout_constants.h"
14
15OpenPDFInReaderBubbleView::~OpenPDFInReaderBubbleView() {}
16
17OpenPDFInReaderBubbleView::OpenPDFInReaderBubbleView(
18    views::View* anchor_view,
19    pdf::OpenPDFInReaderPromptClient* model)
20    : views::BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT),
21      model_(model),
22      open_in_reader_link_(NULL),
23      close_button_(NULL) {
24  DCHECK(model);
25}
26
27void OpenPDFInReaderBubbleView::Init() {
28  using views::GridLayout;
29
30  GridLayout* layout = new views::GridLayout(this);
31  SetLayoutManager(layout);
32
33  const int single_column_set_id = 0;
34  views::ColumnSet* column_set = layout->AddColumnSet(single_column_set_id);
35  column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1,
36                        GridLayout::USE_PREF, 0, 0);
37
38  base::string16 title = model_->GetMessageText();
39  views::Label* title_label = new views::Label(title);
40  layout->StartRow(0, single_column_set_id);
41  layout->AddView(title_label);
42
43  layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
44
45  base::string16 accept_text = model_->GetAcceptButtonText();
46  open_in_reader_link_ = new views::Link(accept_text);
47  open_in_reader_link_->SetEnabled(true);
48  open_in_reader_link_->set_listener(this);
49  layout->StartRow(0, single_column_set_id);
50  layout->AddView(open_in_reader_link_);
51
52  layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
53  layout->StartRow(0, single_column_set_id);
54  layout->AddView(new views::Separator(views::Separator::HORIZONTAL), 1, 1,
55                  GridLayout::FILL, GridLayout::FILL);
56  layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
57
58  close_button_ = new views::LabelButton(this, model_->GetCancelButtonText());
59  close_button_->SetStyle(views::Button::STYLE_BUTTON);
60  layout->StartRow(0, single_column_set_id);
61  layout->AddView(close_button_);
62}
63
64void OpenPDFInReaderBubbleView::ButtonPressed(views::Button* sender,
65                                              const ui::Event& event) {
66  DCHECK_EQ(close_button_, sender);
67
68  model_->Cancel();
69  GetWidget()->Close();
70}
71
72void OpenPDFInReaderBubbleView::LinkClicked(views::Link* source,
73                                            int event_flags) {
74  DCHECK_EQ(open_in_reader_link_, source);
75
76  model_->Accept();
77  GetWidget()->Close();
78}
79
80