/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk

« back to all changes in this revision

Viewing changes to js/ace/ext-spellcheck.js

  • Committer: Gustav Hatvigsson
  • Date: 2013-05-31 06:15:46 UTC
  • mfrom: (90.1.20 lenasys2)
  • Revision ID: gustav.hartvigsson@gmail.com-20130531061546-vj8z28sq375kvghq
Merged Jonsson:s changes:
Fixed the layout on cms index so the arrows and dots marks expanded objects.
Fixed so the course content is sorted by course occasion and not by name

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
define('ace/ext/spellcheck', ['require', 'exports', 'module' , 'ace/lib/event', 'ace/editor', 'ace/config'], function(require, exports, module) {
 
2
 
 
3
var event = require("../lib/event");
 
4
 
 
5
exports.contextMenuHandler = function(e){
 
6
    var host = e.target;
 
7
    var text = host.textInput.getElement();
 
8
    if (!host.selection.isEmpty())
 
9
        return;
 
10
    var c = host.getCursorPosition();
 
11
    var r = host.session.getWordRange(c.row, c.column);
 
12
    var w = host.session.getTextRange(r);
 
13
 
 
14
    host.session.tokenRe.lastIndex = 0;
 
15
    if (!host.session.tokenRe.test(w))
 
16
        return;
 
17
    var PLACEHOLDER = "\x01\x01";
 
18
    var value = w + " " + PLACEHOLDER;
 
19
    text.value = value;
 
20
    text.setSelectionRange(w.length + 1, w.length + 1);
 
21
    text.setSelectionRange(0, 0);
 
22
    
 
23
    var afterKeydown = false;
 
24
    event.addListener(text, "keydown", function onKeydown() {
 
25
        event.removeListener(text, "keydown", onKeydown);
 
26
        afterKeydown = true;
 
27
    });
 
28
 
 
29
    host.textInput.setInputHandler(function(newVal) {
 
30
        console.log(newVal , value, text.selectionStart, text.selectionEnd)
 
31
        if (newVal == value)
 
32
            return '';
 
33
        if (newVal.lastIndexOf(value, 0) === 0)
 
34
            return newVal.slice(value.length);
 
35
        if (newVal.substr(text.selectionEnd) == value)
 
36
            return newVal.slice(0, -value.length);
 
37
        if (newVal.slice(-2) == PLACEHOLDER) {
 
38
            var val = newVal.slice(0, -2);
 
39
            if (val.slice(-1) == " ") {
 
40
                if (afterKeydown)
 
41
                    return val.substring(0, text.selectionEnd);
 
42
                val = val.slice(0, -1);
 
43
                host.session.replace(r, val);
 
44
                return "";
 
45
            }
 
46
        }
 
47
        
 
48
        return newVal;
 
49
    });
 
50
};
 
51
var Editor = require("../editor").Editor;
 
52
require("../config").defineOptions(Editor.prototype, "editor", {
 
53
    spellcheck: {
 
54
        set: function(val) {
 
55
            var text = this.textInput.getElement();
 
56
            text.spellcheck = !!val;
 
57
            if (!val)
 
58
                this.removeListener("nativecontextmenu", exports.contextMenuHandler);
 
59
            else
 
60
                this.on("nativecontextmenu", exports.contextMenuHandler);            
 
61
        },
 
62
        value: true
 
63
    }
 
64
});
 
65
 
 
66
});
 
67