X-Git-Url: http://git.euphorik.ch/?p=pompage.git;a=blobdiff_plain;f=doc%2Fwebdeveloper%2Foptions%2Fdialogs%2Ftool.js;fp=doc%2Fwebdeveloper%2Foptions%2Fdialogs%2Ftool.js;h=78ebf89819a8002232872f245f923450f69c8d1f;hp=0000000000000000000000000000000000000000;hb=c3b0deb3d8c9f439739c79806e915c29bc1d4b84;hpb=cff6539539a79e014f6ac8df46716cafce2c8472 diff --git a/doc/webdeveloper/options/dialogs/tool.js b/doc/webdeveloper/options/dialogs/tool.js new file mode 100644 index 0000000..78ebf89 --- /dev/null +++ b/doc/webdeveloper/options/dialogs/tool.js @@ -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