1
# -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
# ***** BEGIN LICENSE BLOCK *****
3
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
# The contents of this file are subject to the Mozilla Public License Version
6
# 1.1 (the "License"); you may not use this file except in compliance with
7
# the License. You may obtain a copy of the License at
8
# http://www.mozilla.org/MPL/
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
15
# The Original Code is mozilla.org code.
17
# The Initial Developer of the Original Code is
18
# Netscape Communications Corporation.
19
# Portions created by the Initial Developer are Copyright (C) 1998
20
# the Initial Developer. All Rights Reserved.
23
# Simon Fraser <sfraser@netscape.com>
24
# Dean Tessman <dean_tessman@hotmail.com>
26
# Alternatively, the contents of this file may be used under the terms of
27
# either the GNU General Public License Version 2 or later (the "GPL"), or
28
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29
# in which case the provisions of the GPL or the LGPL are applicable instead
30
# of those above. If you wish to allow use of your version of this file only
31
# under the terms of either the GPL or the LGPL, and not to allow others to
32
# use your version of this file under the terms of the MPL, indicate your
33
# decision by deleting the provisions above and replace them with the notice
34
# and other provisions required by the GPL or the LGPL. If you do not delete
35
# the provisions above, a recipient may use your version of this file under
36
# the terms of any one of the MPL, the GPL or the LGPL.
38
# ***** END LICENSE BLOCK *****
42
function nsFindInstData() {}
43
nsFindInstData.prototype =
45
// set the next three attributes on your object to override the defaults
48
get rootSearchWindow() { return this._root || this.window.content; },
49
set rootSearchWindow(val) { this._root = val; },
51
get currentSearchWindow() {
55
var focusedWindow = this.window.document.commandDispatcher.focusedWindow;
56
if (!focusedWindow || focusedWindow == this.window)
57
focusedWindow = this.window.content;
61
set currentSearchWindow(val) { this._current = val; },
63
get webBrowserFind() { return this.browser.webBrowserFind; },
66
var findInst = this.webBrowserFind;
67
// set up the find to search the focussedWindow, bounded by the content window.
68
var findInFrames = findInst.QueryInterface(Components.interfaces.nsIWebBrowserFindInFrames);
69
findInFrames.rootSearchFrame = this.rootSearchWindow;
70
findInFrames.currentSearchFrame = this.currentSearchWindow;
72
// always search in frames for now. We could add a checkbox to the dialog for this.
73
findInst.searchFrames = true;
81
// browser is the <browser> element
82
// rootSearchWindow is the window to constrain the search to (normally window.content)
83
// currentSearchWindow is the frame to start searching (can be, and normally, rootSearchWindow)
84
function findInPage(findInstData)
86
// is the dialog up already?
87
if ("findDialog" in window && window.findDialog)
88
window.findDialog.focus();
92
window.findDialog = window.openDialog("chrome://global/content/finddialog.xul", "_blank", "chrome,resizable=no,dependent=yes", findInstData);
96
function findAgainInPage(findInstData, reverse)
98
if ("findDialog" in window && window.findDialog)
99
window.findDialog.focus();
102
// get the find service, which stores global find state, and init the
103
// nsIWebBrowser find with it. We don't assume that there was a previous
104
// Find that set this up.
105
var findService = Components.classes["@mozilla.org/find/find_service;1"]
106
.getService(Components.interfaces.nsIFindService);
108
var searchString = findService.searchString;
109
if (searchString.length == 0) {
110
// no previous find text
111
findInPage(findInstData);
116
var findInst = findInstData.webBrowserFind;
117
findInst.searchString = searchString;
118
findInst.matchCase = findService.matchCase;
119
findInst.wrapFind = findService.wrapFind;
120
findInst.entireWord = findService.entireWord;
121
findInst.findBackwards = findService.findBackwards ^ reverse;
123
var found = findInst.findNext();
126
gPromptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService()
127
.QueryInterface(Components.interfaces.nsIPromptService);
129
gFindBundle = document.getElementById("findBundle");
131
gPromptService.alert(window, gFindBundle.getString("notFoundTitle"), gFindBundle.getString("notFoundWarning"));
134
// Reset to normal value, otherwise setting can get changed in find dialog
135
findInst.findBackwards = findService.findBackwards;
139
function canFindAgainInPage()
141
var findService = Components.classes["@mozilla.org/find/find_service;1"]
142
.getService(Components.interfaces.nsIFindService);
143
return (findService.searchString.length > 0);