+++ /dev/null
-var webdeveloper_editHTMLIntervalId = null;
-var webdeveloper_editHTMLOldHTML = null;
-var webdeveloper_editHTMLSelectedTab = 0;
-var webdeveloper_editHTMLUpdateFrequency = 500;
-
-// Applies the HTML
-function webdeveloper_applyHTML()
-{
- var contentBody = webdeveloper_getDocumentBodyElement(webdeveloper_getContentDocument());
- var newHTML = document.getElementById("webdeveloper-edit-html-text-box").value;
-
- // If the content body is set and the new HTML is not the same as the old HTML
- if(contentBody && newHTML != webdeveloper_editHTMLOldHTML)
- {
- contentBody.innerHTML = newHTML;
- webdeveloper_editHTMLOldHTML = newHTML;
- }
-}
-
-// Clear the HTML
-function webdeveloper_clearHTML()
-{
- document.getElementById("webdeveloper-edit-html-text-box").value = "";
-}
-
-// Reinitializes the dashboard when the page changes
-function webdeveloper_editHTMLContentPageLoad(event)
-{
- var eventTarget = event.target;
-
- // Try to get the original target
- try
- {
- var originalTarget = event.originalTarget;
-
- // If the page is the target and the URI matches
- if(originalTarget && eventTarget && eventTarget.contentDocument && eventTarget.hasAttribute && eventTarget.hasAttribute("id") && eventTarget.getAttribute("id").toLowerCase() == "content" && originalTarget.documentURI == eventTarget.contentDocument.documentURI)
- {
- // If the page is generated
- if(originalTarget.documentURI == "about:blank")
- {
- window.clearInterval(webdeveloper_editHTMLIntervalId);
- window.setTimeout(webdeveloper_retrieveHTML, 1000);
- window.setTimeout(webdeveloper_updateHTML, 1000);
- }
- else
- {
- webdeveloper_retrieveHTML();
- }
- }
- }
- catch(exception)
- {
- // Do nothing
- }
-}
-
-// Handles a browser tab being selected
-function webdeveloper_editHTMLMainTabSelect(event)
-{
- var browser = window.top.getBrowser();
- var selectedTab = browser.mTabBox.selectedIndex;
-
- // If the selected tab is different
- if(selectedTab != webdeveloper_editHTMLSelectedTab)
- {
- browser.browsers[webdeveloper_editHTMLSelectedTab].contentDocument.location.reload(false);
-
- webdeveloper_editHTMLSelectedTab = selectedTab;
-
- webdeveloper_retrieveHTML();
- }
-}
-
-// Initializes the edit HTML dashboard
-function webdeveloper_initializeEditHTML()
-{
- var mainTabBox = window.top.getBrowser().mTabBox;
- var textBox = document.getElementById("webdeveloper-edit-html-text-box");
- var textBoxStyle = "";
-
- webdeveloper_editHTMLSelectedTab = mainTabBox.selectedIndex;
- webdeveloper_editHTMLUpdateFrequency = webdeveloper_getIntegerPreference("webdeveloper.edit.update.frequency", true);
-
- document.getElementById("webdeveloper-search-dashboard-text").addEventListener("keypress", webdeveloper_searchTextKeyPress, false);
- mainTabBox.addEventListener("select", webdeveloper_editHTMLMainTabSelect, false);
- window.top.addEventListener("load", webdeveloper_editHTMLContentPageLoad, true);
-
- // If the edit CSS background color preference is set
- if(webdeveloper_isPreferenceSet("webdeveloper.edit.color.background"))
- {
- textBoxStyle += "background-color: " + webdeveloper_getStringPreference("webdeveloper.edit.color.background", true) + " !important; ";
- }
-
- // If the edit CSS text color preference is set
- if(webdeveloper_isPreferenceSet("webdeveloper.edit.color.text"))
- {
- textBoxStyle += "color: " + webdeveloper_getStringPreference("webdeveloper.edit.color.text", true) + " !important; ";
- }
-
- // If the edit CSS font preference is set
- if(webdeveloper_isPreferenceSet("webdeveloper.edit.font.size"))
- {
- textBoxStyle += "font-size: " + webdeveloper_getIntegerPreference("webdeveloper.edit.font.size", true) + "px !important; ";
- }
-
- textBox.setAttribute("style", textBoxStyle.trim());
-
- webdeveloper_retrieveHTML();
- webdeveloper_updateHTML();
-}
-
-// Resets the edited HTML
-function webdeveloper_resetHTML()
-{
- window.top.BrowserReload();
-}
-
-// Retrieves the HTML
-function webdeveloper_retrieveHTML()
-{
- var contentBody = webdeveloper_getDocumentBodyElement(webdeveloper_getContentDocument());
- var textBox = document.getElementById("webdeveloper-edit-html-text-box");
-
- // If the content body is set
- if(contentBody)
- {
- textBox.value = contentBody.innerHTML;
- }
-
- webdeveloper_applyHTML();
-}
-
-// Saves the HTML
-function webdeveloper_saveHTML()
-{
- var contentDocument = webdeveloper_getContentDocument();
- var filePicker = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
- var result = null;
- var stringBundle = document.getElementById("webdeveloper-string-bundle");
- var url = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURL);
-
- url.spec = contentDocument.documentURI;
- filePicker.defaultExtension = url.fileExtension;
- filePicker.defaultString = url.fileName;
-
- filePicker.init(window, stringBundle.getString("webdeveloper_saveHTML"), filePicker.modeSave);
-
- result = filePicker.show();
-
- // If the user selected a file
- if(result == filePicker.returnOK || result == filePicker.returnReplace)
- {
- var file = filePicker.file;
- var webBrowserPersistInterface = Components.interfaces.nsIWebBrowserPersist;
- var webBrowserPersist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(webBrowserPersistInterface);
-
- webBrowserPersist.persistFlags = webBrowserPersistInterface.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION | webBrowserPersistInterface.PERSIST_FLAGS_FROM_CACHE | webBrowserPersistInterface.PERSIST_FLAGS_REPLACE_EXISTING_FILES;
-
- // If the file does not exist
- if(!file.exists())
- {
- file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 00644);
- }
-
- webBrowserPersist.saveDocument(contentDocument, file, null, contentDocument.contentType, webBrowserPersistInterface.ENCODE_FLAGS_ENCODE_BASIC_ENTITIES, 0);
- }
-}
-
-// Searches the HTML
-function webdeveloper_searchHTML()
-{
- var searchText = document.getElementById("webdeveloper-search-dashboard-text").value;
-
- // If the search text is set
- if(searchText)
- {
- document.getElementById("webdeveloper-edit-html-text-box").focus();
-
- // If the search failed to find a match
- if(!window.find(searchText, false, false, true, false, false, false))
- {
- document.getElementById("webdeveloper-edit-html-text-box").setSelectionRange(0, 0);
- window.find(searchText, false, false, true, false, false, false);
- }
- }
-}
-
-// Searches the HTML when the enter key is pressed
-function webdeveloper_searchTextKeyPress(event)
-{
- var keyCode = event.keyCode;
-
- // If the key code is set and is 13
- if(keyCode && keyCode == 13)
- {
- webdeveloper_searchHTML();
- }
-}
-
-// Unloads edit HTML
-function webdeveloper_unloadEditHTML()
-{
- var browser = window.top.getBrowser();
- var mainTabBox = browser.mTabBox;
-
- webdeveloper_editHTMLOldHTML = null;
-
- window.clearInterval(webdeveloper_editHTMLIntervalId);
-
- // Try to remove the event listener
- try
- {
- document.getElementById("webdeveloper-search-dashboard-text").removeEventListener("keypress", webdeveloper_searchTextKeyPress, false);
- }
- catch(exception)
- {
- // Do nothing
- }
-
- // Try to remove the event listener
- try
- {
- mainTabBox.removeEventListener("select", webdeveloper_editHTMLMainTabSelect, false);
- }
- catch(exception)
- {
- // Do nothing
- }
-
- // Try to remove the event listener
- try
- {
- window.top.removeEventListener("load", webdeveloper_editHTMLContentPageLoad, true);
- }
- catch(exception)
- {
- // Do nothing
- }
-
- window.top.BrowserReload();
-}
-
-// Updates the HTML
-function webdeveloper_updateHTML()
-{
- // If the update frequency is greater than 0
- if(webdeveloper_editHTMLUpdateFrequency > 0)
- {
- webdeveloper_editHTMLIntervalId = window.setInterval(webdeveloper_applyHTML, webdeveloper_editHTMLUpdateFrequency);
- }
-}
\ No newline at end of file