var Xex = {
LogNode: null,
- Log: function (arg, indent)
+ Log: function (arg, indent, cont)
{
if (! Xex.LogNode)
return;
if (indent != undefined)
for (var i = 0; i <= indent; i++)
str += ' ';
- Xex.LogNode.value += "\n" + str + arg;
+ if (! cont)
+ Xex.LogNode.value += "\n";
+ Xex.LogNode.value += str + arg;
Xex.LogNode.scrollTop = Xex.LogNode.scrollHeight;
}
}
}
return this.Current ();
}
+
+ MIM.Candidates.prototype.CurrentGroup = function (selector)
+ {
+ var col, start, end
+ if (this.column > 0)
+ {
+ col = this.index % this.column;
+ start = this.index - col;
+ end = start + this.column;
+ if (end > this.total)
+ end = this.total;
+ }
+ else
+ {
+ start = this.blocks[this.row].Index;
+ col = this.index - start;
+ end = start + this.blocks[this.row].Count ();
+ }
+ var group = new Array ();
+ group.push (col);
+ var row = this.row;
+ var block = this.blocks[row++];
+ while (start < end)
+ {
+ var c = block.get (start - block.Index);
+ group.push (c);
+ start++;
+ if (start == block.Index + block.Count ())
+ block = this.blocks[row++];
+ }
+ return group;
+ }
}) ();
MIM.im_domain = new Xex.Domain ('input-method', null, null);
if (out.index > this.key_head)
{
this.key_head = out.index;
- Xex.Log (' with submap for ' + this.key_head + 'keys');
+ Xex.Log (' with submap for ' + this.key_head + 'keys', false, true);
restore_state.call (this);
this.keymap = sub;
if (sub.map_actions)
}
else
{
- Xex.Log (' without submap');
+ Xex.Log (' without submap', false, true);
this.keymap = sub;
var current_state = this.state;
var map = this.keymap;
{
this.preedit_replace (this.cursor_pos, this.cursor_pos, text, candidates);
this.changed = MIM.ChangedStatus.Preedit | MIM.ChangedStatus.CursorPos;
+ this.candidates = candidates;
},
rep: function (old_text, new_text, candidates)
this.key_unhandled = false;
this.keys.val.push (key);
var count = 0;
- Xex.Log ("keyhead=" + this.key_head + " len="+this.keys.val.length);
while (this.key_head < this.keys.val.length)
{
if (! handle_key.call (this))
//this.keys.val.splice (0, this.keys.val.length);
this.key_head = this.state_key_head = this.commit_key_head = 0;
}
+ MIM.show (this);
+ if (false && (this.changed & MIM.ChangedStatus.Candidate))
+ {
+ if (this.candidate_show)
+ MIM.show (this);
+ else
+ MIM.hide (this);
+ }
return (! this.key_unhandled
&& this.produced.length == 0);
}
function copy_style (from, to)
{
var from_style = getComputedStyle(from,'');
-
for(var name in style_props)
to.style[name] = from_style.getPropertyValue (style_props[name]);
-
to.style.left = from.offsetLeft + 'px';
to.style.top = from.offsetTop + 'px';
to.style.width = from.offsetWidth;
to.style.height = from.offsetHeight;
}
- MIM.show = function (target, ic)
+ MIM.show = function (ic)
{
+ Xex.Log ('show:' + ic.candidates);
+ if (! ic.candidates)
+ return;
+ var target = ic.target;
if (! ic.div_node)
{
ic.target_top = 0;
ic.target_left += elm.offsetLeft;
}
ic.div_node = document.createElement ('div');
+ copy_style (target, ic.div_node);
ic.div_node.style.visibility="hidden";
ic.div_node.style.position = "absolute";
document.getElementsByTagName ('body')[0].appendChild (ic.div_node);
ic.div_node_first = document.createElement ('span');
ic.div_node_last = document.createElement('span');
ic.div_node_last.innerHTML = '.';
- ic.can_node = document.createElement ('div');
- ic.can_node.appendChild (document.createTextNode ('1. abc'));
- ic.can_node.appendChild (document.createTextNode ('2. def'));
+ ic.div_node.appendChild (ic.div_node_first);
+ ic.div_node.appendChild (ic.div_node_last);
+ ic.can_node = document.createElement ('table');
ic.can_node.style.position = 'absolute';
ic.can_node.style.display = 'none';
+ ic.can_node.style.backgroundColor = "white";
+ ic.can_node.style.border = "1px solid black";
document.getElementsByTagName ('body')[0].appendChild (ic.can_node);
}
- copy_style (target, ic.div_node);
- ic.div_node.innerHTML = '';
+ ic.can_node.innerHTML = '';
+ var tr = document.createElement ('tr');
+ ic.can_node.appendChild (tr);
+ var group = ic.candidates.CurrentGroup ();
+ for (var i = 1; i < group.length; i++)
+ {
+ var td = document.createElement ('td');
+ td.nowrap = true;
+ td.innerHTML = i + '.' + group[i];
+ if (i == group[0] + 1)
+ td.style.backgroundColor = 'lightblue';
+ ic.can_node.appendChild (td);
+ }
ic.div_node_first.innerHTML = target.value.substr (0, ic.range[0]);
- ic.div_node.appendChild (ic.div_node_first);
- ic.div_node.appendChild (ic.div_node_last);
- Xex.Log (ic.div_node.firstChild.innerHTML);
var x = ic.target_left + ic.div_node.lastChild.offsetLeft;
- var y = ic.target_top + ic.div_node.lastChild.offsetTop - target.scrollTop;
+ var y = (ic.target_top + ic.div_node.lastChild.offsetTop
+ + ic.div_node.lastChild.offsetHeight - target.scrollTop + 10);
ic.can_node.style.left = x + 'px';
ic.can_node.style.top = y + 'px';
ic.can_node.style.display = 'block';
- Xex.Log ("x:" + x + "px y:" + y + "px");
}
}) ();
if (! MIM.get_range (target, ic))
ic.reset ();
}
- MIM.show (target, ic);
+ //MIM.show (target, ic);
MIM.debug_print (event, ic);
ic.key = MIM.decode_key_event (event);
if (ic.key)
Xex.Log ("filtering " + ic.key);
try {
var result = ic.Filter (ic.key);
- Xex.Log ("result = " + result);
} catch (e) {
Xex.Log ('Error:' + e);
throw (e);