git-svn-id: svn://euphorik.ch/pompage@45 02bbb61a-6d21-0410-aba0-cb053bdfd66a
[pompage.git] / doc / webdeveloper / options / dialogs / tool.js
1 // Open a dialog to choose an application
2 function webdeveloper_chooseApplication()
3 {
4 var filePicker = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
5
6 filePicker.init(window, document.getElementById("webdeveloper-string-bundle").getString("webdeveloper_chooseApplication"), filePicker.modeOpen);
7
8 // If the user selected an application
9 if(filePicker.show() == filePicker.returnOK)
10 {
11 var applicationPath = filePicker.file.path;
12 var executable = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
13
14 executable.initWithPath(applicationPath);
15
16 // If the executable exists, is a file and is executable
17 if(executable.exists() && executable.isFile() && executable.isExecutable())
18 {
19 document.getElementById("webdeveloper.tool.path").value = applicationPath;
20 }
21 else
22 {
23 webdeveloper_error(document.getElementById("webdeveloper-string-bundle").getFormattedString("webdeveloper_invalidApplication", [applicationPath]));
24 }
25 }
26 }
27
28 // Clears the tool
29 function webdeveloper_clearTool()
30 {
31 window.opener.webdeveloper_toolDescription = null;
32 window.opener.webdeveloper_toolKey = null;
33 window.opener.webdeveloper_toolPath = null;
34 window.opener.webdeveloper_toolURL = null;
35 }
36
37 // Initializes the tool dialog box
38 function webdeveloper_initializeTool()
39 {
40 var modifiers = null;
41 var stringBundle = document.getElementById("webdeveloper-string-bundle");
42
43 // If running on a Mac
44 if(webdeveloper_isMac())
45 {
46 modifiers = stringBundle.getString("webdeveloper_keyboardShortcutModifiersMac");
47 }
48 else
49 {
50 modifiers = stringBundle.getString("webdeveloper_keyboardShortcutModifiers");
51 }
52
53 document.getElementById("webdeveloper-keyboard-shortcut-modifiers").value = modifiers;
54
55 // If the first argument equals add
56 if(window.arguments[0] == "add")
57 {
58 document.title = stringBundle.getString("webdeveloper_addTool");
59 }
60 else
61 {
62 document.title = stringBundle.getString("webdeveloper_editTool");
63
64 document.getElementById("webdeveloper.tool.description").value = window.arguments[1];
65 document.getElementById("webdeveloper.tool.key").value = window.arguments[2];
66
67 // If the last argument equals the application tool type
68 if(window.arguments[4] == stringBundle.getString("webdeveloper_application"))
69 {
70 document.getElementById("webdeveloper.tool.path").value = window.arguments[3];
71 }
72 else if(window.arguments[4] == stringBundle.getString("webdeveloper_bookmarklet"))
73 {
74 var bookmarkletRadio = document.getElementById("webdeveloper-bookmarklet-radio");
75
76 document.getElementById("webdeveloper.tool.bookmarklet").value = window.arguments[3];
77 bookmarkletRadio.radioGroup.selectedItem = bookmarkletRadio;
78
79 document.getElementById("webdeveloper-application-options").setAttribute("hidden", true);
80 document.getElementById("webdeveloper-bookmarklet-options").setAttribute("hidden", false);
81 }
82 else
83 {
84 var urlRadio = document.getElementById("webdeveloper-url-radio");
85
86 document.getElementById("webdeveloper.tool.url").value = window.arguments[3];
87 urlRadio.radioGroup.selectedItem = urlRadio;
88
89 document.getElementById("webdeveloper-application-options").setAttribute("hidden", true);
90 document.getElementById("webdeveloper-url-options").setAttribute("hidden", false);
91 }
92 }
93 }
94
95 // Saves the tool
96 function webdeveloper_saveTool()
97 {
98 var bookmarklet = document.getElementById("webdeveloper.tool.bookmarklet").value.trim();
99 var description = document.getElementById("webdeveloper.tool.description").value.trim();
100 var errors = "";
101 var key = document.getElementById("webdeveloper.tool.key").value.trim();
102 var path = document.getElementById("webdeveloper.tool.path").value.trim();
103 var stringBundle = document.getElementById("webdeveloper-string-bundle");
104 var url = document.getElementById("webdeveloper.tool.url").value.trim();
105
106 // If the description is empty
107 if(!description)
108 {
109 errors += stringBundle.getString("webdeveloper_emptyDescription") + "\n";
110 }
111
112 // If the application type is selected and the path is empty
113 if(document.getElementById("webdeveloper-application-radio").selected && !path)
114 {
115 errors += stringBundle.getString("webdeveloper_applicationPath") + "\n";
116 }
117 /*else if(document.getElementById("webdeveloper-bookmarklet-radio").selected && !bookmarklet)
118 {
119 errors += stringBundle.getString("webdeveloper_emptyBookmarklet") + "\n";
120 }*/
121 else if(document.getElementById("webdeveloper-url-radio").selected && !url)
122 {
123 errors += stringBundle.getString("webdeveloper_emptyURL") + "\n";
124 }
125
126 // If there are errors
127 if(errors)
128 {
129 webdeveloper_error(errors.trim());
130
131 return false;
132 }
133 else
134 {
135 window.opener.webdeveloper_toolDescription = description;
136 window.opener.webdeveloper_toolKey = key;
137
138 // If the application type is selected
139 if(document.getElementById("webdeveloper-application-radio").selected)
140 {
141 window.opener.webdeveloper_toolBookmarklet = null;
142 window.opener.webdeveloper_toolPath = path;
143 window.opener.webdeveloper_toolURL = null;
144 }
145 /*else if(document.getElementById("webdeveloper-bookmarklet-radio").selected)
146 {
147 window.opener.webdeveloper_toolBookmarklet = bookmarklet;
148 window.opener.webdeveloper_toolPath = null;
149 window.opener.webdeveloper_toolURL = null;
150 }*/
151 else
152 {
153 window.opener.webdeveloper_toolBookmarklet = null;
154 window.opener.webdeveloper_toolPath = null;
155 window.opener.webdeveloper_toolURL = url;
156 }
157
158 return true;
159 }
160 }
161
162 // Toggles the tool type
163 function webdeveloper_toggleToolType()
164 {
165 document.getElementById("webdeveloper-application-options").setAttribute("hidden", !document.getElementById("webdeveloper-application-radio").selected);
166 /*document.getElementById("webdeveloper-bookmarklet-options").setAttribute("hidden", !document.getElementById("webdeveloper-bookmarklet-radio").selected);*/
167 document.getElementById("webdeveloper-url-options").setAttribute("hidden", !document.getElementById("webdeveloper-url-radio").selected);
168 }