280 lines
No EOL
8.8 KiB
HTML
280 lines
No EOL
8.8 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
|
"http://www.w3.org/TR/html4/strict.dtd">
|
|
|
|
<html lang="en">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<title>Editor</title>
|
|
<meta name="author" content="Fabian Jakobs">
|
|
|
|
<style type="text/css" media="screen">
|
|
|
|
html {
|
|
height: 100%;
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
font: sans-serif;
|
|
height: 100%;
|
|
width: 100%;
|
|
font-family: Arial, Helvetica, sans-serif, Tahoma, Verdana;
|
|
font-size: 12px;
|
|
background: rgb(14, 98, 165);
|
|
color: white;
|
|
}
|
|
|
|
#editor {
|
|
top: 55px;
|
|
left: 0px;
|
|
background: white;
|
|
}
|
|
|
|
#controls {
|
|
width: 100%;
|
|
height: 55px;
|
|
}
|
|
|
|
</style>
|
|
<link rel="stylesheet" href="../css/editor.css" type="text/css" charset="utf-8">
|
|
<link rel="stylesheet" href="../css/tm.css" type="text/css" charset="utf-8">
|
|
|
|
<script src="../src/ace/lib/core.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/lib/oop.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/lib/lang.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/lib/event.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/lib/dom.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/Text.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/TextHighlightRules.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/JavaScript.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/DocCommentHighlightRules.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/JavaScriptHighlightRules.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/Html.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/HtmlHighlightRules.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/Css.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/CssHighlightRules.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/Xml.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/XmlHighlightRules.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/mode/MatchingBraceOutdent.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/MEventEmitter.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/Search.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/Range.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/Selection.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/UndoManager.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/Document.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/Tokenizer.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/BackgroundTokenizer.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/layer/Cursor.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/layer/Gutter.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/layer/Text.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/layer/Marker.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/ScrollBar.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/TextInput.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/KeyBinding.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/Editor.js" type="text/javascript" charset="utf-8"></script>
|
|
<script src="../src/ace/VirtualRenderer.js" type="text/javascript" charset="utf-8"></script>
|
|
</head>
|
|
<body>
|
|
|
|
<table id="controls">
|
|
<tr>
|
|
<td>
|
|
<label for="doc">Document:</label>
|
|
<select id="doc" size="1">
|
|
<option value="js">JS Document</option>
|
|
<option value="html">HTML Document</option>
|
|
<option value="css">CSS Document</option>
|
|
</select>
|
|
</td>
|
|
<td>
|
|
<label for="mode">Mode:</label>
|
|
<select id="mode" size="1">
|
|
<option value="text">Plain Text</option>
|
|
<option value="javascript">JavaScript</option>
|
|
<option value="xml">XML</option>
|
|
<option value="html">HTML</option>
|
|
<option value="css">CSS</option>
|
|
</select>
|
|
</td>
|
|
<td>
|
|
<label for="select_style">Full line selections</label>
|
|
<input type="checkbox" name="select_style" id="select_style" checked>
|
|
</td>
|
|
<td>
|
|
<label for="highlight_active">Highlight active line</label>
|
|
<input type="checkbox" name="highlight_active" id="highlight_active" checked>
|
|
</td>
|
|
<td align="right">
|
|
<img src="logo.png">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<div id="editor">
|
|
</div>
|
|
|
|
<script type="text/editor" id="jstext">function foo(items) {
|
|
for (var i=0; i<items.length; i++) {
|
|
alert(items[i] + "juhu";
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<script type="text/editor" id="csstext">.text-layer {
|
|
font-family: Monaco, "Courier New", monospace;
|
|
font-size: 12px;
|
|
cursor: text;
|
|
}
|
|
</script>
|
|
|
|
<script type="text/editor" id="htmltext"><html>
|
|
<head>
|
|
|
|
<style type="text/css">
|
|
.text-layer {
|
|
font-family: Monaco, "Courier New", monospace;
|
|
font-size: 12px;
|
|
cursor: text;
|
|
}
|
|
</style>
|
|
|
|
</head>
|
|
<body>
|
|
<h1 style="color:red">Juhu Kinners</h1>
|
|
</body>
|
|
</html>
|
|
</script>
|
|
|
|
<script type="text/javascript" charset="utf-8">
|
|
|
|
var docs = {}
|
|
docs.js = new ace.Document(document.getElementById("jstext").innerHTML);
|
|
docs.js.setMode(new ace.mode.JavaScript());
|
|
docs.js.setUndoManager(new ace.UndoManager());
|
|
|
|
docs.css = new ace.Document(document.getElementById("csstext").innerHTML);
|
|
docs.css.setMode(new ace.mode.Css());
|
|
docs.css.setUndoManager(new ace.UndoManager());
|
|
|
|
docs.html = new ace.Document(document.getElementById("htmltext").innerHTML);
|
|
docs.html.setMode(new ace.mode.Html());
|
|
docs.html.setUndoManager(new ace.UndoManager());
|
|
|
|
var docEl = document.getElementById("doc");
|
|
|
|
function onDocChange() {
|
|
var doc = getDoc();
|
|
editor.setDocument(doc);
|
|
|
|
var mode = doc.getMode();
|
|
if (mode instanceof ace.mode.JavaScript) {
|
|
modeEl.value = "javascript"
|
|
}
|
|
else if (mode instanceof ace.mode.Css) {
|
|
modeEl.value = "css"
|
|
}
|
|
else if (mode instanceof ace.mode.Html) {
|
|
modeEl.value = "html"
|
|
}
|
|
else if (mode instanceof ace.mode.Xml) {
|
|
modeEl.value = "xml"
|
|
}
|
|
else {
|
|
modeEl.value = "text"
|
|
}
|
|
|
|
editor.focus();
|
|
}
|
|
docEl.onchange = onDocChange;
|
|
|
|
function getDoc() {
|
|
return docs[docEl.value];
|
|
}
|
|
|
|
var modeEl = document.getElementById("mode");
|
|
modeEl.onchange = function() {
|
|
editor.getDocument().setMode(getMode());
|
|
};
|
|
|
|
var modes = {
|
|
text: new ace.mode.Text(),
|
|
xml: new ace.mode.Xml(),
|
|
html: new ace.mode.Html(),
|
|
css: new ace.mode.Css(),
|
|
javascript: new ace.mode.JavaScript()
|
|
};
|
|
|
|
function getMode() {
|
|
return modes[modeEl.value];
|
|
}
|
|
|
|
var selectEl = document.getElementById("select_style");
|
|
selectEl.onchange = function() {
|
|
if (selectEl.checked) {
|
|
editor.setSelectionStyle("line");
|
|
} else {
|
|
editor.setSelectionStyle("text");
|
|
}
|
|
};
|
|
|
|
var activeEl = document.getElementById("highlight_active");
|
|
activeEl.onchange = function() {
|
|
editor.setHighlightActiveLine(!!activeEl.checked);
|
|
};
|
|
|
|
var container = document.getElementById("editor");
|
|
var editor = new ace.Editor(new ace.VirtualRenderer(container));
|
|
onDocChange();
|
|
|
|
function onResize() {
|
|
container.style.width = (document.documentElement.clientWidth - 4) + "px";
|
|
container.style.height = (document.documentElement.clientHeight - 55 - 4) + "px";
|
|
editor.resize();
|
|
};
|
|
|
|
window.onresize = onResize;
|
|
onResize();
|
|
|
|
ace.addListener(container, "dragover", function(e) {
|
|
return ace.preventDefault(e);
|
|
});
|
|
|
|
ace.addListener(container, "drop", function(e) {
|
|
try {
|
|
var file = e.dataTransfer.files[0];
|
|
} catch(e) {
|
|
return ace.stopEvent();
|
|
}
|
|
|
|
if (window.FileReader) {
|
|
var reader = new FileReader();
|
|
reader.onload = function(e) {
|
|
editor.getSelection().selectAll();
|
|
|
|
var mode = "text";
|
|
if (/^.*\.js$/i.test(file.name)) {
|
|
mode = "javascript";
|
|
} else if (/^.*\.xml$/i.test(file.name)) {
|
|
mode = "xml";
|
|
} else if (/^.*\.html$/i.test(file.name)) {
|
|
mode = "html";
|
|
} else if (/^.*\.css$/i.test(file.name)) {
|
|
mode = "css";
|
|
}
|
|
|
|
editor.onTextInput(reader.result);
|
|
|
|
modeEl.value = mode;
|
|
editor.getDocument().setMode(modes[mode]);
|
|
}
|
|
reader.readAsText(file);
|
|
}
|
|
|
|
return ace.preventDefault(e);
|
|
});
|
|
|
|
</script>
|
|
|
|
</body>
|
|
</html> |