externalize the TextInput class
This commit is contained in:
parent
b79abd8de8
commit
77cabfd9c8
3 changed files with 83 additions and 83 deletions
83
Editor.js
83
Editor.js
|
|
@ -1,86 +1,3 @@
|
||||||
function TextInput(parentNode, host) {
|
|
||||||
|
|
||||||
var text = document.createElement("textarea");
|
|
||||||
var style = text.style;
|
|
||||||
style.position = "absolute";
|
|
||||||
style.left = "-10000px";
|
|
||||||
style.top = "-10000px";
|
|
||||||
parentNode.appendChild(text);
|
|
||||||
|
|
||||||
var inCompostion = false;
|
|
||||||
|
|
||||||
var onTextInput = function(e) {
|
|
||||||
setTimeout(function() {
|
|
||||||
if (!inCompostion) {
|
|
||||||
if (text.value) host.onTextInput(text.value);
|
|
||||||
text.value = "";
|
|
||||||
}
|
|
||||||
}, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
var onCompositionStart = function(e)
|
|
||||||
{
|
|
||||||
inCompostion = true;
|
|
||||||
|
|
||||||
if (text.value) host.onTextInput(text.value);
|
|
||||||
text.value = "";
|
|
||||||
|
|
||||||
host.onCompositionStart();
|
|
||||||
setTimeout(onCompositionUpdate, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
var onCompositionUpdate = function() {
|
|
||||||
host.onCompositionUpdate(text.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
var onCompositionEnd = function()
|
|
||||||
{
|
|
||||||
inCompostion = false;
|
|
||||||
host.onCompositionEnd();
|
|
||||||
onTextInput();
|
|
||||||
}
|
|
||||||
|
|
||||||
var onCopy = function() {
|
|
||||||
text.value = host.getCopyText();
|
|
||||||
text.select();
|
|
||||||
}
|
|
||||||
|
|
||||||
var onCut = function() {
|
|
||||||
text.value = host.getCopyText();
|
|
||||||
host.onCut();
|
|
||||||
text.select();
|
|
||||||
}
|
|
||||||
|
|
||||||
addListener(text, "keypress", onTextInput, false);
|
|
||||||
addListener(text, "textInput", onTextInput, false);
|
|
||||||
addListener(text, "paste", onTextInput, false);
|
|
||||||
addListener(text, "propertychange", onTextInput, false);
|
|
||||||
|
|
||||||
addListener(text, "copy", onCopy, false);
|
|
||||||
addListener(text, "cut", onCut, false);
|
|
||||||
|
|
||||||
addListener(text, "compositionstart", onCompositionStart, false);
|
|
||||||
addListener(text, "compositionupdate", onCompositionUpdate, false);
|
|
||||||
addListener(text, "compositionend", onCompositionEnd, false);
|
|
||||||
|
|
||||||
addListener(text, "blur", function() {
|
|
||||||
host.onBlur();
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
addListener(text, "focus", function() {
|
|
||||||
host.onFocus();
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
|
|
||||||
this.focus = function() {
|
|
||||||
text.focus();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.blur = function() {
|
|
||||||
this.blur();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var keys = {
|
var keys = {
|
||||||
UP: 38,
|
UP: 38,
|
||||||
RIGHT: 39,
|
RIGHT: 39,
|
||||||
|
|
|
||||||
82
TextInput.js
Normal file
82
TextInput.js
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
function TextInput(parentNode, host) {
|
||||||
|
|
||||||
|
var text = document.createElement("textarea");
|
||||||
|
var style = text.style;
|
||||||
|
style.position = "absolute";
|
||||||
|
style.left = "-10000px";
|
||||||
|
style.top = "-10000px";
|
||||||
|
parentNode.appendChild(text);
|
||||||
|
|
||||||
|
var inCompostion = false;
|
||||||
|
|
||||||
|
var onTextInput = function(e) {
|
||||||
|
setTimeout(function() {
|
||||||
|
if (!inCompostion) {
|
||||||
|
if (text.value) host.onTextInput(text.value);
|
||||||
|
text.value = "";
|
||||||
|
}
|
||||||
|
}, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
var onCompositionStart = function(e)
|
||||||
|
{
|
||||||
|
inCompostion = true;
|
||||||
|
|
||||||
|
if (text.value) host.onTextInput(text.value);
|
||||||
|
text.value = "";
|
||||||
|
|
||||||
|
host.onCompositionStart();
|
||||||
|
setTimeout(onCompositionUpdate, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
var onCompositionUpdate = function() {
|
||||||
|
host.onCompositionUpdate(text.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
var onCompositionEnd = function()
|
||||||
|
{
|
||||||
|
inCompostion = false;
|
||||||
|
host.onCompositionEnd();
|
||||||
|
onTextInput();
|
||||||
|
}
|
||||||
|
|
||||||
|
var onCopy = function() {
|
||||||
|
text.value = host.getCopyText();
|
||||||
|
text.select();
|
||||||
|
}
|
||||||
|
|
||||||
|
var onCut = function() {
|
||||||
|
text.value = host.getCopyText();
|
||||||
|
host.onCut();
|
||||||
|
text.select();
|
||||||
|
}
|
||||||
|
|
||||||
|
addListener(text, "keypress", onTextInput, false);
|
||||||
|
addListener(text, "textInput", onTextInput, false);
|
||||||
|
addListener(text, "paste", onTextInput, false);
|
||||||
|
addListener(text, "propertychange", onTextInput, false);
|
||||||
|
|
||||||
|
addListener(text, "copy", onCopy, false);
|
||||||
|
addListener(text, "cut", onCut, false);
|
||||||
|
|
||||||
|
addListener(text, "compositionstart", onCompositionStart, false);
|
||||||
|
addListener(text, "compositionupdate", onCompositionUpdate, false);
|
||||||
|
addListener(text, "compositionend", onCompositionEnd, false);
|
||||||
|
|
||||||
|
addListener(text, "blur", function() {
|
||||||
|
host.onBlur();
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
addListener(text, "focus", function() {
|
||||||
|
host.onFocus();
|
||||||
|
}, false);
|
||||||
|
|
||||||
|
|
||||||
|
this.focus = function() {
|
||||||
|
text.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.blur = function() {
|
||||||
|
this.blur();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -24,6 +24,7 @@
|
||||||
<script src="CursorLayer.js" type="text/javascript" charset="utf-8"></script>
|
<script src="CursorLayer.js" type="text/javascript" charset="utf-8"></script>
|
||||||
<script src="TextLayer.js" type="text/javascript" charset="utf-8"></script>
|
<script src="TextLayer.js" type="text/javascript" charset="utf-8"></script>
|
||||||
<script src="MarkerLayer.js" type="text/javascript" charset="utf-8"></script>
|
<script src="MarkerLayer.js" type="text/javascript" charset="utf-8"></script>
|
||||||
|
<script src="TextInput.js" type="text/javascript" charset="utf-8"></script>
|
||||||
<script src="Editor.js" type="text/javascript" charset="utf-8"></script>
|
<script src="Editor.js" type="text/javascript" charset="utf-8"></script>
|
||||||
<script src="VirtualRenderer.js" type="text/javascript" charset="utf-8"></script>
|
<script src="VirtualRenderer.js" type="text/javascript" charset="utf-8"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue