Home | History | Annotate | Download | only in find_bar
      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 #import <Cocoa/Cocoa.h>
      6 #include "chrome/browser/ui/cocoa/find_bar/find_bar_bridge.h"
      7 
      8 #include "base/sys_string_conversions.h"
      9 #import "chrome/browser/ui/cocoa/find_bar/find_bar_cocoa_controller.h"
     10 
     11 // static
     12 bool FindBarBridge::disable_animations_during_testing_ = false;
     13 
     14 FindBarBridge::FindBarBridge()
     15     : find_bar_controller_(NULL) {
     16   cocoa_controller_ = [[FindBarCocoaController alloc] init];
     17   [cocoa_controller_ setFindBarBridge:this];
     18 }
     19 
     20 FindBarBridge::~FindBarBridge() {
     21   [cocoa_controller_ release];
     22 }
     23 
     24 void FindBarBridge::SetFindBarController(
     25     FindBarController* find_bar_controller) {
     26   find_bar_controller_ = find_bar_controller;
     27 }
     28 
     29 FindBarController* FindBarBridge::GetFindBarController() const {
     30   return find_bar_controller_;
     31 }
     32 
     33 FindBarTesting* FindBarBridge::GetFindBarTesting() {
     34   return this;
     35 }
     36 
     37 void FindBarBridge::Show(bool animate) {
     38   bool really_animate = animate && !disable_animations_during_testing_;
     39   [cocoa_controller_ showFindBar:(really_animate ? YES : NO)];
     40 }
     41 
     42 void FindBarBridge::Hide(bool animate) {
     43   bool really_animate = animate && !disable_animations_during_testing_;
     44   [cocoa_controller_ hideFindBar:(really_animate ? YES : NO)];
     45 }
     46 
     47 void FindBarBridge::SetFocusAndSelection() {
     48   [cocoa_controller_ setFocusAndSelection];
     49 }
     50 
     51 void FindBarBridge::ClearResults(const FindNotificationDetails& results) {
     52   [cocoa_controller_ clearResults:results];
     53 }
     54 
     55 void FindBarBridge::SetFindText(const string16& find_text) {
     56   [cocoa_controller_ setFindText:base::SysUTF16ToNSString(find_text)];
     57 }
     58 
     59 void FindBarBridge::UpdateUIForFindResult(const FindNotificationDetails& result,
     60                                           const string16& find_text) {
     61   [cocoa_controller_ updateUIForFindResult:result withText:find_text];
     62 }
     63 
     64 void FindBarBridge::AudibleAlert() {
     65   // Beep beep, beep beep, Yeah!
     66   NSBeep();
     67 }
     68 
     69 bool FindBarBridge::IsFindBarVisible() {
     70   return [cocoa_controller_ isFindBarVisible] ? true : false;
     71 }
     72 
     73 void FindBarBridge::MoveWindowIfNecessary(const gfx::Rect& selection_rect,
     74                                           bool no_redraw) {
     75   // See FindBarCocoaController moveFindBarToAvoidRect.
     76 }
     77 
     78 void FindBarBridge::StopAnimation() {
     79   [cocoa_controller_ stopAnimation];
     80 }
     81 
     82 void FindBarBridge::RestoreSavedFocus() {
     83   [cocoa_controller_ restoreSavedFocus];
     84 }
     85 
     86 bool FindBarBridge::GetFindBarWindowInfo(gfx::Point* position,
     87                                          bool* fully_visible) {
     88   NSWindow* window = [[cocoa_controller_ view] window];
     89   bool window_visible = [window isVisible] ? true : false;
     90   if (position) {
     91     if (window_visible)
     92       *position = [cocoa_controller_ findBarWindowPosition];
     93     else
     94       *position = gfx::Point(0, 0);
     95   }
     96   if (fully_visible) {
     97     *fully_visible = window_visible &&
     98         [cocoa_controller_ isFindBarVisible] &&
     99         ![cocoa_controller_ isFindBarAnimating];
    100   }
    101   return window_visible;
    102 }
    103 
    104 string16 FindBarBridge::GetFindText() {
    105   // This function is currently only used in Windows and Linux specific browser
    106   // tests (testing prepopulate values that Mac's don't rely on), but if we add
    107   // more tests that are non-platform specific, we need to flesh out this
    108   // function.
    109   NOTIMPLEMENTED();
    110   return string16();
    111 }
    112 
    113 string16 FindBarBridge::GetFindSelectedText() {
    114   // This function is currently only used in Windows and Linux specific browser
    115   // tests (testing prepopulate values that Mac's don't rely on), but if we add
    116   // more tests that are non-platform specific, we need to flesh out this
    117   // function.
    118   NOTIMPLEMENTED();
    119   return string16();
    120 }
    121 
    122 string16 FindBarBridge::GetMatchCountText() {
    123   // This function is currently only used in Windows and Linux specific browser
    124   // tests (testing prepopulate values that Mac's don't rely on), but if we add
    125   // more tests that are non-platform specific, we need to flesh out this
    126   // function.
    127   NOTIMPLEMENTED();
    128   return string16();
    129 }
    130