package com.chemhack.jsMolEditor.client.listener;
import com.google.gwt.user.client.ui.KeyboardListenerCollection;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.EventPreview;
import com.google.gwt.user.client.Event;
import com.chemhack.jsMolEditor.client.controller.EditorController;
public class KeyboardShortCutEventPreview implements EventPreview {
EditorController controller;
public KeyboardShortCutEventPreview(EditorController controller) {
this.controller = controller;
}
public boolean onEventPreview(Event event) {
int type = DOM.eventGetType(event);
switch (type) {
case Event.ONKEYDOWN:
return onKeyDownPreview((char) DOM.eventGetKeyCode(event),
KeyboardListenerCollection.getKeyboardModifiers(event));
default:
return true;
}
}
private boolean onKeyDownPreview(char keyCode, int modifiers) {
// System.out.println("key:" + (int)keyCode + " mod:" + modifiers);
switch (modifiers) {
case 0:
switch (keyCode) {
case 'C':
case 'N':
case 'O':
case 'S':
case 'F':
case 'I':
case 'P':
controller.selectElement(String.valueOf(keyCode));
break;
case 'B':
controller.selectElement("Br");
break;
case '3':
case '4':
case '5':
case '6':
controller.selectRingAction(Integer.parseInt(String.valueOf(keyCode)), false);
break;
case '1': //Benzene
controller.selectRingAction(6, true);
break;
case 189: //Key -
controller.selectEditAction(EditorController.EditActions.drawSingleBond);
break;
case 187: //Key =
controller.selectEditAction(EditorController.EditActions.drawDoubleBond);
break;
}
return false;
default:
return true;
}
}
}