Home | History | Annotate | Download | only in views
      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
     23 TabModalConfirmDialog* 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 
     32 TabModalConfirmDialogViews::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 
     49 TabModalConfirmDialogViews::~TabModalConfirmDialogViews() {
     50 }
     51 
     52 void TabModalConfirmDialogViews::AcceptTabModalDialog() {
     53   GetDialogClientView()->AcceptWindow();
     54 }
     55 
     56 void TabModalConfirmDialogViews::CancelTabModalDialog() {
     57   GetDialogClientView()->CancelWindow();
     58 }
     59 
     60 void TabModalConfirmDialogViews::CloseDialog() {
     61   GetWidget()->Close();
     62 }
     63 
     64 //////////////////////////////////////////////////////////////////////////////
     65 // TabModalConfirmDialogViews, views::LinkListener implementation:
     66 
     67 void 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 
     75 base::string16 TabModalConfirmDialogViews::GetWindowTitle() const {
     76   return delegate_->GetTitle();
     77 }
     78 
     79 base::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 
     88 bool TabModalConfirmDialogViews::Cancel() {
     89   delegate_->Cancel();
     90   return true;
     91 }
     92 
     93 bool TabModalConfirmDialogViews::Accept() {
     94   delegate_->Accept();
     95   return true;
     96 }
     97 
     98 bool TabModalConfirmDialogViews::Close() {
     99   delegate_->Close();
    100   return true;
    101 }
    102 
    103 ///////////////////////////////////////////////////////////////////////////////
    104 // TabModalConfirmDialogViews, views::WidgetDelegate implementation:
    105 
    106 views::View* TabModalConfirmDialogViews::GetContentsView() {
    107   return message_box_view_;
    108 }
    109 
    110 views::Widget* TabModalConfirmDialogViews::GetWidget() {
    111   return message_box_view_->GetWidget();
    112 }
    113 
    114 const views::Widget* TabModalConfirmDialogViews::GetWidget() const {
    115   return message_box_view_->GetWidget();
    116 }
    117 
    118 void TabModalConfirmDialogViews::DeleteDelegate() {
    119   delete this;
    120 }
    121 
    122 ui::ModalType TabModalConfirmDialogViews::GetModalType() const {
    123   return ui::MODAL_TYPE_CHILD;
    124 }
    125