tab_modal_confirm_dialog_views.cc revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
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/tab_modal_confirm_dialog_views.h" 6 7#include "base/strings/utf_string_conversions.h" 8#include "chrome/browser/ui/browser_dialogs.h" 9#include "chrome/browser/ui/browser_list.h" 10#include "chrome/browser/ui/browser_window.h" 11#include "chrome/browser/ui/views/constrained_window_views.h" 12#include "chrome/common/chrome_switches.h" 13#include "content/public/browser/web_contents.h" 14#include "grit/generated_resources.h" 15#include "ui/base/l10n/l10n_util.h" 16#include "ui/base/window_open_disposition.h" 17#include "ui/views/controls/message_box_view.h" 18#include "ui/views/layout/layout_constants.h" 19#include "ui/views/widget/widget.h" 20#include "ui/views/window/dialog_client_view.h" 21 22// static 23TabModalConfirmDialog* TabModalConfirmDialog::Create( 24 TabModalConfirmDialogDelegate* delegate, 25 content::WebContents* web_contents) { 26 return new TabModalConfirmDialogViews(delegate, web_contents); 27} 28 29////////////////////////////////////////////////////////////////////////////// 30// TabModalConfirmDialogViews, constructor & destructor: 31 32TabModalConfirmDialogViews::TabModalConfirmDialogViews( 33 TabModalConfirmDialogDelegate* delegate, 34 content::WebContents* web_contents) 35 : delegate_(delegate) { 36 views::MessageBoxView::InitParams init_params(delegate->GetDialogMessage()); 37 init_params.inter_row_vertical_spacing = 38 views::kUnrelatedControlVerticalSpacing; 39 message_box_view_ = new views::MessageBoxView(init_params); 40 41 base::string16 link_text(delegate->GetLinkText()); 42 if (!link_text.empty()) 43 message_box_view_->SetLink(link_text, this); 44 45 ShowWebModalDialogViews(this, web_contents); 46 delegate_->set_close_delegate(this); 47} 48 49TabModalConfirmDialogViews::~TabModalConfirmDialogViews() { 50} 51 52void TabModalConfirmDialogViews::AcceptTabModalDialog() { 53 GetDialogClientView()->AcceptWindow(); 54} 55 56void TabModalConfirmDialogViews::CancelTabModalDialog() { 57 GetDialogClientView()->CancelWindow(); 58} 59 60void TabModalConfirmDialogViews::CloseDialog() { 61 GetWidget()->Close(); 62} 63 64////////////////////////////////////////////////////////////////////////////// 65// TabModalConfirmDialogViews, views::LinkListener implementation: 66 67void TabModalConfirmDialogViews::LinkClicked(views::Link* source, 68 int event_flags) { 69 delegate_->LinkClicked(ui::DispositionFromEventFlags(event_flags)); 70} 71 72////////////////////////////////////////////////////////////////////////////// 73// TabModalConfirmDialogViews, views::DialogDelegate implementation: 74 75base::string16 TabModalConfirmDialogViews::GetWindowTitle() const { 76 return delegate_->GetTitle(); 77} 78 79base::string16 TabModalConfirmDialogViews::GetDialogButtonLabel( 80 ui::DialogButton button) const { 81 if (button == ui::DIALOG_BUTTON_OK) 82 return delegate_->GetAcceptButtonTitle(); 83 if (button == ui::DIALOG_BUTTON_CANCEL) 84 return delegate_->GetCancelButtonTitle(); 85 return base::string16(); 86} 87 88bool TabModalConfirmDialogViews::Cancel() { 89 delegate_->Cancel(); 90 return true; 91} 92 93bool TabModalConfirmDialogViews::Accept() { 94 delegate_->Accept(); 95 return true; 96} 97 98bool TabModalConfirmDialogViews::Close() { 99 delegate_->Close(); 100 return true; 101} 102 103/////////////////////////////////////////////////////////////////////////////// 104// TabModalConfirmDialogViews, views::WidgetDelegate implementation: 105 106views::View* TabModalConfirmDialogViews::GetContentsView() { 107 return message_box_view_; 108} 109 110views::Widget* TabModalConfirmDialogViews::GetWidget() { 111 return message_box_view_->GetWidget(); 112} 113 114const views::Widget* TabModalConfirmDialogViews::GetWidget() const { 115 return message_box_view_->GetWidget(); 116} 117 118void TabModalConfirmDialogViews::DeleteDelegate() { 119 delete this; 120} 121 122ui::ModalType TabModalConfirmDialogViews::GetModalType() const { 123 return ui::MODAL_TYPE_CHILD; 124} 125