git-svn-id: svn://euphorik.ch/pompage@45 02bbb61a-6d21-0410-aba0-cb053bdfd66a
[pompage.git] / doc / webdeveloper / view_source.js
diff --git a/doc/webdeveloper/view_source.js b/doc/webdeveloper/view_source.js
new file mode 100644 (file)
index 0000000..2697d75
--- /dev/null
@@ -0,0 +1,155 @@
+// Clears the view generated source selection
+function webdeveloper_clearViewGeneratedSourceSelection(selection, generatedSourceWindow)
+{
+    selection.removeAllRanges();
+    generatedSourceWindow.document.getElementById("content").contentWindow.getSelection().removeAllRanges();
+}
+
+// Displays the view frame source menu
+function webdeveloper_displayViewFrameSourceMenu(menu)
+{
+    var documentList   = webdeveloper_getDocuments(webdeveloper_getContentWindow());
+    var documentLength = documentList.length;
+    var menuItem       = null;
+    var pageDocument   = null;
+
+    webdeveloper_removeGeneratedMenuItems(menu);
+
+    // Loop through the documents
+    for(var i = 0; i < documentLength; i++)
+    {
+        menuItem              = document.createElement("menuitem");
+        pageDocument          = documentList[i];
+        menuItem.pageDocument = pageDocument;
+
+        menuItem.setAttribute("class", "webdeveloper-generated-menu");
+        menuItem.setAttribute("label", pageDocument.documentURI);
+        menuItem.setAttribute("oncommand", "webdeveloper_viewSource(this.pageDocument)");
+        menu.appendChild(menuItem);
+    }
+}
+
+// Displays the view source with menu
+function webdeveloper_displayViewSourceWithMenu(menu, suffix)
+{
+    var description             = null;
+    var descriptionPreference   = null;
+    var key                     = null;
+    var menuItem                = document.createElement("menuitem");
+    var path                    = null;
+    var viewSourceWithCount     = webdeveloper_getIntegerPreference("webdeveloper.view.source.with.count", true);
+    var viewSourceWithSeparator = menu.getElementsByAttribute("id", "webdeveloper-view-source-separator3-" + suffix)[0];
+
+    webdeveloper_removeGeneratedMenuItems(menu);
+
+    // If there are no view source with applications
+    if(viewSourceWithCount == 0)
+    {
+        viewSourceWithSeparator.setAttribute("hidden", true);
+    }
+    else
+    {
+        viewSourceWithSeparator.setAttribute("hidden", false);
+
+        // Loop through the view source with options
+        for(var i = 1; i <= viewSourceWithCount; i++)
+        {
+            description = "webdeveloper.view.source.with." + i + ".description";
+            key         = "webdeveloper.view.source.with." + i + ".key";
+            path        = "webdeveloper.view.source.with." + i + ".path";
+
+            // If the description and path are set
+            if(webdeveloper_isPreferenceSet(description) && webdeveloper_isPreferenceSet(path))
+            {
+                descriptionPreference = webdeveloper_getStringPreference(description, true);
+
+                // If the description is not blank
+                if(descriptionPreference != "")
+                {
+                    menuItem = document.createElement("menuitem");
+                    menuItem.setAttribute("class", "webdeveloper-generated-menu");
+                    menuItem.setAttribute("label", descriptionPreference);
+                    menuItem.setAttribute("oncommand", "webdeveloper_loadApplicationWithSource('" + webdeveloper_getStringPreference(path, true).replace(/\\/gi, "\\\\") + "')");
+
+                    // If the key preference is set
+                    if(webdeveloper_isPreferenceSet(key))
+                    {
+                        menuItem.setAttribute("key", key);
+                    }
+
+                    menu.insertBefore(menuItem, viewSourceWithSeparator);
+                }
+            }
+        }
+    }
+}
+
+// Loads the given application with the source of the current page
+function webdeveloper_loadApplicationWithSource(application)
+{
+    // If the application is set
+    if(application)
+    {
+        application = new WebDeveloperApplication(application);
+
+        application.launchWithSource(getBrowser().currentURI);
+    }
+}
+
+// Toggles the view frame source menu
+function webdeveloper_toggleViewFrameSourceMenu(suffix)
+{
+    var disabled   = true;
+    var frameCount = webdeveloper_getContentWindow().frames.length;
+    var menu       = document.getElementById("webdeveloper-view-frame-source-" + suffix);
+
+    // If there are frames
+    if(frameCount > 0)
+    {
+        disabled = false;
+    }
+
+    webdeveloper_configureElement(menu, "disabled", disabled);
+}
+
+// Adjusts the view source menu
+function webdeveloper_updateViewSourceMenu(menu, suffix)
+{
+    webdeveloper_toggleViewFrameSourceMenu(suffix);
+    webdeveloper_displayViewSourceWithMenu(menu, suffix);
+}
+
+// View the generated source
+function webdeveloper_viewGeneratedSource()
+{
+    var currentDocument       = webdeveloper_getContentDocument();
+    var currentWindow         = webdeveloper_getContentWindow();
+    var generatedSourceWindow = null;
+    var selection             = currentWindow.getSelection();
+
+    selection.selectAllChildren(currentDocument.documentElement);
+
+    generatedSourceWindow = window.openDialog("chrome://global/content/viewPartialSource.xul", "_blank", "chrome,dialog=no,resizable,scrollbars", getBrowser().currentURI.spec, "charset=" + currentDocument.characterSet, currentWindow.getSelection(), "selection");
+
+    window.setTimeout(webdeveloper_clearViewGeneratedSourceSelection, 1500, selection, generatedSourceWindow);
+}
+
+// View source
+function webdeveloper_viewSource(frameDocument)
+{
+    // If the view source in tab preference is set to true
+    if(webdeveloper_getBooleanPreference("webdeveloper.view.source.tab", true))
+    {
+        var newTab = getBrowser().addTab("view-source:" + frameDocument.documentURI);
+
+        // If the open tabs in background preference is not set to true
+        if(!webdeveloper_getBooleanPreference("webdeveloper.open.tabs.background", true))
+        {
+            getBrowser().selectedTab = newTab;
+        }
+    }
+    else
+    {
+        BrowserViewSourceOfDocument(frameDocument);
+    }
+}