| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/input_window_dialog.h" | 5 #include "chrome/browser/ui/input_window_dialog.h" |
| 6 | 6 |
| 7 #include "base/bind.h" |
| 7 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/memory/weak_ptr.h" |
| 8 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| 9 #include "base/task.h" | |
| 10 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
| 11 #include "chrome/browser/ui/webui/chrome_web_ui.h" | 12 #include "chrome/browser/ui/webui/chrome_web_ui.h" |
| 12 #include "chrome/browser/ui/webui/input_window_dialog_webui.h" | 13 #include "chrome/browser/ui/webui/input_window_dialog_webui.h" |
| 13 #include "grit/generated_resources.h" | 14 #include "grit/generated_resources.h" |
| 14 #include "ui/base/l10n/l10n_util.h" | 15 #include "ui/base/l10n/l10n_util.h" |
| 15 #include "ui/views/window/dialog_delegate.h" | 16 #include "ui/views/window/dialog_delegate.h" |
| 16 #include "views/controls/label.h" | 17 #include "views/controls/label.h" |
| 17 #include "views/controls/textfield/textfield.h" | 18 #include "views/controls/textfield/textfield.h" |
| 18 #include "views/controls/textfield/textfield_controller.h" | 19 #include "views/controls/textfield/textfield_controller.h" |
| 19 #include "views/layout/grid_layout.h" | 20 #include "views/layout/grid_layout.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 void FocusFirstFocusableControl(); | 103 void FocusFirstFocusableControl(); |
| 103 | 104 |
| 104 // The Textfield that the user can type into. | 105 // The Textfield that the user can type into. |
| 105 views::Textfield* text_field_; | 106 views::Textfield* text_field_; |
| 106 | 107 |
| 107 // The delegate that the ContentView uses to communicate changes to the | 108 // The delegate that the ContentView uses to communicate changes to the |
| 108 // caller. | 109 // caller. |
| 109 InputWindowDialogWin* delegate_; | 110 InputWindowDialogWin* delegate_; |
| 110 | 111 |
| 111 // Helps us set focus to the first Textfield in the window. | 112 // Helps us set focus to the first Textfield in the window. |
| 112 ScopedRunnableMethodFactory<ContentView> focus_grabber_factory_; | 113 base::WeakPtrFactory<ContentView> weak_factory_; |
| 113 | 114 |
| 114 DISALLOW_COPY_AND_ASSIGN(ContentView); | 115 DISALLOW_COPY_AND_ASSIGN(ContentView); |
| 115 }; | 116 }; |
| 116 | 117 |
| 117 /////////////////////////////////////////////////////////////////////////////// | 118 /////////////////////////////////////////////////////////////////////////////// |
| 118 // ContentView | 119 // ContentView |
| 119 ContentView::ContentView(InputWindowDialogWin* delegate) | 120 ContentView::ContentView(InputWindowDialogWin* delegate) |
| 120 : delegate_(delegate), | 121 : delegate_(delegate), |
| 121 ALLOW_THIS_IN_INITIALIZER_LIST(focus_grabber_factory_(this)) { | 122 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
| 122 DCHECK(delegate_); | 123 DCHECK(delegate_); |
| 123 } | 124 } |
| 124 | 125 |
| 125 /////////////////////////////////////////////////////////////////////////////// | 126 /////////////////////////////////////////////////////////////////////////////// |
| 126 // ContentView, views::DialogDelegate implementation: | 127 // ContentView, views::DialogDelegate implementation: |
| 127 | 128 |
| 128 string16 ContentView::GetDialogButtonLabel(ui::DialogButton button) const { | 129 string16 ContentView::GetDialogButtonLabel(ui::DialogButton button) const { |
| 129 if (button == ui::DIALOG_BUTTON_OK) { | 130 if (button == ui::DIALOG_BUTTON_OK) { |
| 130 return l10n_util::GetStringUTF16( | 131 return l10n_util::GetStringUTF16( |
| 131 delegate_->type() == InputWindowDialog::BUTTON_TYPE_ADD ? IDS_ADD | 132 delegate_->type() == InputWindowDialog::BUTTON_TYPE_ADD ? IDS_ADD |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 views::GridLayout::USE_PREF, 0, 0); | 214 views::GridLayout::USE_PREF, 0, 0); |
| 214 c1->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); | 215 c1->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing); |
| 215 c1->AddColumn(views::GridLayout::FILL, views::GridLayout::CENTER, 1, | 216 c1->AddColumn(views::GridLayout::FILL, views::GridLayout::CENTER, 1, |
| 216 views::GridLayout::USE_PREF, kTextfieldWidth, kTextfieldWidth); | 217 views::GridLayout::USE_PREF, kTextfieldWidth, kTextfieldWidth); |
| 217 | 218 |
| 218 layout->StartRow(0, 0); | 219 layout->StartRow(0, 0); |
| 219 views::Label* label = new views::Label(delegate_->label()); | 220 views::Label* label = new views::Label(delegate_->label()); |
| 220 layout->AddView(label); | 221 layout->AddView(label); |
| 221 layout->AddView(text_field_); | 222 layout->AddView(text_field_); |
| 222 | 223 |
| 223 MessageLoop::current()->PostTask(FROM_HERE, | 224 MessageLoop::current()->PostTask( |
| 224 focus_grabber_factory_.NewRunnableMethod( | 225 FROM_HERE, base::Bind(&ContentView::FocusFirstFocusableControl, |
| 225 &ContentView::FocusFirstFocusableControl)); | 226 weak_factory_.GetWeakPtr())); |
| 226 } | 227 } |
| 227 | 228 |
| 228 void ContentView::FocusFirstFocusableControl() { | 229 void ContentView::FocusFirstFocusableControl() { |
| 229 text_field_->SelectAll(); | 230 text_field_->SelectAll(); |
| 230 text_field_->RequestFocus(); | 231 text_field_->RequestFocus(); |
| 231 } | 232 } |
| 232 | 233 |
| 233 InputWindowDialogWin::InputWindowDialogWin(gfx::NativeWindow parent, | 234 InputWindowDialogWin::InputWindowDialogWin(gfx::NativeWindow parent, |
| 234 const string16& window_title, | 235 const string16& window_title, |
| 235 const string16& label, | 236 const string16& label, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 } else { | 273 } else { |
| 273 DCHECK_EQ(1U, label_contents_pairs.size()); | 274 DCHECK_EQ(1U, label_contents_pairs.size()); |
| 274 return new InputWindowDialogWin(parent, | 275 return new InputWindowDialogWin(parent, |
| 275 window_title, | 276 window_title, |
| 276 label_contents_pairs[0].first, | 277 label_contents_pairs[0].first, |
| 277 label_contents_pairs[0].second, | 278 label_contents_pairs[0].second, |
| 278 delegate, | 279 delegate, |
| 279 type); | 280 type); |
| 280 } | 281 } |
| 281 } | 282 } |
| OLD | NEW |