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

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

Issue 115825: Move text_field.cc and rename the class to Textfield in preparation for porti... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 6 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/find_bar_view.h ('k') | chrome/browser/views/keyword_editor_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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/views/find_bar_view.h" 5 #include "chrome/browser/views/find_bar_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "app/gfx/canvas.h" 9 #include "app/gfx/canvas.h"
10 #include "app/l10n_util.h" 10 #include "app/l10n_util.h"
(...skipping 10 matching lines...) Expand all
21 #include "views/background.h" 21 #include "views/background.h"
22 #include "views/controls/button/image_button.h" 22 #include "views/controls/button/image_button.h"
23 #include "views/controls/label.h" 23 #include "views/controls/label.h"
24 24
25 // The amount of whitespace to have before the find button. 25 // The amount of whitespace to have before the find button.
26 static const int kWhiteSpaceAfterMatchCountLabel = 3; 26 static const int kWhiteSpaceAfterMatchCountLabel = 3;
27 27
28 // The margins around the search field and the close button. 28 // The margins around the search field and the close button.
29 static const int kMarginLeftOfCloseButton = 3; 29 static const int kMarginLeftOfCloseButton = 3;
30 static const int kMarginRightOfCloseButton = 7; 30 static const int kMarginRightOfCloseButton = 7;
31 static const int kMarginLeftOfFindTextField = 12; 31 static const int kMarginLeftOfFindTextfield = 12;
32 32
33 // The margins around the match count label (We add extra space so that the 33 // The margins around the match count label (We add extra space so that the
34 // background highlight extends beyond just the text). 34 // background highlight extends beyond just the text).
35 static const int kMatchCountExtraWidth = 9; 35 static const int kMatchCountExtraWidth = 9;
36 36
37 // Minimum width for the match count label. 37 // Minimum width for the match count label.
38 static const int kMatchCountMinWidth = 30; 38 static const int kMatchCountMinWidth = 30;
39 39
40 // The text color for the match count label. 40 // The text color for the match count label.
41 static const SkColor kTextColorMatchCount = SkColorSetRGB(178, 178, 178); 41 static const SkColor kTextColorMatchCount = SkColorSetRGB(178, 178, 178);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 : container_(container), 80 : container_(container),
81 find_text_(NULL), 81 find_text_(NULL),
82 match_count_text_(NULL), 82 match_count_text_(NULL),
83 focus_forwarder_view_(NULL), 83 focus_forwarder_view_(NULL),
84 find_previous_button_(NULL), 84 find_previous_button_(NULL),
85 find_next_button_(NULL), 85 find_next_button_(NULL),
86 close_button_(NULL), 86 close_button_(NULL),
87 animation_offset_(0) { 87 animation_offset_(0) {
88 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 88 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
89 89
90 find_text_ = new views::TextField(); 90 find_text_ = new views::Textfield();
91 find_text_->SetID(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD); 91 find_text_->SetID(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD);
92 find_text_->SetFont(rb.GetFont(ResourceBundle::BaseFont)); 92 find_text_->SetFont(rb.GetFont(ResourceBundle::BaseFont));
93 find_text_->set_default_width_in_chars(kDefaultCharWidth); 93 find_text_->set_default_width_in_chars(kDefaultCharWidth);
94 AddChildView(find_text_); 94 AddChildView(find_text_);
95 95
96 match_count_text_ = new views::Label(); 96 match_count_text_ = new views::Label();
97 match_count_text_->SetFont(rb.GetFont(ResourceBundle::BaseFont)); 97 match_count_text_->SetFont(rb.GetFont(ResourceBundle::BaseFont));
98 match_count_text_->SetColor(kTextColorMatchCount); 98 match_count_text_->SetColor(kTextColorMatchCount);
99 match_count_text_->SetHorizontalAlignment(views::Label::ALIGN_CENTER); 99 match_count_text_->SetHorizontalAlignment(views::Label::ALIGN_CENTER);
100 AddChildView(match_count_text_); 100 AddChildView(match_count_text_);
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 canvas->TileImageInt(*kDialog_middle, 249 canvas->TileImageInt(*kDialog_middle,
250 kDialog_left->width(), 250 kDialog_left->width(),
251 0, 251 0,
252 lb.width() - 252 lb.width() -
253 kDialog_left->width() - 253 kDialog_left->width() -
254 kDialog_right->width(), 254 kDialog_right->width(),
255 kDialog_middle->height()); 255 kDialog_middle->height());
256 256
257 canvas->DrawBitmapInt(*kDialog_right, lb.right() - kDialog_right->width(), 0); 257 canvas->DrawBitmapInt(*kDialog_right, lb.right() - kDialog_right->width(), 0);
258 258
259 // Then we draw the background image for the Find TextField. We start by 259 // Then we draw the background image for the Find Textfield. We start by
260 // calculating the position of background images for the Find text box. 260 // calculating the position of background images for the Find text box.
261 gfx::Rect find_text_rect; 261 gfx::Rect find_text_rect;
262 gfx::Rect back_button_rect; 262 gfx::Rect back_button_rect;
263 int x = 0; // x coordinate of the curved edge background image. 263 int x = 0; // x coordinate of the curved edge background image.
264 int w = 0; // width of the background image for the text field. 264 int w = 0; // width of the background image for the text field.
265 if (UILayoutIsRightToLeft()) { 265 if (UILayoutIsRightToLeft()) {
266 find_text_rect = find_text_->GetBounds(APPLY_MIRRORING_TRANSFORMATION); 266 find_text_rect = find_text_->GetBounds(APPLY_MIRRORING_TRANSFORMATION);
267 back_button_rect = 267 back_button_rect =
268 find_previous_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION); 268 find_previous_button_->GetBounds(APPLY_MIRRORING_TRANSFORMATION);
269 x = find_text_rect.right(); 269 x = find_text_rect.right();
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 sz.set_width(std::max(kMatchCountMinWidth, static_cast<int>(sz.width()))); 345 sz.set_width(std::max(kMatchCountMinWidth, static_cast<int>(sz.width())));
346 match_count_text_->SetBounds(find_previous_button_->x() - 346 match_count_text_->SetBounds(find_previous_button_->x() -
347 kWhiteSpaceAfterMatchCountLabel - 347 kWhiteSpaceAfterMatchCountLabel -
348 sz.width(), 348 sz.width(),
349 (height() - sz.height()) / 2 + 1, 349 (height() - sz.height()) / 2 + 1,
350 sz.width(), 350 sz.width(),
351 sz.height()); 351 sz.height());
352 352
353 // And whatever space is left in between, gets filled up by the find edit box. 353 // And whatever space is left in between, gets filled up by the find edit box.
354 sz = find_text_->GetPreferredSize(); 354 sz = find_text_->GetPreferredSize();
355 sz.set_width(match_count_text_->x() - kMarginLeftOfFindTextField); 355 sz.set_width(match_count_text_->x() - kMarginLeftOfFindTextfield);
356 find_text_->SetBounds(match_count_text_->x() - sz.width(), 356 find_text_->SetBounds(match_count_text_->x() - sz.width(),
357 (height() - sz.height()) / 2 + 1, 357 (height() - sz.height()) / 2 + 1,
358 sz.width(), 358 sz.width(),
359 sz.height()); 359 sz.height());
360 find_text_->SetController(this); 360 find_text_->SetController(this);
361 361
362 // The focus forwarder view is a hidden view that should cover the area 362 // The focus forwarder view is a hidden view that should cover the area
363 // between the find text box and the find button so that when the user clicks 363 // between the find text box and the find button so that when the user clicks
364 // in that area we focus on the find text box. 364 // in that area we focus on the find text box.
365 int find_text_edge = find_text_->x() + find_text_->width(); 365 int find_text_edge = find_text_->x() + find_text_->width();
(...skipping 10 matching lines...) Expand all
376 find_text_->RemoveBorder(); // We draw our own border (a background image). 376 find_text_->RemoveBorder(); // We draw our own border (a background image).
377 } 377 }
378 } 378 }
379 379
380 gfx::Size FindBarView::GetPreferredSize() { 380 gfx::Size FindBarView::GetPreferredSize() {
381 gfx::Size prefsize = find_text_->GetPreferredSize(); 381 gfx::Size prefsize = find_text_->GetPreferredSize();
382 prefsize.set_height(kDialog_middle->height()); 382 prefsize.set_height(kDialog_middle->height());
383 383
384 // Add up all the preferred sizes and margins of the rest of the controls. 384 // Add up all the preferred sizes and margins of the rest of the controls.
385 prefsize.Enlarge(kMarginLeftOfCloseButton + kMarginRightOfCloseButton + 385 prefsize.Enlarge(kMarginLeftOfCloseButton + kMarginRightOfCloseButton +
386 kMarginLeftOfFindTextField, 386 kMarginLeftOfFindTextfield,
387 0); 387 0);
388 prefsize.Enlarge(find_previous_button_->GetPreferredSize().width(), 0); 388 prefsize.Enlarge(find_previous_button_->GetPreferredSize().width(), 0);
389 prefsize.Enlarge(find_next_button_->GetPreferredSize().width(), 0); 389 prefsize.Enlarge(find_next_button_->GetPreferredSize().width(), 0);
390 prefsize.Enlarge(close_button_->GetPreferredSize().width(), 0); 390 prefsize.Enlarge(close_button_->GetPreferredSize().width(), 0);
391 return prefsize; 391 return prefsize;
392 } 392 }
393 393
394 //////////////////////////////////////////////////////////////////////////////// 394 ////////////////////////////////////////////////////////////////////////////////
395 // FindBarView, views::ButtonListener implementation: 395 // FindBarView, views::ButtonListener implementation:
396 396
(...skipping 16 matching lines...) Expand all
413 case CLOSE_TAG: 413 case CLOSE_TAG:
414 container_->GetFindBarController()->EndFindSession(); 414 container_->GetFindBarController()->EndFindSession();
415 break; 415 break;
416 default: 416 default:
417 NOTREACHED() << L"Unknown button"; 417 NOTREACHED() << L"Unknown button";
418 break; 418 break;
419 } 419 }
420 } 420 }
421 421
422 //////////////////////////////////////////////////////////////////////////////// 422 ////////////////////////////////////////////////////////////////////////////////
423 // FindBarView, views::TextField::Controller implementation: 423 // FindBarView, views::Textfield::Controller implementation:
424 424
425 void FindBarView::ContentsChanged(views::TextField* sender, 425 void FindBarView::ContentsChanged(views::Textfield* sender,
426 const std::wstring& new_contents) { 426 const std::wstring& new_contents) {
427 FindBarController* controller = container_->GetFindBarController(); 427 FindBarController* controller = container_->GetFindBarController();
428 DCHECK(controller); 428 DCHECK(controller);
429 // We must guard against a NULL tab_contents, which can happen if the text 429 // We must guard against a NULL tab_contents, which can happen if the text
430 // in the Find box is changed right after the tab is destroyed. Otherwise, it 430 // in the Find box is changed right after the tab is destroyed. Otherwise, it
431 // can lead to crashes, as exposed by automation testing in issue 8048. 431 // can lead to crashes, as exposed by automation testing in issue 8048.
432 if (!controller->tab_contents()) 432 if (!controller->tab_contents())
433 return; 433 return;
434 434
435 // When the user changes something in the text box we check the contents and 435 // When the user changes something in the text box we check the contents and
436 // if the textbox contains something we set it as the new search string and 436 // if the textbox contains something we set it as the new search string and
437 // initiate search (even though old searches might be in progress). 437 // initiate search (even though old searches might be in progress).
438 if (!new_contents.empty()) { 438 if (!new_contents.empty()) {
439 // The last two params here are forward (true) and case sensitive (false). 439 // The last two params here are forward (true) and case sensitive (false).
440 controller->tab_contents()->StartFinding(WideToUTF16(new_contents), true, fa lse); 440 controller->tab_contents()->StartFinding(WideToUTF16(new_contents), true, fa lse);
441 } else { 441 } else {
442 // The textbox is empty so we reset. true = clear selection on page. 442 // The textbox is empty so we reset. true = clear selection on page.
443 controller->tab_contents()->StopFinding(true); 443 controller->tab_contents()->StopFinding(true);
444 UpdateForResult(controller->tab_contents()->find_result(), string16()); 444 UpdateForResult(controller->tab_contents()->find_result(), string16());
445 } 445 }
446 } 446 }
447 447
448 bool FindBarView::HandleKeystroke(views::TextField* sender, 448 bool FindBarView::HandleKeystroke(views::Textfield* sender,
449 const views::TextField::Keystroke& key) { 449 const views::Textfield::Keystroke& key) {
450 // If the dialog is not visible, there is no reason to process keyboard input. 450 // If the dialog is not visible, there is no reason to process keyboard input.
451 if (!container_->IsVisible()) 451 if (!container_->IsVisible())
452 return false; 452 return false;
453 453
454 // TODO(port): Handle this for other platforms. 454 // TODO(port): Handle this for other platforms.
455 #if defined(OS_WIN) 455 #if defined(OS_WIN)
456 if (container_->MaybeForwardKeystrokeToWebpage(key.message, key.key, 456 if (container_->MaybeForwardKeystrokeToWebpage(key.message, key.key,
457 key.flags)) 457 key.flags))
458 return true; // Handled, we are done! 458 return true; // Handled, we are done!
459 459
460 if (views::TextField::IsKeystrokeEnter(key)) { 460 if (views::Textfield::IsKeystrokeEnter(key)) {
461 // Pressing Return/Enter starts the search (unless text box is empty). 461 // Pressing Return/Enter starts the search (unless text box is empty).
462 std::wstring find_string = find_text_->GetText(); 462 std::wstring find_string = find_text_->GetText();
463 if (!find_string.empty()) { 463 if (!find_string.empty()) {
464 // Search forwards for enter, backwards for shift-enter. 464 // Search forwards for enter, backwards for shift-enter.
465 container_->GetFindBarController()->tab_contents()->StartFinding( 465 container_->GetFindBarController()->tab_contents()->StartFinding(
466 find_string, 466 find_string,
467 GetKeyState(VK_SHIFT) >= 0, 467 GetKeyState(VK_SHIFT) >= 0,
468 false); // Not case sensitive. 468 false); // Not case sensitive.
469 } 469 }
470 } 470 }
471 #endif 471 #endif
472 472
473 return false; 473 return false;
474 } 474 }
475 475
476 void FindBarView::ResetMatchCountBackground() { 476 void FindBarView::ResetMatchCountBackground() {
477 match_count_text_->set_background( 477 match_count_text_->set_background(
478 views::Background::CreateSolidBackground(kBackgroundColorMatch)); 478 views::Background::CreateSolidBackground(kBackgroundColorMatch));
479 match_count_text_->SetColor(kTextColorMatchCount); 479 match_count_text_->SetColor(kTextColorMatchCount);
480 } 480 }
481 481
482 bool FindBarView::FocusForwarderView::OnMousePressed( 482 bool FindBarView::FocusForwarderView::OnMousePressed(
483 const views::MouseEvent& event) { 483 const views::MouseEvent& event) {
484 if (view_to_focus_on_mousedown_) { 484 if (view_to_focus_on_mousedown_) {
485 view_to_focus_on_mousedown_->ClearSelection(); 485 view_to_focus_on_mousedown_->ClearSelection();
486 view_to_focus_on_mousedown_->RequestFocus(); 486 view_to_focus_on_mousedown_->RequestFocus();
487 } 487 }
488 return true; 488 return true;
489 } 489 }
OLDNEW
« no previous file with comments | « chrome/browser/views/find_bar_view.h ('k') | chrome/browser/views/keyword_editor_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698