|
1 # This Source Code Form is subject to the terms of the Mozilla Public |
|
2 # License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
4 |
|
5 # Set the default content pack to the Mozilla content pack. Use the |
|
6 # setHelpFileURI function to set this value. |
|
7 var helpFileURI; |
|
8 |
|
9 # openHelp - Opens up the Mozilla Help Viewer with the specified |
|
10 # topic and content pack. |
|
11 # see http://www.mozilla.org/projects/help-viewer/content_packs.html |
|
12 function openHelp(topic, contentPack) |
|
13 { |
|
14 # helpFileURI is the content pack to use in this function. If contentPack is defined, |
|
15 # use that and set the helpFileURI to that value so that it will be the default. |
|
16 helpFileURI = contentPack || helpFileURI; |
|
17 |
|
18 # Try to find previously opened help. |
|
19 var topWindow = locateHelpWindow(helpFileURI); |
|
20 |
|
21 if ( topWindow ) { |
|
22 # Open topic in existing window. |
|
23 topWindow.focus(); |
|
24 topWindow.displayTopic(topic); |
|
25 } else { |
|
26 # Open topic in new window. |
|
27 const params = Components.classes["@mozilla.org/embedcomp/dialogparam;1"] |
|
28 .createInstance(Components.interfaces.nsIDialogParamBlock); |
|
29 params.SetNumberStrings(2); |
|
30 params.SetString(0, helpFileURI); |
|
31 params.SetString(1, topic); |
|
32 const ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"] |
|
33 .getService(Components.interfaces.nsIWindowWatcher); |
|
34 #ifdef XP_WIN |
|
35 #define HELP_ALWAYS_RAISED_TOGGLE |
|
36 #endif |
|
37 #ifdef HELP_ALWAYS_RAISED_TOGGLE |
|
38 ww.openWindow(null, "chrome://help/content/help.xul", "_blank", "chrome,all,alwaysRaised,dialog=no", params); |
|
39 #else |
|
40 ww.openWindow(null, "chrome://help/content/help.xul", "_blank", "chrome,all,dialog=no", params); |
|
41 #endif |
|
42 } |
|
43 } |
|
44 |
|
45 # setHelpFileURI - Sets the default content pack to use in the Help Viewer |
|
46 function setHelpFileURI(rdfURI) |
|
47 { |
|
48 helpFileURI = rdfURI; |
|
49 } |
|
50 |
|
51 # Locate existing help window for this content pack. |
|
52 function locateHelpWindow(contentPack) { |
|
53 const windowManagerInterface = Components |
|
54 .classes['@mozilla.org/appshell/window-mediator;1'].getService() |
|
55 .QueryInterface(Components.interfaces.nsIWindowMediator); |
|
56 const iterator = windowManagerInterface.getEnumerator("mozilla:help"); |
|
57 var topWindow = null; |
|
58 var aWindow; |
|
59 |
|
60 # Loop through help windows looking for one with selected content |
|
61 # pack. |
|
62 while (iterator.hasMoreElements()) { |
|
63 aWindow = iterator.getNext(); |
|
64 if (!aWindow.closed && aWindow.getHelpFileURI() == contentPack) { |
|
65 topWindow = aWindow; |
|
66 } |
|
67 } |
|
68 return topWindow; |
|
69 } |