| /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
| /* ***** BEGIN LICENSE BLOCK ***** |
| * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
| * |
| * The contents of this file are subject to the Mozilla Public License Version |
| * 1.1 (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * http://www.mozilla.org/MPL/ |
| * |
| * Software distributed under the License is distributed on an "AS IS" basis, |
| * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
| * for the specific language governing rights and limitations under the |
| * License. |
| * |
| * The Original Code is mozilla.org code. |
| * |
| * The Initial Developer of the Original Code is |
| * Blake Ross. |
| * Portions created by the Initial Developer are Copyright (C) 1998 |
| * the Initial Developer. All Rights Reserved. |
| * |
| * Contributor(s): |
| * Blake Ross <blake@cs.stanford.edu> (Original Author) |
| * Masayuki Nakano <masayuki@d-toybox.com> |
| * |
| * Alternatively, the contents of this file may be used under the terms of |
| * either the GNU General Public License Version 2 or later (the "GPL"), or |
| * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
| * in which case the provisions of the GPL or the LGPL are applicable instead |
| * of those above. If you wish to allow use of your version of this file only |
| * under the terms of either the GPL or the LGPL, and not to allow others to |
| * use your version of this file under the terms of the MPL, indicate your |
| * decision by deleting the provisions above and replace them with the notice |
| * and other provisions required by the GPL or the LGPL. If you do not delete |
| * the provisions above, a recipient may use your version of this file under |
| * the terms of any one of the MPL, the GPL or the LGPL. |
| * |
| * ***** END LICENSE BLOCK ***** */ |
| |
| |
| /********************************* #includes *********************************/ |
| |
| #include "domstubs.idl" // nsIDOMElement, nsIDOMWindow |
| #include "nsISupports.idl" // nsISupports |
| |
| |
| /******************************** Declarations *******************************/ |
| |
| interface nsIDocShell; |
| |
| |
| /****************************** nsTypeAheadFind ******************************/ |
| |
| [scriptable, uuid(0749a445-19d3-4eb9-9d66-78eca8c6f604)] |
| interface nsITypeAheadFind : nsISupports |
| { |
| /****************************** Initializer ******************************/ |
| |
| /* Necessary initialization that can't happen in the constructor, either |
| * because function calls here may fail, or because the docShell is |
| * required. */ |
| void init(in nsIDocShell aDocShell); |
| |
| |
| /***************************** Core functions ****************************/ |
| |
| /* Find aSearchString in page. If aLinksOnly is true, only search the page's |
| * hyperlinks for the string. */ |
| unsigned short find(in AString aSearchString, in boolean aLinksOnly); |
| |
| /* Find another match in the page. */ |
| unsigned short findAgain(in boolean findBackwards, in boolean aLinksOnly); |
| |
| |
| /**************************** Helper functions ***************************/ |
| |
| /* Change searched docShell. This happens when e.g. we use the same |
| * nsITypeAheadFind object to search different tabs. */ |
| void setDocShell(in nsIDocShell aDocShell); |
| |
| /* Change the look of the the "found match" selection to aToggle, and repaint |
| * the selection. */ |
| void setSelectionModeAndRepaint(in short toggle); |
| |
| /* Collapse the "found match" selection to its start. Because not all |
| * matches are owned by the same selection controller, this doesn't |
| * necessarily happen automatically. */ |
| void collapseSelection(); |
| |
| |
| /******************************* Attributes ******************************/ |
| |
| readonly attribute AString searchString; |
| // Most recent search string |
| attribute boolean caseSensitive; // Searches are case sensitive |
| readonly attribute nsIDOMElement foundLink; |
| // Most recent elem found, if a link |
| readonly attribute nsIDOMElement foundEditable; |
| // Most recent elem found, if editable |
| readonly attribute nsIDOMWindow currentWindow; |
| // Window of most recent match |
| |
| |
| /******************************* Constants *******************************/ |
| |
| /* Find return codes */ |
| const unsigned short FIND_FOUND = 0; |
| // Successful find |
| const unsigned short FIND_NOTFOUND = 1; |
| // Unsuccessful find |
| const unsigned short FIND_WRAPPED = 2; |
| // Successful find, but wrapped around |
| |
| |
| /*************************************************************************/ |
| |
| }; |
| |
| |
| /*****************************************************************************/ |