forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			128 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 | 
						|
 | 
						|
/* This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 | 
						|
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | 
						|
 | 
						|
Components.utils.import("resource://gre/modules/Services.jsm");
 | 
						|
 | 
						|
var dialog;     // Quick access to document/form elements.
 | 
						|
var gFindInst;   // nsIWebBrowserFind that we're going to use
 | 
						|
var gFindInstData; // use this to update the find inst data
 | 
						|
 | 
						|
function initDialogObject()
 | 
						|
{
 | 
						|
  // Create dialog object and initialize.
 | 
						|
  dialog = new Object;
 | 
						|
  dialog.findKey         = document.getElementById("dialog.findKey");
 | 
						|
  dialog.caseSensitive   = document.getElementById("dialog.caseSensitive");
 | 
						|
  dialog.wrap            = document.getElementById("dialog.wrap");
 | 
						|
  dialog.find            = document.getElementById("btnFind");
 | 
						|
  dialog.up              = document.getElementById("radioUp");
 | 
						|
  dialog.down            = document.getElementById("radioDown");
 | 
						|
  dialog.rg              = dialog.up.radioGroup;
 | 
						|
  dialog.bundle          = null;
 | 
						|
 | 
						|
  // Move dialog to center, if it not been shown before
 | 
						|
  var windowElement = document.getElementById("findDialog");
 | 
						|
  if (!windowElement.hasAttribute("screenX") || !windowElement.hasAttribute("screenY"))
 | 
						|
  {
 | 
						|
    sizeToContent();
 | 
						|
    moveToAlertPosition();
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function fillDialog()
 | 
						|
{
 | 
						|
  // get the find service, which stores global find state
 | 
						|
  var findService = Components.classes["@mozilla.org/find/find_service;1"]
 | 
						|
                              .getService(Components.interfaces.nsIFindService);
 | 
						|
  
 | 
						|
  // Set initial dialog field contents. Use the gFindInst attributes first,
 | 
						|
  // this is necessary for window.find()
 | 
						|
  dialog.findKey.value           = gFindInst.searchString ? gFindInst.searchString : findService.searchString;
 | 
						|
  dialog.caseSensitive.checked   = gFindInst.matchCase ? gFindInst.matchCase : findService.matchCase;
 | 
						|
  dialog.wrap.checked            = gFindInst.wrapFind ? gFindInst.wrapFind : findService.wrapFind;
 | 
						|
  var findBackwards              = gFindInst.findBackwards ? gFindInst.findBackwards : findService.findBackwards;
 | 
						|
  if (findBackwards)
 | 
						|
    dialog.rg.selectedItem = dialog.up;
 | 
						|
  else
 | 
						|
    dialog.rg.selectedItem = dialog.down;
 | 
						|
}
 | 
						|
 | 
						|
function saveFindData()
 | 
						|
{
 | 
						|
  // get the find service, which stores global find state
 | 
						|
  var findService = Components.classes["@mozilla.org/find/find_service;1"]
 | 
						|
                         .getService(Components.interfaces.nsIFindService);
 | 
						|
 | 
						|
  // Set data attributes per user input.
 | 
						|
  findService.searchString  = dialog.findKey.value;
 | 
						|
  findService.matchCase     = dialog.caseSensitive.checked;
 | 
						|
  findService.wrapFind      = dialog.wrap.checked;
 | 
						|
  findService.findBackwards = dialog.up.selected;
 | 
						|
}
 | 
						|
 | 
						|
function onLoad()
 | 
						|
{
 | 
						|
  initDialogObject();
 | 
						|
 | 
						|
  // get the find instance
 | 
						|
  var arg0 = window.arguments[0];                                               
 | 
						|
  // If the dialog was opened from window.find(),
 | 
						|
  // arg0 will be an instance of nsIWebBrowserFind
 | 
						|
  if (arg0 instanceof Components.interfaces.nsIWebBrowserFind) {
 | 
						|
    gFindInst = arg0;
 | 
						|
  } else {  
 | 
						|
    gFindInstData = arg0;                                                       
 | 
						|
    gFindInst = gFindInstData.webBrowserFind;                                   
 | 
						|
  }                                                                             
 | 
						|
 | 
						|
  fillDialog();
 | 
						|
  doEnabling();
 | 
						|
 | 
						|
  if (dialog.findKey.value)
 | 
						|
    dialog.findKey.select();
 | 
						|
  dialog.findKey.focus();
 | 
						|
}
 | 
						|
 | 
						|
function onUnload()
 | 
						|
{
 | 
						|
  window.opener.findDialog = 0;
 | 
						|
}
 | 
						|
 | 
						|
function onAccept()
 | 
						|
{
 | 
						|
  if (gFindInstData && gFindInst != gFindInstData.webBrowserFind) {
 | 
						|
    gFindInstData.init();             
 | 
						|
    gFindInst = gFindInstData.webBrowserFind;
 | 
						|
  }
 | 
						|
 | 
						|
  // Transfer dialog contents to the find service.
 | 
						|
  saveFindData();
 | 
						|
 | 
						|
  // set up the find instance
 | 
						|
  gFindInst.searchString  = dialog.findKey.value;
 | 
						|
  gFindInst.matchCase     = dialog.caseSensitive.checked;
 | 
						|
  gFindInst.wrapFind      = dialog.wrap.checked;
 | 
						|
  gFindInst.findBackwards = dialog.up.selected;
 | 
						|
  
 | 
						|
  // Search.
 | 
						|
  var result = gFindInst.findNext();
 | 
						|
 | 
						|
  if (!result)
 | 
						|
  {
 | 
						|
    if (!dialog.bundle)
 | 
						|
      dialog.bundle = document.getElementById("findBundle");
 | 
						|
    Services.prompt.alert(window, dialog.bundle.getString("notFoundTitle"),
 | 
						|
                                  dialog.bundle.getString("notFoundWarning"));
 | 
						|
    dialog.findKey.select();
 | 
						|
    dialog.findKey.focus();
 | 
						|
  } 
 | 
						|
  return false;
 | 
						|
}
 | 
						|
 | 
						|
function doEnabling()
 | 
						|
{
 | 
						|
  dialog.find.disabled = !dialog.findKey.value;
 | 
						|
}
 |