File:  [mozdev] / chimera / FindDlgController.mm
Revision 1.7: download - view: text, annotated - select for diffs - revision graph
Fri Apr 12 19:45:37 2002 UTC (17 years, 6 months ago) by pinkerton
Branches: MAIN
CVS tags: HEAD
make "find again" work, as well as across multiple windows. uses a new "Find" protocol and puts all the logic in the find controller.

    1: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
    2: /* ***** BEGIN LICENSE BLOCK *****
    3:  * Version: NPL 1.1/GPL 2.0/LGPL 2.1
    4:  *
    5:  * The contents of this file are subject to the Netscape Public License
    6:  * Version 1.1 (the "License"); you may not use this file except in
    7:  * compliance with the License. You may obtain a copy of the License at
    8:  * http://www.mozilla.org/NPL/
    9:  *
   10:  * Software distributed under the License is distributed on an "AS IS" basis,
   11:  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
   12:  * for the specific language governing rights and limitations under the
   13:  * License.
   14:  *
   15:  * The Original Code is mozilla.org code.
   16:  *
   17:  * The Initial Developer of the Original Code is 
   18:  * Netscape Communications Corporation.
   19:  * Portions created by the Initial Developer are Copyright (C) 2002
   20:  * the Initial Developer. All Rights Reserved.
   21:  *
   22:  * Contributor(s):
   23:  *
   24:  * Alternatively, the contents of this file may be used under the terms of
   25:  * either the GNU General Public License Version 2 or later (the "GPL"), or 
   26:  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
   27:  * in which case the provisions of the GPL or the LGPL are applicable instead
   28:  * of those above. If you wish to allow use of your version of this file only
   29:  * under the terms of either the GPL or the LGPL, and not to allow others to
   30:  * use your version of this file under the terms of the NPL, indicate your
   31:  * decision by deleting the provisions above and replace them with the notice
   32:  * and other provisions required by the GPL or the LGPL. If you do not delete
   33:  * the provisions above, a recipient may use your version of this file under
   34:  * the terms of any one of the NPL, the GPL or the LGPL.
   35:  *
   36:  * ***** END LICENSE BLOCK ***** */
   37: 
   38: #import "FindDlgController.h"
   39: #import "BrowserWindowController.h"
   40: #import "Find.h"
   41: #include "nsCOMPtr.h"
   42: 
   43: @implementation FindDlgController
   44: 
   45: - (void)windowDidLoad
   46: {
   47: }
   48: 
   49: 
   50: 
   51: //
   52: // -find
   53: //
   54: // User clicked the find button, send the action to the window controller of the
   55: // frontmost browser window. If we found something, hide the window. If not, beep.
   56: //
   57: -(IBAction) find: (id)aSender
   58: {
   59:   NSWindowController* controller = [[NSApp mainWindow] windowController];
   60:   if ( [controller conformsToProtocol:@protocol(Find)] ) {
   61:     id<Find> browserController = controller;
   62:     mSearchText = [mSearchField stringValue];
   63:     BOOL found = [browserController findInPage:mSearchText];
   64:     if ( found ) 
   65:       [self close];
   66:     else
   67:       NSBeep();
   68:   }
   69:   else
   70:     NSBeep();
   71: }
   72: 
   73: 
   74: //
   75: // -findAgain
   76: //
   77: // Someone hit "find again" in the edit menu, send the action to the window controller of the
   78: // frontmost browser window. Beep if we didn't find something.
   79: //
   80: -(IBAction) findAgain: (id)aSender
   81: {
   82:   NSWindowController* controller = [[NSApp mainWindow] windowController];
   83:   if ( [controller conformsToProtocol:@protocol(Find)] ) {
   84:     id<Find> browserController = controller;
   85:     BOOL found = [browserController findInPage:mSearchText];
   86:     if ( !found )
   87:       NSBeep();
   88:   }
   89:   else
   90:     NSBeep();
   91: }
   92: 
   93: 
   94: //
   95: // controlTextDidChange
   96: //
   97: // Check if there is anything in the text field, and if not, disable the find button
   98: //
   99: - (void)controlTextDidChange:(NSNotification *)aNotification
  100: {
  101:   if ( [[mSearchField stringValue] length] )
  102:     [mFindButton setEnabled:PR_TRUE];
  103:   else
  104:     [mFindButton setEnabled:PR_FALSE];    
  105: }
  106: 
  107: @end

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>