diff --git a/xpfe/communicator/resources/content/MANIFEST b/xpfe/communicator/resources/content/MANIFEST
index 96b06f1edff5..6a99f0fe6ee0 100644
--- a/xpfe/communicator/resources/content/MANIFEST
+++ b/xpfe/communicator/resources/content/MANIFEST
@@ -2,3 +2,7 @@ communicatorOverlay.xul
utilityOverlay.xul
utilityOverlay.js
utilityOverlay.css
+taskbarOverlay.xul
+tasksOverlay.js
+tasksOverlay.xul
+dialogBindings.xml
diff --git a/xpfe/communicator/resources/content/Makefile.in b/xpfe/communicator/resources/content/Makefile.in
index d739ce3e797e..96e01e1535d8 100644
--- a/xpfe/communicator/resources/content/Makefile.in
+++ b/xpfe/communicator/resources/content/Makefile.in
@@ -40,6 +40,10 @@ CHROME_CONTENT = \
utilityOverlay.xul \
utilityOverlay.js \
utilityOverlay.css \
+ taskbarOverlay.xul \
+ tasksOverlay.js \
+ tasksOverlay.xul \
+ dialogBindings.xml \
$(NULL)
DIRS = unix
diff --git a/xpfe/communicator/resources/content/dialogBindings.xml b/xpfe/communicator/resources/content/dialogBindings.xml
new file mode 100644
index 000000000000..440b3ec3bacd
--- /dev/null
+++ b/xpfe/communicator/resources/content/dialogBindings.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xpfe/communicator/resources/content/makefile.win b/xpfe/communicator/resources/content/makefile.win
index 596e6701e63a..2c6b2f1adafc 100644
--- a/xpfe/communicator/resources/content/makefile.win
+++ b/xpfe/communicator/resources/content/makefile.win
@@ -37,6 +37,10 @@ CHROME_CONTENT = \
.\utilityOverlay.xul \
.\utilityOverlay.js \
.\utilityOverlay.css \
+ .\taskbarOverlay.xul \
+ .\tasksOverlay.js \
+ .\tasksOverlay.xul \
+ .\dialogBindings.xml \
$(NULL)
include <$(DEPTH)\config\rules.mak>
diff --git a/xpfe/communicator/resources/content/taskbarOverlay.xul b/xpfe/communicator/resources/content/taskbarOverlay.xul
new file mode 100644
index 000000000000..f38b06b34ca5
--- /dev/null
+++ b/xpfe/communicator/resources/content/taskbarOverlay.xul
@@ -0,0 +1,84 @@
+
+
+
+%brandDTD;
+
+%taskbarDTD;
+]>
+
+
+
+
+
+
+
+
diff --git a/xpfe/communicator/resources/content/tasksOverlay.js b/xpfe/communicator/resources/content/tasksOverlay.js
new file mode 100644
index 000000000000..9728ca7e5db3
--- /dev/null
+++ b/xpfe/communicator/resources/content/tasksOverlay.js
@@ -0,0 +1,395 @@
+
+function toNavigator()
+{
+ CycleWindow('navigator:browser', getBrowserURL());
+}
+
+// Set up a lame hack to avoid opening two bookmarks.
+// Could otherwise happen with two Ctrl-B's in a row.
+var gDisableHistory = false;
+function enableHistory() {
+ gDisableHistory = false;
+}
+
+function toHistory()
+{
+ // Use a single sidebar history dialog
+
+ var cwindowManager = Components.classes['component://netscape/rdf/datasource?name=window-mediator'].getService();
+ var iwindowManager = Components.interfaces.nsIWindowMediator;
+ var windowManager = cwindowManager.QueryInterface(iwindowManager);
+
+ var historyWindow = windowManager.getMostRecentWindow('history:manager');
+
+ if (historyWindow) {
+ //debug("Reuse existing history window");
+ historyWindow.focus();
+ } else {
+ //debug("Open a new history dialog");
+
+ if (true == gDisableHistory) {
+ //debug("Recently opened one. Wait a little bit.");
+ return;
+ }
+ gDisableHistory = true;
+
+ window.open( "chrome://communicator/content/history/history.xul", "_blank", "chrome,menubar,resizable,scrollbars" );
+ setTimeout(enableHistory, 2000);
+ }
+
+}
+
+function toJavaScriptConsole()
+{
+ toOpenWindowByType("global:console", "chrome://global/content/console.xul");
+}
+
+function toJavaConsole()
+{
+ try{
+ var cid =
+ Components.classes['component://netscape/oji/jvm-mgr'];
+ var iid = Components.interfaces.nsIJVMManager;
+ var jvmMgr = cid.getService(iid);
+ jvmMgr.ShowJavaConsole();
+ } catch(e) {
+
+ }
+}
+
+function toOpenWindowByType( inType, uri )
+{
+ var windowManager = Components.classes['component://netscape/rdf/datasource?name=window-mediator'].getService();
+
+ var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
+
+ var topWindow = windowManagerInterface.getMostRecentWindow( inType );
+
+ if ( topWindow )
+ topWindow.focus();
+ else
+ window.open(uri, "_blank", "chrome,menubar,toolbar,resizable");
+}
+
+
+function OpenBrowserWindow()
+{
+ dump("In OpenBrowserWindw()...\n");
+ var charsetArg = new String();
+ var handler = Components.classes['component://netscape/commandlinehandler/general-startup-browser'];
+ handler = handler.getService();
+ handler = handler.QueryInterface(Components.interfaces.nsICmdLineHandler);
+ var startpage = handler.defaultArgs;
+ var url = handler.chromeUrlForTask;
+
+ // if and only if the current window is a browser window and it has a document with a character
+ // set, then extract the current charset menu setting from the current document and use it to
+ // initialize the new browser window...
+ if (window && (window.windowtype == "navigator:browser") && window.content && window.content.document)
+ {
+ var DocCharset = window.content.document.characterSet;
+ charsetArg = "charset="+DocCharset;
+ dump("*** Current document charset: " + DocCharset + "\n");
+
+ //we should "inherit" the charset menu setting in a new window
+ window.openDialog(url, "_blank", "chrome,all,dialog=no", startpage, charsetArg);
+ }
+ else // forget about the charset information.
+ {
+ window.openDialog(url, "_blank", "chrome,all,dialog=no", startpage);
+ }
+}
+
+
+function CycleWindow( inType, inChromeURL )
+{
+ var windowManager = Components.classes['component://netscape/rdf/datasource?name=window-mediator'].getService();
+ dump("got window Manager \n");
+ var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
+ dump("got interface \n");
+
+ var desiredWindow = null;
+
+ var topWindowOfType = windowManagerInterface.getMostRecentWindow( inType );
+ var topWindow = windowManagerInterface.getMostRecentWindow( null );
+ dump( "got windows \n");
+
+ dump( "topWindowOfType = " + topWindowOfType + "\n");
+ if ( topWindowOfType == null )
+ {
+ if ( inType == "navigator:browser" )
+ OpenBrowserWindow();
+ else if ( inType == "composer:html" ) /* open editor window */
+ NewEditorWindow();
+ else
+ {
+ /* what to do here? */
+ }
+
+ return;
+ }
+
+ if ( topWindowOfType != topWindow )
+ {
+ dump( "first not top so give focus \n");
+ topWindowOfType.focus();
+ return;
+ }
+
+ var enumerator = windowManagerInterface.getEnumerator( inType );
+ firstWindow = windowManagerInterface.convertISupportsToDOMWindow ( enumerator.getNext() );
+ if ( firstWindow == topWindowOfType )
+ {
+ dump( "top most window is first window \n");
+ firstWindow = null;
+ }
+ else
+ {
+ dump("find topmost window \n");
+ while ( enumerator.hasMoreElements() )
+ {
+ var nextWindow = windowManagerInterface.convertISupportsToDOMWindow ( enumerator.getNext() );
+ if ( nextWindow == topWindowOfType )
+ break;
+ }
+ }
+ desiredWindow = firstWindow;
+ if ( enumerator.hasMoreElements() )
+ {
+ dump( "Give focus to next window in the list \n");
+ desiredWindow = windowManagerInterface.convertISupportsToDOMWindow ( enumerator.getNext() );
+ }
+
+ if ( desiredWindow )
+ {
+ desiredWindow.focus();
+ dump("focusing window \n");
+ }
+ else
+ {
+ dump("open window \n");
+ if ( inType == "navigator:browser" )
+ window.OpenBrowserWindow();
+ else if ( inType == "composer:html" ) /* open editor window */
+ NewEditorWindow();
+ else
+ {
+ /* what to do here? */
+ }
+ }
+}
+
+function toEditor()
+{
+ CycleWindow('composer:html', 'chrome://editor/content/editor.xul');
+}
+
+function ShowWindowFromResource( node )
+{
+ var windowManager = Components.classes['component://netscape/rdf/datasource?name=window-mediator'].getService();
+ dump("got window Manager \n");
+ var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
+ dump("got interface \n");
+
+ var desiredWindow = null;
+ var url = node.getAttribute('id');
+ dump( url +" finding \n" );
+ desiredWindow = windowManagerInterface.getWindowForResource( url );
+ dump( "got window \n");
+ if ( desiredWindow )
+ {
+ dump("focusing \n");
+ desiredWindow.focus();
+ }
+}
+
+function OpenTaskURL( inURL )
+{
+ dump("loading "+inURL+"\n");
+
+ window.open( inURL );
+}
+
+function ShowUpdateFromResource( node )
+{
+ var url = node.getAttribute('url');
+ dump( url +" finding \n" );
+ // hack until I get a new interface on xpiflash to do a
+ // look up on the name/url pair.
+ OpenTaskURL( "http://www.mozilla.org/binaries.html");
+}
+/**
+ * WALLET submenu
+ */
+function HideWallet() {
+ var element;
+ element = document.getElementById("wallet");
+ element.setAttribute("style","display: none;" );
+ element.setAttribute("disabled","true" );
+}
+
+function HideImage() {
+ var element;
+ element = document.getElementById("image");
+ element.setAttribute("style","display: none;" );
+ element.setAttribute("disabled","true" );
+}
+
+function HideImage() {
+ var element;
+ element = document.getElementById("image");
+ element.setAttribute("style","display: none;" );
+ element.setAttribute("disabled","true" );
+}
+
+function HideEncryptOrObscure() {
+ var elementOn, elementOff;
+ if (this.pref.GetBoolPref("wallet.crypto")) {
+ elementOn = document.getElementById("obscure");
+ elementOff = document.getElementById("encrypt");
+ } else {
+ elementOn = document.getElementById("encrypt");
+ elementOff = document.getElementById("obscure");
+ }
+ elementOn.setAttribute("disabled","false");
+ elementOff.setAttribute("disabled","true");
+}
+
+function CheckForWalletAndImage()
+{
+ // remove either encrypt or obscure depending on pref setting
+ HideEncryptOrObscure();
+
+ // remove wallet functions if not in browser
+ try {
+ if (!appCore) {
+ HideWallet();
+ }
+ } catch(e) {
+ HideWallet();
+ }
+
+ // remove wallet functions (unless overruled by the "wallet.enabled" pref)
+ try {
+ if (!this.pref.GetBoolPref("wallet.enabled")) {
+ HideWallet();
+ }
+ } catch(e) {
+ dump("wallet.enabled pref is missing from all.js\n");
+ }
+
+ // remove image functions (unless overruled by the "imageblocker.enabled" pref)
+ try {
+ if (!this.pref.GetBoolPref("imageblocker.enabled")) {
+ HideImage();
+ }
+ } catch(e) {
+ dump("imageblocker.enabled pref is missing from all.js\n");
+ }
+
+}
+
+// perform a wallet action
+function WalletAction( action )
+{
+ if (action == "password" || action == "expire") {
+ wallet = Components.classes['component://netscape/wallet/wallet-service'];
+ wallet = wallet.getService();
+ wallet = wallet.QueryInterface(Components.interfaces.nsIWalletService);
+
+ if (action == "password") {
+ wallet.WALLET_ChangePassword();
+ } else if (action == "expire") {
+ wallet.WALLET_ExpirePassword();
+ }
+ return;
+ }
+
+ if (action == "encrypt" || action == "obscure") {
+ if (action == "encrypt") {
+ this.pref.SetBoolPref("wallet.crypto", true);
+ } else if (action == "obscure") {
+ this.pref.SetBoolPref("wallet.crypto", false);
+ }
+ return;
+ }
+
+ if (action == "cookieAllow" || action == "cookieBlock" ||
+ action == "imageAllow" || action == "imageBlock") {
+
+ var cookieViewer =
+ Components.classes["component://netscape/cookieviewer/cookieviewer-world"]
+ .createInstance(Components.interfaces["nsICookieViewer"]);
+
+ COOKIEPERMISSION = 0;
+ IMAGEPERMISSION = 1;
+
+ var element;
+ if (action == "cookieAllow") {
+ cookieViewer.AddPermission(window.content, true, COOKIEPERMISSION);
+ element = document.getElementById("AllowCookies");
+ alert(element.getAttribute("msg"));
+ } else if (action == "cookieBlock") {
+ cookieViewer.AddPermission(window.content, false, COOKIEPERMISSION);
+ element = document.getElementById("BlockCookies");
+ alert(element.getAttribute("msg"));
+ } else if (action == "imageAllow") {
+ cookieViewer.AddPermission(window.content, true, IMAGEPERMISSION);
+ element = document.getElementById("AllowImages");
+ alert(element.getAttribute("msg"));
+ } else if (action == "imageBlock") {
+ cookieViewer.AddPermission(window.content, false, IMAGEPERMISSION);
+ element = document.getElementById("BlockImages");
+ alert(element.getAttribute("msg"));
+ }
+ return;
+ }
+
+ if( appCore ) {
+ switch( action ) {
+ case "safefill":
+ appCore.walletPreview(window, window.content);
+ break;
+// case "password":
+// appCore.walletChangePassword();
+// break;
+ case "quickfill":
+ appCore.walletQuickFillin(window.content);
+ break;
+ case "capture":
+ default:
+ appCore.walletRequestToCapture(window.content);
+ break;
+ }
+ }
+}
+
+// display a Wallet Dialog
+function WalletDialog( which )
+{
+ switch( which ) {
+ case "signon":
+ window.openDialog("chrome://communicator/content/wallet/SignonViewer.xul","SSViewer","modal=yes,chrome,resizable=no");
+ break;
+ case "cookie":
+ this.pref.SetBoolPref("cookieviewer.cookieTab", true);
+ window.openDialog("chrome://communicator/content/wallet/CookieViewer.xul","CookieViewer","modal=yes,chrome,resizable=no");
+ break;
+ case "image":
+ this.pref.SetBoolPref("cookieviewer.cookieTab", false);
+ window.openDialog("chrome://communicator/content/wallet/CookieViewer.xul","CookieViewer","modal=yes,chrome,resizable=no");
+ break;
+ case "samples":
+ window.content.location.href= 'http://www.mozilla.org/wallet/samples/';
+ break;
+ case "interview":
+ window.content.location.href= 'http://www.mozilla.org/wallet/samples/INTERVIEW.HTML';
+ break;
+ case "wallet":
+ default:
+ window.openDialog("chrome://communicator/content/wallet/WalletEditor.xul","walletEditor","modal=yes,chrome,resizable=no");
+ break;
+ }
+}
+
+
diff --git a/xpfe/communicator/resources/content/tasksOverlay.xul b/xpfe/communicator/resources/content/tasksOverlay.xul
new file mode 100644
index 000000000000..efdb2f80b777
--- /dev/null
+++ b/xpfe/communicator/resources/content/tasksOverlay.xul
@@ -0,0 +1,121 @@
+
+
+
+
+
+%brandDTD;
+
+%tasksDTD;
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xpfe/communicator/resources/content/utilityOverlay.js b/xpfe/communicator/resources/content/utilityOverlay.js
index d82b29e5e4fb..d105b32eba5d 100644
--- a/xpfe/communicator/resources/content/utilityOverlay.js
+++ b/xpfe/communicator/resources/content/utilityOverlay.js
@@ -55,29 +55,6 @@ function goPageSetup()
{
}
-
-
-function goOpenNewMessage()
-{
- var msgComposeService = Components.classes["component://netscape/messengercompose"].getService();
- msgComposeService = msgComposeService.QueryInterface(Components.interfaces.nsIMsgComposeService);
-
- msgComposeService.OpenComposeWindow(null,
- null,
- Components.interfaces.nsIMsgCompType.New,
- Components.interfaces.nsIMsgCompFormat.Default,
- null);
-}
-
-function goNewCardDialog(selectedAB)
-{
- window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xul",
- "",
- "chrome,resizeable=no,modal",
- {selectedAB:selectedAB});
-}
-
-
function goEditCardDialog(abURI, card, okCallback)
{
window.openDialog("chrome://messenger/content/addressbook/abEditCardDialog.xul",
@@ -287,13 +264,3 @@ function helpMenuCreate()
relItem.setAttribute("oncommand", relCommand);
}
-function SendPage()
-{
- var pageUrl = window.content.location.href;
- var pageTitle = window.content.document.title;
- window.openDialog( "chrome://messenger/content/messengercompose/messengercompose.xul", "_blank",
- "chrome,all,dialog=no",
- "attachment='" + pageUrl + "',body='" + pageUrl +
- "',subject='" + pageTitle + "',bodyislink=true");
-}
-
diff --git a/xpfe/communicator/resources/content/utilityOverlay.xul b/xpfe/communicator/resources/content/utilityOverlay.xul
index f57bbbf9d74d..120981beb5d6 100644
--- a/xpfe/communicator/resources/content/utilityOverlay.xul
+++ b/xpfe/communicator/resources/content/utilityOverlay.xul
@@ -30,9 +30,7 @@
-
-
@@ -44,14 +42,9 @@
-
-
-
-
-