git-svn-id: svn://euphorik.ch/pompage@45 02bbb61a-6d21-0410-aba0-cb053bdfd66a
[pompage.git] / doc / webdeveloper / options / dialogs / tool.js
diff --git a/doc/webdeveloper/options/dialogs/tool.js b/doc/webdeveloper/options/dialogs/tool.js
new file mode 100644 (file)
index 0000000..78ebf89
--- /dev/null
@@ -0,0 +1,168 @@
+// Open a dialog to choose an application
+function webdeveloper_chooseApplication()
+{
+    var filePicker = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
+
+    filePicker.init(window, document.getElementById("webdeveloper-string-bundle").getString("webdeveloper_chooseApplication"), filePicker.modeOpen);
+
+    // If the user selected an application
+    if(filePicker.show() == filePicker.returnOK)
+    {
+        var applicationPath = filePicker.file.path;
+        var executable      = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+
+        executable.initWithPath(applicationPath);
+
+        // If the executable exists, is a file and is executable
+        if(executable.exists() && executable.isFile() && executable.isExecutable())
+        {
+            document.getElementById("webdeveloper.tool.path").value = applicationPath;
+        }
+        else
+        {
+            webdeveloper_error(document.getElementById("webdeveloper-string-bundle").getFormattedString("webdeveloper_invalidApplication", [applicationPath]));
+        }
+    }
+}
+
+// Clears the tool
+function webdeveloper_clearTool()
+{
+    window.opener.webdeveloper_toolDescription = null;
+    window.opener.webdeveloper_toolKey         = null;
+    window.opener.webdeveloper_toolPath        = null;
+    window.opener.webdeveloper_toolURL         = null;
+}
+
+// Initializes the tool dialog box
+function webdeveloper_initializeTool()
+{
+    var modifiers    = null;
+    var stringBundle = document.getElementById("webdeveloper-string-bundle");
+
+    // If running on a Mac
+    if(webdeveloper_isMac())
+    {
+        modifiers = stringBundle.getString("webdeveloper_keyboardShortcutModifiersMac");
+    }
+    else
+    {
+        modifiers = stringBundle.getString("webdeveloper_keyboardShortcutModifiers");
+    }
+
+    document.getElementById("webdeveloper-keyboard-shortcut-modifiers").value = modifiers;
+
+    // If the first argument equals add
+    if(window.arguments[0] == "add")
+    {
+        document.title = stringBundle.getString("webdeveloper_addTool");
+    }
+    else
+    {
+        document.title = stringBundle.getString("webdeveloper_editTool");
+
+        document.getElementById("webdeveloper.tool.description").value = window.arguments[1];
+        document.getElementById("webdeveloper.tool.key").value         = window.arguments[2];
+
+        // If the last argument equals the application tool type
+        if(window.arguments[4] == stringBundle.getString("webdeveloper_application"))
+        {
+            document.getElementById("webdeveloper.tool.path").value = window.arguments[3];
+        }
+        else if(window.arguments[4] == stringBundle.getString("webdeveloper_bookmarklet"))
+        {
+            var bookmarkletRadio = document.getElementById("webdeveloper-bookmarklet-radio");
+
+            document.getElementById("webdeveloper.tool.bookmarklet").value = window.arguments[3];
+            bookmarkletRadio.radioGroup.selectedItem                       = bookmarkletRadio;
+
+            document.getElementById("webdeveloper-application-options").setAttribute("hidden", true);
+            document.getElementById("webdeveloper-bookmarklet-options").setAttribute("hidden", false);
+        }
+        else
+        {
+            var urlRadio = document.getElementById("webdeveloper-url-radio");
+
+            document.getElementById("webdeveloper.tool.url").value = window.arguments[3];
+            urlRadio.radioGroup.selectedItem                       = urlRadio;
+
+            document.getElementById("webdeveloper-application-options").setAttribute("hidden", true);
+            document.getElementById("webdeveloper-url-options").setAttribute("hidden", false);
+        }
+    }
+}
+
+// Saves the tool
+function webdeveloper_saveTool()
+{
+    var bookmarklet  = document.getElementById("webdeveloper.tool.bookmarklet").value.trim();
+    var description  = document.getElementById("webdeveloper.tool.description").value.trim();
+    var errors       = "";
+    var key          = document.getElementById("webdeveloper.tool.key").value.trim();
+    var path         = document.getElementById("webdeveloper.tool.path").value.trim();
+    var stringBundle = document.getElementById("webdeveloper-string-bundle");
+    var url          = document.getElementById("webdeveloper.tool.url").value.trim();
+
+    // If the description is empty
+    if(!description)
+    {
+        errors += stringBundle.getString("webdeveloper_emptyDescription") + "\n";
+    }
+
+    // If the application type is selected and the path is empty
+    if(document.getElementById("webdeveloper-application-radio").selected && !path)
+    {
+        errors += stringBundle.getString("webdeveloper_applicationPath") + "\n";
+    }
+    /*else if(document.getElementById("webdeveloper-bookmarklet-radio").selected && !bookmarklet)
+    {
+        errors += stringBundle.getString("webdeveloper_emptyBookmarklet") + "\n";
+    }*/
+    else if(document.getElementById("webdeveloper-url-radio").selected && !url)
+    {
+        errors += stringBundle.getString("webdeveloper_emptyURL") + "\n";
+    }
+
+    // If there are errors
+    if(errors)
+    {
+        webdeveloper_error(errors.trim());
+
+        return false;
+    }
+    else
+    {
+        window.opener.webdeveloper_toolDescription = description;
+        window.opener.webdeveloper_toolKey         = key;
+
+        // If the application type is selected
+        if(document.getElementById("webdeveloper-application-radio").selected)
+        {
+            window.opener.webdeveloper_toolBookmarklet = null;
+            window.opener.webdeveloper_toolPath        = path;
+            window.opener.webdeveloper_toolURL         = null;
+        }
+        /*else if(document.getElementById("webdeveloper-bookmarklet-radio").selected)
+        {
+            window.opener.webdeveloper_toolBookmarklet = bookmarklet;
+            window.opener.webdeveloper_toolPath        = null;
+            window.opener.webdeveloper_toolURL         = null;
+        }*/
+        else
+        {
+            window.opener.webdeveloper_toolBookmarklet = null;
+            window.opener.webdeveloper_toolPath        = null;
+            window.opener.webdeveloper_toolURL         = url;
+        }
+
+        return true;
+    }
+}
+
+// Toggles the tool type
+function webdeveloper_toggleToolType()
+{
+    document.getElementById("webdeveloper-application-options").setAttribute("hidden", !document.getElementById("webdeveloper-application-radio").selected);
+    /*document.getElementById("webdeveloper-bookmarklet-options").setAttribute("hidden", !document.getElementById("webdeveloper-bookmarklet-radio").selected);*/
+    document.getElementById("webdeveloper-url-options").setAttribute("hidden", !document.getElementById("webdeveloper-url-radio").selected);
+}
\ No newline at end of file