Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(895)

Side by Side Diff: chrome/browser/views/input_window_dialog_win.cc

Issue 2835043: Revert 52721 - Refactor the implementation of InputWindowDialog.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/views/input_window_dialog_win.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 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/views/input_window_dialog_win.h"
6
7 #include "app/l10n_util.h"
8 #include "base/compiler_specific.h"
9 #include "base/message_loop.h"
10 #include "views/grid_layout.h"
11 #include "views/standard_layout.h"
12 #include "grit/generated_resources.h"
13
14 // Width to make the text field, in pixels.
15 static const int kTextfieldWidth = 200;
16
17 InputWindowDialogWin::InputWindowDialogWin(gfx::NativeWindow parent,
18 const std::wstring& window_title,
19 const std::wstring& label,
20 const std::wstring& contents,
21 Delegate* delegate)
22 : window_title_(window_title),
23 label_(label),
24 contents_(contents),
25 delegate_(delegate) {
26 window_ = views::Window::CreateChromeWindow(parent, gfx::Rect(),
27 new ContentView(this));
28 window_->GetClientView()->AsDialogClientView()->UpdateDialogButtons();
29 }
30
31 InputWindowDialogWin::~InputWindowDialogWin() {
32 }
33
34 void InputWindowDialogWin::Show() {
35 window_->Show();
36 }
37
38 void InputWindowDialogWin::Close() {
39 window_->Close();
40 }
41
42 ///////////////////////////////////////////////////////////////////////////////
43 // ContentView, views::DialogDelegate implementation:
44
45 bool ContentView::IsDialogButtonEnabled(
46 MessageBoxFlags::DialogButton button) const {
47 if (button == MessageBoxFlags::DIALOGBUTTON_OK &&
48 !delegate_->delegate()->IsValid(text_field_->text())) {
49 return false;
50 }
51 return true;
52 }
53
54 bool ContentView::Accept() {
55 delegate_->delegate()->InputAccepted(text_field_->text());
56 return true;
57 }
58
59 bool ContentView::Cancel() {
60 delegate_->delegate()->InputCanceled();
61 return true;
62 }
63
64 std::wstring ContentView::GetWindowTitle() const {
65 return delegate_->window_title();
66 }
67
68 ///////////////////////////////////////////////////////////////////////////////
69 // ContentView, views::Textfield::Controller implementation:
70
71 void ContentView::ContentsChanged(views::Textfield* sender,
72 const std::wstring& new_contents) {
73 GetDialogClientView()->UpdateDialogButtons();
74 }
75
76 ///////////////////////////////////////////////////////////////////////////////
77 // ContentView, protected:
78
79 void ContentView::ViewHierarchyChanged(bool is_add,
80 views::View* parent,
81 views::View* child) {
82 if (is_add && child == this)
83 InitControlLayout();
84 }
85
86 ///////////////////////////////////////////////////////////////////////////////
87 // ContentView, private:
88
89 void ContentView::InitControlLayout() {
90 text_field_ = new views::Textfield;
91 text_field_->SetText(delegate_->contents());
92 text_field_->SetController(this);
93
94 using views::ColumnSet;
95 using views::GridLayout;
96
97 // TODO(sky): Vertical alignment should be baseline.
98 GridLayout* layout = CreatePanelGridLayout(this);
99 SetLayoutManager(layout);
100
101 ColumnSet* c1 = layout->AddColumnSet(0);
102 c1->AddColumn(GridLayout::CENTER, GridLayout::CENTER, 0,
103 GridLayout::USE_PREF, 0, 0);
104 c1->AddPaddingColumn(0, kRelatedControlHorizontalSpacing);
105 c1->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1,
106 GridLayout::USE_PREF, kTextfieldWidth, kTextfieldWidth);
107
108 layout->StartRow(0, 0);
109 views::Label* label = new views::Label(delegate_->label());
110 layout->AddView(label);
111 layout->AddView(text_field_);
112
113 MessageLoop::current()->PostTask(FROM_HERE,
114 focus_grabber_factory_.NewRunnableMethod(
115 &ContentView::FocusFirstFocusableControl));
116 }
117
118 void ContentView::FocusFirstFocusableControl() {
119 text_field_->SelectAll();
120 text_field_->RequestFocus();
121 }
122
123 // static
124 InputWindowDialog* InputWindowDialog::Create(HWND parent,
125 const std::wstring& window_title,
126 const std::wstring& label,
127 const std::wstring& contents,
128 Delegate* delegate) {
129 return new InputWindowDialogWin(parent,
130 window_title,
131 label,
132 contents,
133 delegate);
134 }
135
OLDNEW
« no previous file with comments | « chrome/browser/views/input_window_dialog_win.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698