1 /* See license.txt for terms of usage */ 2 3 define([ 4 "firebug/lib/trace", 5 "firebug/lib/options", 6 "firebug/lib/locale", 7 "firebug/firefox/browserOverlayLib", 8 ], 9 function(FBTrace, Options, Locale, BrowserOverlayLib) { 10 with (BrowserOverlayLib) { 11 12 // ********************************************************************************************* // 13 // Constants 14 15 // ********************************************************************************************* // 16 // Firefox Toolbar Buttons 17 18 var BrowserToolbar = 19 { 20 overlay: function(doc, version) 21 { 22 this.overlayToolbarButtons(doc, version); 23 this.customizeToolbar(doc); 24 }, 25 26 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 27 // Firebug Start Button Popup Menu 28 29 overlayToolbarButtons: function(doc, version) 30 { 31 $toolbarButton(doc, "firebug-inspectorButton", { 32 label: "firebug.Inspect", 33 tooltiptext: "firebug.InspectElement", 34 observes: "cmd_firebug_toggleInspecting", 35 style: "list-style-image: url(chrome://firebug/skin/inspect.png);" + 36 "-moz-image-region: rect(0, 16px, 16px, 0);" 37 }); 38 39 // Start Button Tooltip. As soon as Firebug is fully loaded, the tooltip content will be 40 // generated by firebug/firefox/start-button/startButtonOverlay module. 41 $menupopupOverlay(doc, $(doc, "mainPopupSet"), [ 42 $tooltip(doc, { 43 "class": "firebugButtonTooltip", 44 id: "firebug-buttonTooltip", 45 orient: "vertical", 46 }, [ 47 $label(doc, { 48 "class": "version", 49 "value": "Firebug " + version 50 }), 51 $label(doc, { 52 "class": "status", 53 "value": Locale.$STR("startbutton.tip.deactivated") 54 }) 55 ]) 56 ]); 57 58 // TODO: why contextmenu doesn't work without cloning 59 $toolbarButton(doc, "firebug-button", { 60 label: "firebug.Firebug", 61 tooltip: "firebug-buttonTooltip", 62 type: "menu-button", 63 command: "cmd_firebug_toggleFirebug", 64 contextmenu: "fbStatusContextMenu", 65 observes: "firebugStatus", 66 style: "list-style-image: url(chrome://firebug/skin/firebug16.png)" 67 }, [$(doc, "fbStatusContextMenu").cloneNode(true)]); 68 }, 69 70 customizeToolbar: function(doc) 71 { 72 // Appends Firebug start button into Firefox toolbar automatically after installation. 73 // The button is appended only once - if the user removes it, it isn't appended again. 74 // TODO: merge into $toolbarButton? 75 // toolbarpalette check is for seamonkey, where it is in the document 76 if ((!$(doc, "firebug-button") || 77 $(doc, "firebug-button").parentNode.tagName == "toolbarpalette") 78 && !Options.get("toolbarCustomizationDone")) 79 { 80 Options.set("toolbarCustomizationDone", true); 81 82 // Get the current navigation bar button set (a string of button IDs) and append 83 // ID of the Firebug start button into it. 84 var startButtonId = "firebug-button"; 85 var navBarId = "nav-bar"; 86 var navBar = $(doc, navBarId); 87 var currentSet = navBar.currentSet; 88 89 if (FBTrace.DBG_INITIALIZE) 90 FBTrace.sysout("Startbutton; curSet (before modification): " + currentSet); 91 92 // Append only if the button is not already there. 93 var curSet = currentSet.split(","); 94 if (curSet.indexOf(startButtonId) == -1) 95 { 96 navBar.insertItem(startButtonId); 97 navBar.setAttribute("currentset", navBar.currentSet); 98 navBar.ownerDocument.persist("nav-bar", "currentset"); 99 100 // Check whether insertItem really works 101 var curSet = navBar.currentSet.split(","); 102 if (curSet.indexOf(startButtonId) == -1) 103 FBTrace.sysout("Startbutton; navBar.insertItem doesn't work", curSet); 104 105 if (FBTrace.DBG_INITIALIZE) 106 { 107 FBTrace.sysout("Startbutton; curSet (after modification): " + 108 navBar.currentSet); 109 } 110 111 try 112 { 113 // The current global scope is browser.xul. 114 BrowserToolboxCustomizeDone(true); 115 } 116 catch (e) 117 { 118 if (FBTrace.DBG_ERRORS) 119 FBTrace.sysout("startButton; appendToToolbar EXCEPTION " + e, e); 120 } 121 } 122 123 // Don't forget to show the navigation bar - just in case it's hidden. 124 navBar.removeAttribute("collapsed"); 125 doc.persist(navBarId, "collapsed"); 126 } 127 }, 128 } 129 130 // ********************************************************************************************* // 131 // Registration 132 133 return BrowserToolbar; 134 135 // ********************************************************************************************* // 136 }}); 137