open_pdf_in_reader_bubble_view.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola// Use of this source code is governed by a BSD-style license that can be
35fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng// found in the LICENSE file.
45fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng
55fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng#include "chrome/browser/ui/views/open_pdf_in_reader_bubble_view.h"
6dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
75fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng#include "chrome/browser/ui/pdf/open_pdf_in_reader_prompt_delegate.h"
85fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng#include "grit/generated_resources.h"
95fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng#include "ui/base/l10n/l10n_util.h"
10e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola#include "ui/views/controls/button/label_button.h"
11e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola#include "ui/views/controls/label.h"
12e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola#include "ui/views/controls/link.h"
13e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola#include "ui/views/controls/separator.h"
14e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola#include "ui/views/layout/grid_layout.h"
15e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola#include "ui/views/layout/layout_constants.h"
16e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola
17e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael EspindolaOpenPDFInReaderBubbleView::~OpenPDFInReaderBubbleView() {}
18e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola
19e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael EspindolaOpenPDFInReaderBubbleView::OpenPDFInReaderBubbleView(
20e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola    views::View* anchor_view,
21e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola    OpenPDFInReaderPromptDelegate* model)
22e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola    : views::BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT),
23e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola      model_(model),
24e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola      open_in_reader_link_(NULL),
25e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola      close_button_(NULL) {
26e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola  DCHECK(model);
27e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola}
28e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola
29e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindolavoid OpenPDFInReaderBubbleView::Init() {
30e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola  using views::GridLayout;
31e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola
325fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng  GridLayout* layout = new views::GridLayout(this);
33e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola  SetLayoutManager(layout);
34e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola
355fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng  const int single_column_set_id = 0;
365fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng  views::ColumnSet* column_set = layout->AddColumnSet(single_column_set_id);
37e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola  column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1,
38e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola                        GridLayout::USE_PREF, 0, 0);
39e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola
40e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola  base::string16 title = model_->GetMessageText();
41e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola  views::Label* title_label = new views::Label(title);
42e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola  layout->StartRow(0, single_column_set_id);
435fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng  layout->AddView(title_label);
445fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng
455fbe5e783ee0c5ae27c17490a752d7e603e84ed2Evan Cheng  layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
46e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola
47e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola  base::string16 accept_text = model_->GetAcceptButtonText();
48e3a0e987f3d4f07512cdb64b9034369f966cb448Rafael Espindola  open_in_reader_link_ = new views::Link(accept_text);
49  open_in_reader_link_->SetEnabled(true);
50  open_in_reader_link_->set_listener(this);
51  layout->StartRow(0, single_column_set_id);
52  layout->AddView(open_in_reader_link_);
53
54  layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
55  layout->StartRow(0, single_column_set_id);
56  layout->AddView(new views::Separator(views::Separator::HORIZONTAL), 1, 1,
57                  GridLayout::FILL, GridLayout::FILL);
58  layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
59
60  close_button_ = new views::LabelButton(this, model_->GetCancelButtonText());
61  close_button_->SetStyle(views::Button::STYLE_BUTTON);
62  layout->StartRow(0, single_column_set_id);
63  layout->AddView(close_button_);
64}
65
66void OpenPDFInReaderBubbleView::ButtonPressed(views::Button* sender,
67                                              const ui::Event& event) {
68  DCHECK_EQ(close_button_, sender);
69
70  model_->Cancel();
71  GetWidget()->Close();
72}
73
74void OpenPDFInReaderBubbleView::LinkClicked(views::Link* source,
75                                            int event_flags) {
76  DCHECK_EQ(open_in_reader_link_, source);
77
78  model_->Accept();
79  GetWidget()->Close();
80}
81
82