| 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>
 |