package org.geogebra.web.web.util.keyboard; import org.geogebra.keyboard.web.KeyboardConstants; import org.geogebra.keyboard.web.KeyboardListener; import org.geogebra.web.html5.gui.inputfield.AutoCompleteTextFieldW; import org.geogebra.web.html5.gui.util.KeyboardLocale; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.user.client.Event; public class AutocompleteProcessing implements KeyboardListener { private AutoCompleteTextFieldW field; public AutocompleteProcessing(AutoCompleteTextFieldW field) { this.field = field; } @Override public void setFocus(boolean focus) { if (field == null) { return; } field.setFocus(focus); } @Override public void setKeyBoardModeText(boolean b) { // } @Override public void onEnter() { NativeEvent event = Document.get().createKeyDownEvent(false, false, false, false, ENTER); field.getTextField().onBrowserEvent(Event.as(event)); event = Document.get().createKeyPressEvent(false, false, false, false, ENTER); field.getTextField().onBrowserEvent(Event.as(event)); event = Document.get().createKeyUpEvent(false, false, false, false, ENTER); field.getTextField().onBrowserEvent(Event.as(event)); } @Override public void onBackSpace() { field.onBackSpace(); } @Override public boolean isSVCell() { return field.getStyleName().indexOf("SpreadsheetEditorCell") >= 0; } @Override public void insertString(String text) { field.insertString(text); if (text.startsWith("(")) { // moves inside the brackets onArrow(ArrowType.left); } else if (text.equals(KeyboardConstants.A_POWER_X)) { field.insertString("^"); } else if ("nroot".equals(text)) { field.insertString("()"); onArrow(ArrowType.left); } } @Override public void onArrow(ArrowType type) { int caretPos = field.getCaretPosition(); switch (type) { case left: if (caretPos > 0) { field.setCaretPosition(caretPos - 1); } break; case right: if (caretPos < field.getText(true).length()) { field.setCaretPosition(caretPos + 1); } break; } } @Override public boolean resetAfterEnter() { return false; } @Override public void scrollCursorIntoView() { // TODO Auto-generated method stub } @Override public void updateForNewLanguage(KeyboardLocale localization) { // overridden for RTI } @Override public void endEditing() { field.endOnscreenKeyboardEditing(); } @Override public AutoCompleteTextFieldW getField() { return field; } public void onKeyboardClosed() { if (isSVCell()) { if (field.getApp().getGuiManager() != null) { field.getApp().getGuiManager().getSpreadsheetView() .setKeyboardEnabled(false); } } } }