123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- <!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 files where the parse is on the server
- if (window.parent.Graph.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.Editor.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(function (a, b)
- {
- return a.toLowerCase().localeCompare(b.toLowerCase());
- });
-
- 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);
-
- var cancelBtn = window.parent.mxUtils.button(window.parent.mxResources.get('cancel'), function()
- {
- hideWindow(true);
- });
- cancelBtn.className = 'geBtn';
- div.appendChild(cancelBtn);
-
- 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');
- 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 style="width:100%;">
- <tr>
- <td style="height:40px;vertical-align:top;" colspan="2">
- <input type="file" name="upfile" onchange="fileChanged()">
- </td>
- </tr>
- <tr>
- <td colspan="2" height="120px" 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="button" id="cancelButton" class="geBtn" value="Cancel" onclick="hideWindow(true);">
- <input type="submit" id="openButton" class="geBtn gePrimaryBtn" value="Open" disabled="disabled">
- </td>
- </tr>
- </table>
- </form>
- </body>
- </html>
|