win_list() returns an array of "eg_main" chrome windows
get_tab() takes two forms:
get_tab(chrome_window,tab_index)
get_tab(tab_index)
The latter invocation assumes the first chrome window returned by win_list().
get_tab returns an object with the keys 'name' and 'content', pointing to the
tab label and the tab panel -> iframe -> contentWindow, respectively.
So let's say you had a patron account open in tab 1, and the Javascript Shell
open in tab 2. In the shell, you could do:
var o = get_tab(1);
o.name might contain something like
1 Patron: Circulator, Ima
and you could do this to refresh that interface:
o.content.g.patron.refresh_all()
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
tooManyMatches = null,
lastError = null;
+function win_list() {
+ var list = [];
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
+ getService(Components.interfaces.nsIWindowMediator);
+ var enumerator = wm.getEnumerator('eg_menu');
+ while(enumerator.hasMoreElements()) {
+ targetwindow = enumerator.getNext();
+ list.push(targetwindow);
+ }
+ return list;
+}
+
+function get_tab(a,b) {
+
+ var win;
+ var idx;
+
+ if (typeof b == 'undefined') {
+ idx = a;
+ win = win_list()[0];
+ } else {
+ win = a;
+ idx = b;
+ }
+
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ var tabs = win.document.getElementById('main_tabs');
+ var panels = win.document.getElementById('main_panels');
+ return { 'name' : tabs.childNodes[idx].getAttribute('label'), 'content' : panels.childNodes[idx].firstChild.contentWindow };
+}
+
function refocus()
{
_in.blur(); // Needed for Mozilla to scroll correctly.