in src/studies/apg/treegrid/js/treegrid-1.js [393:472]
function onKeyDown (event) {
var ENTER = 13;
var UP = 38;
var DOWN = 40;
var LEFT = 37;
var RIGHT = 39;
var HOME = 36;
var END = 35;
var CTRL_HOME = -HOME;
var CTRL_END = -END;
var numModifiersPressed = event.ctrlKey + event.altKey + event.shiftKey +
event.metaKey;
var key = event.keyCode;
if (numModifiersPressed === 1 && event.ctrlKey) {
key = -key; // Treat as negative key value when ctrl pressed
}
else if (numModifiersPressed) {
return;
}
switch (key) {
case DOWN:
moveByRow(1);
break;
case UP:
moveByRow(-1);
break;
case LEFT:
if (isEditableFocused()) {
return; // Leave key for editable area
}
if (isRowFocused()) {
changeExpanded(false) || moveByRow(-1, true);
}
else {
moveByCol(-1);
}
break;
case RIGHT:
if (isEditableFocused()) {
return; // Leave key for editable area
}
// If row: try to expand
// If col or can't expand, move column to right
if (!isRowFocused() || !changeExpanded(true)) {
moveByCol(1);
}
break;
case CTRL_HOME:
moveToExtremeRow(-1);
break;
case HOME:
if (isEditableFocused()) {
return; // Leave key for editable area
}
moveToExtreme(-1);
break;
case CTRL_END:
moveToExtremeRow(1);
break;
case END:
if (isEditableFocused()) {
return; // Leave key for editable area
}
moveToExtreme(1);
break;
case ENTER:
doPrimaryAction();
break;
default:
return;
}
// Important: don't use key for anything else, such as scrolling
event.preventDefault();
}