15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/open_pdf_in_reader_bubble_view.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/pdf/browser/open_pdf_in_reader_prompt_client.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/views/controls/button/label_button.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/label.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/link.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/separator.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/grid_layout.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/layout_constants.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OpenPDFInReaderBubbleView::~OpenPDFInReaderBubbleView() {} 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OpenPDFInReaderBubbleView::OpenPDFInReaderBubbleView( 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::View* anchor_view, 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci pdf::OpenPDFInReaderPromptClient* model) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : views::BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT), 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_(model), 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) open_in_reader_link_(NULL), 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) close_button_(NULL) { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(model); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OpenPDFInReaderBubbleView::Init() { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) using views::GridLayout; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GridLayout* layout = new views::GridLayout(this); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLayoutManager(layout); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int single_column_set_id = 0; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::ColumnSet* column_set = layout->AddColumnSet(single_column_set_id); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GridLayout::USE_PREF, 0, 0); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 title = model_->GetMessageText(); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::Label* title_label = new views::Label(title); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, single_column_set_id); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(title_label); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 accept_text = model_->GetAcceptButtonText(); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) open_in_reader_link_ = new views::Link(accept_text); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) open_in_reader_link_->SetEnabled(true); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) open_in_reader_link_->set_listener(this); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, single_column_set_id); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(open_in_reader_link_); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, single_column_set_id); 54a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) layout->AddView(new views::Separator(views::Separator::HORIZONTAL), 1, 1, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GridLayout::FILL, GridLayout::FILL); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) close_button_ = new views::LabelButton(this, model_->GetCancelButtonText()); 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) close_button_->SetStyle(views::Button::STYLE_BUTTON); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, single_column_set_id); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(close_button_); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OpenPDFInReaderBubbleView::ButtonPressed(views::Button* sender, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ui::Event& event) { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_EQ(close_button_, sender); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_->Cancel(); 69a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GetWidget()->Close(); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OpenPDFInReaderBubbleView::LinkClicked(views::Link* source, 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int event_flags) { 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_EQ(open_in_reader_link_, source); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model_->Accept(); 77a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GetWidget()->Close(); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 80