1.3.0 final; added support for opening the new tab in foreground when holding ctrl key pressed

This commit is contained in:
Johannes Findeisen 2015-07-24 01:27:44 +02:00
commit 583a1402ea
5 changed files with 118 additions and 71 deletions

View file

@ -10,7 +10,7 @@
<groupbox align="center" orient="horizontal">
<vbox>
<text value="Leo Search" style="font-weight: bold; font-size: x-large;"/>
<text value="&version; 1.2.0"/>
<text value="&version; 1.3.0"/>
<separator class="thin"/>
<text value="&createdBy;" style="font-weight: bold;"/>
<text value="Johannes Findeisen"/>

View file

@ -1,61 +0,0 @@
leo_search.onFirefoxLoad = function(event) {
document.getElementById("contentAreaContextMenu")
.addEventListener("popupshowing",
function (e){ leo_search.showFirefoxContextMenu(e); }, false);
};
leo_search.showFirefoxContextMenu = function(event) {
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
prefs = prefs.getBranch("extensions.leo_search.");
if(!prefs.getBoolPref("boolende") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-en-de").hidden = true;
} else {
document.getElementById("context-leo_search-en-de").hidden = false;
}
if(!prefs.getBoolPref("boolesde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-es-de").hidden = true;
} else {
document.getElementById("context-leo_search-es-de").hidden = false;
}
if(!prefs.getBoolPref("boolfrde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-fr-de").hidden = true;
} else {
document.getElementById("context-leo_search-fr-de").hidden = false;
}
if(!prefs.getBoolPref("boolchde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-ch-de").hidden = true;
} else {
document.getElementById("context-leo_search-ch-de").hidden = false;
}
if(!prefs.getBoolPref("boolitde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-it-de").hidden = true;
} else {
document.getElementById("context-leo_search-it-de").hidden = false;
}
if(!prefs.getBoolPref("boolrude") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-ru-de").hidden = true;
} else {
document.getElementById("context-leo_search-ru-de").hidden = false;
}
if(!prefs.getBoolPref("boolplde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-pl-de").hidden = true;
} else {
document.getElementById("context-leo_search-pl-de").hidden = false;
}
if(!prefs.getBoolPref("boolptde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-pt-de").hidden = true;
} else {
document.getElementById("context-leo_search-pt-de").hidden = false;
}
};
window.addEventListener("load", leo_search.onFirefoxLoad, false);

View file

@ -3,7 +3,6 @@
<!DOCTYPE overlay SYSTEM "chrome://leo_search/locale/overlay.dtd">
<overlay id="leo_search-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script src="overlay.js"/>
<script src="ff-overlay.js"/>
<stringbundleset id="stringbundleset">
<stringbundle id="leo_search-strings" src="chrome://leo_search/locale/overlay.properties"/>
</stringbundleset>

View file

@ -8,12 +8,121 @@ var leo_search = {
if(query != null)
{
var myURL = "http://dict.leo.org/" + lang + "de?lang=" + sitelang + "&search=" + query;
if(instanceOfMouseEvent.ctrlKey == true)
openNewTabWith(myURL, null, null, true);
if(e.ctrlKey == true)
this.newTab(myURL, true);
else
openNewTabWith(myURL, null, null, true);
this.newTab(myURL, false);
}
}
},
onFirefoxLoad: function(event) {
document.getElementById("contentAreaContextMenu")
.addEventListener("popupshowing",
function (e){ leo_search.showFirefoxContextMenu(e); }, false);
},
showFirefoxContextMenu: function(event) {
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
prefs = prefs.getBranch("extensions.leo_search.");
if(!prefs.getBoolPref("boolende") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-en-de").hidden = true;
} else {
document.getElementById("context-leo_search-en-de").hidden = false;
}
if(!prefs.getBoolPref("boolesde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-es-de").hidden = true;
} else {
document.getElementById("context-leo_search-es-de").hidden = false;
}
if(!prefs.getBoolPref("boolfrde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-fr-de").hidden = true;
} else {
document.getElementById("context-leo_search-fr-de").hidden = false;
}
if(!prefs.getBoolPref("boolchde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-ch-de").hidden = true;
} else {
document.getElementById("context-leo_search-ch-de").hidden = false;
}
if(!prefs.getBoolPref("boolitde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-it-de").hidden = true;
} else {
document.getElementById("context-leo_search-it-de").hidden = false;
}
if(!prefs.getBoolPref("boolrude") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-ru-de").hidden = true;
} else {
document.getElementById("context-leo_search-ru-de").hidden = false;
}
if(!prefs.getBoolPref("boolplde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-pl-de").hidden = true;
} else {
document.getElementById("context-leo_search-pl-de").hidden = false;
}
if(!prefs.getBoolPref("boolptde") || !gContextMenu.isTextSelected) {
document.getElementById("context-leo_search-pt-de").hidden = true;
} else {
document.getElementById("context-leo_search-pt-de").hidden = false;
}
},
newTab: function(url, foregroundTab) {
//var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
//if (prefManager.getIntPref("extensions.leo_search.reuse_tab") == 0) {
var browser = top.document.getElementById("content");
var newtab = browser.addTab(decodeURIComponent(url), {relatedToCurrent: true});
if (foregroundTab) {
browser.selectedTab = newtab;
}
//} else {
// this.openOrReuseTab("extensions.leo_search.resultTab", url, foregroundTab);
//}
},
// Taken from https://developer.mozilla.org/en-US/docs/Code_snippets/Tabbed_browser
openOrReuseTab: function(attrName, url, foregroundTab) {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
for (var found = false, index = 0, tabbrowser = wm.getEnumerator('navigator:browser').getNext().gBrowser;
index < tabbrowser.tabContainer.childNodes.length && !found;
index++) {
// Get the next tab
var currentTab = tabbrowser.tabContainer.childNodes[index];
// Does this tab contain our custom attribute?
if (currentTab.hasAttribute(attrName)) {
// Yes
found = true;
gBrowser.getBrowserAtIndex(index).loadURI(url);
if (foregroundTab) {
// select and focus it.
tabbrowser.selectedTab = currentTab;
// Focus *this* browser window in case another one is currently focused
tabbrowser.ownerDocument.defaultView.focus();
}
}
}
if (!found) {
// Our tab isn't open. Open it now.
var browserEnumerator = wm.getEnumerator("navigator:browser");
var tabbrowser = browserEnumerator.getNext().gBrowser;
// Create tab
var newTab = tabbrowser.addTab(url);
newTab.setAttribute(attrName, "leoOrg");
if (foregroundTab) {
// Focus tab
tabbrowser.selectedTab = newTab;
// Focus *this* browser window in case another one is currently focused
tabbrowser.ownerDocument.defaultView.focus();
}
}
}
};
window.addEventListener("load", leo_search.onFirefoxLoad, false);
window.addEventListener("load", leo_search.onLoad, false);

View file

@ -4,21 +4,21 @@
<em:id>{c666c018-6409-4479-afa3-68e4129e7eff}</em:id>
<em:type>2</em:type><!-- Extension -->
<em:name>Leo Search</em:name>
<em:version>1.2.0</em:version>
<em:version>1.3.0</em:version>
<em:creator>Johannes Findeisen</em:creator>
<em:homepageURL>http://hanez.org/leo-search.html</em:homepageURL>
<em:localized>
<Description>
<em:locale>en-US</em:locale>
<em:name>LEO Search</em:name>
<em:description>Searches for marked words in the Database at Leo.org and opens the result in a new tab.</em:description>
<em:description>Searches for marked words in the database at Leo.org and opens the result in a new background tab or foreground tab when holding "Ctrl".</em:description>
</Description>
</em:localized>
<em:localized>
<Description>
<em:locale>de-DE</em:locale>
<em:name>LEO Suche</em:name>
<em:description>Sucht nach markierten Wörtern in der Datenbank von Leo.org und öffnet das Ergebnis in einem neuen Tab.</em:description>
<em:description>Sucht nach markierten Wörtern in der Datenbank von Leo.org und öffnet das Ergebnis in einem neuen Hintergrund Tab oder im Vordergrund beim gedrückt halten von "Strg".</em:description>
</Description>
</em:localized>
<em:aboutURL>chrome://leo_search/content/about.xul</em:aboutURL>
@ -28,7 +28,7 @@
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id><!-- Firefox -->
<em:minVersion>3.5</em:minVersion>
<em:maxVersion>18.*</em:maxVersion>
<em:maxVersion>39.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>