Update Zotero.ProgressWindow to properly handle and stack multiple progress windows, stored in Zotero.ProgressWindowSet
Refresher: var progress = new Zotero.ProgressWindow(); progress.changeHeadline('Indexing item...'); progress.addLines("My First Book", "chrome://zotero/skin/treeitem-book.png"); progress.addDescription('This is my first book.'); progress.show(); progress.fade(); var progress2 = new Zotero.ProgressWindow(); progress2.changeHeadline('Indexing item 2...'); progress2.addLines("My Second Book", "chrome://zotero/skin/treeitem-book.png"); progress2.addDescription('This is my second book.'); progress2.show(); progress2.fade();
This commit is contained in:
parent
5f37a75804
commit
f6d9a42644
|
@ -20,6 +20,57 @@
|
||||||
***** END LICENSE BLOCK *****
|
***** END LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
Zotero.ProgressWindowSet = new function() {
|
||||||
|
this.add = add;
|
||||||
|
this.tile = tile;
|
||||||
|
this.remove = remove;
|
||||||
|
|
||||||
|
var _numWindows = 0;
|
||||||
|
var _progressWindows = [];
|
||||||
|
|
||||||
|
const X_OFFSET = 30;
|
||||||
|
const Y_OFFSET = 10;
|
||||||
|
|
||||||
|
function add(progressWin) {
|
||||||
|
_progressWindows.push(progressWin);
|
||||||
|
_numWindows++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function tile(progressWin) {
|
||||||
|
var parent = progressWin.opener;
|
||||||
|
var sum = 0;
|
||||||
|
|
||||||
|
for (var i=0; i<_progressWindows.length; i++) {
|
||||||
|
var p = _progressWindows[i];
|
||||||
|
|
||||||
|
// Skip progress windows from other windows
|
||||||
|
if (p.opener != parent) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
sum += Y_OFFSET + p.outerHeight;
|
||||||
|
|
||||||
|
p.moveTo(
|
||||||
|
parent.screenX + parent.innerWidth - p.outerWidth - X_OFFSET,
|
||||||
|
parent.screenY + parent.innerHeight - sum
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function remove(progressWin) {
|
||||||
|
_numWindows--;
|
||||||
|
for (var i=0; i<_progressWindows.length; i++) {
|
||||||
|
if (_progressWindows[i] == progressWin) {
|
||||||
|
_progressWindows.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handles the display of a div showing progress in scraping, indexing, etc.
|
* Handles the display of a div showing progress in scraping, indexing, etc.
|
||||||
*
|
*
|
||||||
|
@ -55,11 +106,14 @@ Zotero.ProgressWindow = function(_window){
|
||||||
if(_windowLoading || _windowLoaded) { // already loading or loaded
|
if(_windowLoading || _windowLoaded) { // already loading or loaded
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_progressWindow = _window.openDialog("chrome://zotero/chrome/progressWindow.xul",
|
_progressWindow = _window.openDialog("chrome://zotero/chrome/progressWindow.xul",
|
||||||
"", "chrome,dialog=no,titlebar=no,popup=yes");
|
"", "chrome,dialog=no,titlebar=no,popup=yes");
|
||||||
_progressWindow.addEventListener("load", _onWindowLoaded, false);
|
_progressWindow.addEventListener("pageshow", _onWindowLoaded, false);
|
||||||
_windowLoading = true;
|
_windowLoading = true;
|
||||||
|
|
||||||
|
Zotero.ProgressWindowSet.add(_progressWindow);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,6 +180,7 @@ Zotero.ProgressWindow = function(_window){
|
||||||
function kill() {
|
function kill() {
|
||||||
_windowLoaded = false;
|
_windowLoaded = false;
|
||||||
_windowLoading = false;
|
_windowLoading = false;
|
||||||
|
Zotero.ProgressWindowSet.remove(_progressWindow);
|
||||||
try {
|
try {
|
||||||
_progressWindow.close();
|
_progressWindow.close();
|
||||||
} catch(ex) {}
|
} catch(ex) {}
|
||||||
|
@ -152,10 +207,7 @@ Zotero.ProgressWindow = function(_window){
|
||||||
|
|
||||||
function _move() {
|
function _move() {
|
||||||
_progressWindow.sizeToContent();
|
_progressWindow.sizeToContent();
|
||||||
_progressWindow.moveTo(
|
Zotero.ProgressWindowSet.tile(_progressWindow);
|
||||||
_window.screenX + _window.innerWidth - _progressWindow.outerWidth - 30,
|
|
||||||
_window.screenY + _window.innerHeight - _progressWindow.outerHeight - 10
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _timeout() {
|
function _timeout() {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user