| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Open Diagram</title> |
| <link rel="stylesheet" type="text/css" href="styles/grapheditor.css" /> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| </head> |
| <script type="text/javascript"> |
| // Reads files locally |
| function handleFiles(files) |
| { |
| for (var i = 0; i < files.length; i++) |
| { |
| (function(file) |
| { |
| // Small hack to support import |
| if (window.parent.openNew) |
| { |
| window.parent.open(window.parent.location.href); |
| } |
| |
| var reader = new FileReader(); |
| reader.onload = function(e) |
| { |
| window.parent.openFile.setData(e.target.result, file.name); |
| }; |
| reader.onerror = function(e) |
| { |
| console.log(e); |
| }; |
| reader.readAsText(file); |
| })(files[i]); |
| } |
| }; |
| |
| // Handles form-submit by preparing to process response |
| function handleSubmit() |
| { |
| var form = window.openForm || document.getElementById('openForm'); |
| |
| // Checks for support of the File API for local file access |
| // except for Visio files where the parse is on the server |
| if (window.parent.fileSupport && form.upfile.files.length > 0) |
| { |
| handleFiles(form.upfile.files); |
| |
| return false; |
| } |
| else |
| { |
| if (/(\.xml)$/i.test(form.upfile.value) || /(\.txt)$/i.test(form.upfile.value) || |
| /(\.mxe)$/i.test(form.upfile.value)) |
| { |
| // Small hack to support import |
| if (window.parent.openNew) |
| { |
| window.parent.open(window.parent.location.href); |
| } |
| |
| // NOTE: File is loaded via JS injection into the iframe, which in turn sets the |
| // file contents in the parent window. The new window asks its opener if any file |
| // contents are available or waits for the contents to become available. |
| return true; |
| } |
| else |
| { |
| window.parent.mxUtils.alert(window.parent.mxResources.get('invalidOrMissingFile')); |
| |
| return false; |
| } |
| } |
| }; |
| |
| // Hides this dialog |
| function hideWindow(cancel) |
| { |
| window.parent.openFile.cancel(cancel); |
| } |
| |
| function fileChanged() |
| { |
| var form = window.openForm || document.getElementById('openForm'); |
| var openButton = document.getElementById('openButton'); |
| |
| if (form.upfile.value.length > 0) |
| { |
| openButton.removeAttribute('disabled'); |
| } |
| else |
| { |
| openButton.setAttribute('disabled', 'disabled'); |
| } |
| } |
| |
| function main() |
| { |
| if (window.parent.useLocalStorage) |
| { |
| document.body.innerHTML = ''; |
| var div = document.createElement('div'); |
| div.style.fontFamily = 'Arial'; |
| |
| if (localStorage.length == 0) |
| { |
| window.parent.mxUtils.write(div, window.parent.mxResources.get('noFiles')); |
| } |
| else |
| { |
| var keys = []; |
| |
| for (var i = 0; i < localStorage.length; i++) |
| { |
| keys.push(localStorage.key(i)); |
| } |
| |
| // Sorts the array by filename (key) |
| keys.sort(); |
| |
| for (var i = 0; i < keys.length; i++) |
| { |
| var link = document.createElement('a'); |
| link.style.fontDecoration = 'none'; |
| link.style.fontSize = '14pt'; |
| var key = keys[i]; |
| window.parent.mxUtils.write(link, key); |
| link.setAttribute('href', 'javascript:void(0);'); |
| div.appendChild(link); |
| |
| var img = document.createElement('span'); |
| img.className = 'geSprite geSprite-delete'; |
| img.style.position = 'relative'; |
| img.style.cursor = 'pointer'; |
| img.style.display = 'inline-block'; |
| div.appendChild(img); |
| |
| window.parent.mxUtils.br(div); |
| |
| window.parent.mxEvent.addListener(img, 'click', (function(k) |
| { |
| return function() |
| { |
| if (window.parent.mxUtils.confirm(window.parent.mxResources.get('delete') + ' "' + k + '"?')) |
| { |
| localStorage.removeItem(k); |
| window.location.reload(); |
| } |
| }; |
| })(key)); |
| |
| window.parent.mxEvent.addListener(link, 'click', (function(k) |
| { |
| return function() |
| { |
| try |
| { |
| window.parent.open(window.parent.location.href); |
| window.parent.openFile.setData(localStorage.getItem(k), k); |
| } |
| catch (e) |
| { |
| window.parent.mxUtils.alert(e.message); |
| } |
| }; |
| })(key)); |
| } |
| } |
| |
| window.parent.mxUtils.br(div); |
| window.parent.mxUtils.br(div); |
| |
| div.appendChild(window.parent.mxUtils.button(window.parent.mxResources.get('cancel'), function() |
| { |
| hideWindow(true); |
| })); |
| |
| document.body.appendChild(div); |
| } |
| else |
| { |
| var editLink = document.getElementById('editLink'); |
| var openButton = document.getElementById('openButton'); |
| openButton.value = window.parent.mxResources.get(window.parent.openKey || 'open'); |
| var cancelButton = document.getElementById('cancelButton'); |
| cancelButton.value = window.parent.mxResources.get('cancel'); |
| var supportedText = document.getElementById('openSupported'); |
| supportedText.innerHTML = window.parent.mxResources.get('openSupported'); |
| var form = window.openForm || document.getElementById('openForm'); |
| |
| // FIXME: Adds .html in IE |
| form.setAttribute('action', window.parent.OPEN_URL); |
| } |
| }; |
| </script> |
| <body onload="main();"> |
| <form method="POST" enctype="multipart/form-data" action="" name="openForm" |
| id="openForm" onsubmit="return handleSubmit();" accept-charset="UTF-8"> |
| <table> |
| <tr> |
| <td style="height:40px;vertical-align:top;" colspan="2"> |
| <input type="file" name="upfile" onchange="fileChanged()"> |
| </td> |
| </tr> |
| <tr> |
| <td colspan="2" height="80px" id="openSupported" style="font-family:arial;color:grey;font-size:9pt;vertical-align:top;text-align:left;"> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| </td> |
| <td style="vertical-align:middle;text-align:right;white-space:nowrap;"> |
| <input type="submit" id="openButton" value="Open" disabled="disabled"> |
| <input type="button" id="cancelButton" value="Cancel" onclick="hideWindow(true);"> |
| </td> |
| </tr> |
| </table> |
| </form> |
| </body> |
| </html> |