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 "chrome/browser/ui/pdf/open_pdf_in_reader_prompt_delegate.h" 8#include "grit/generated_resources.h" 9#include "ui/base/l10n/l10n_util.h" 10#include "ui/views/controls/button/label_button.h" 11#include "ui/views/controls/label.h" 12#include "ui/views/controls/link.h" 13#include "ui/views/controls/separator.h" 14#include "ui/views/layout/grid_layout.h" 15#include "ui/views/layout/layout_constants.h" 16 17OpenPDFInReaderBubbleView::~OpenPDFInReaderBubbleView() {} 18 19OpenPDFInReaderBubbleView::OpenPDFInReaderBubbleView( 20 views::View* anchor_view, 21 OpenPDFInReaderPromptDelegate* model) 22 : views::BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT), 23 model_(model), 24 open_in_reader_link_(NULL), 25 close_button_(NULL) { 26 DCHECK(model); 27} 28 29void OpenPDFInReaderBubbleView::Init() { 30 using views::GridLayout; 31 32 GridLayout* layout = new views::GridLayout(this); 33 SetLayoutManager(layout); 34 35 const int single_column_set_id = 0; 36 views::ColumnSet* column_set = layout->AddColumnSet(single_column_set_id); 37 column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, 38 GridLayout::USE_PREF, 0, 0); 39 40 base::string16 title = model_->GetMessageText(); 41 views::Label* title_label = new views::Label(title); 42 layout->StartRow(0, single_column_set_id); 43 layout->AddView(title_label); 44 45 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 46 47 base::string16 accept_text = model_->GetAcceptButtonText(); 48 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