diff --git a/Ports/Android/src/com/codename1/impl/android/CodenameOneInputConnection.java b/Ports/Android/src/com/codename1/impl/android/CodenameOneInputConnection.java deleted file mode 100644 index 85446a54f2..0000000000 --- a/Ports/Android/src/com/codename1/impl/android/CodenameOneInputConnection.java +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright (c) 2012, Codename One and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Codename One designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Codename One through http://www.codenameone.com/ if you - * need additional information or have any questions. - */ -package com.codename1.impl.android; - -import android.content.Context; -import android.text.Editable; -import android.text.Selection; -import android.text.SpannableStringBuilder; -import android.text.TextUtils; -import android.util.Log; -import android.view.View; -import android.view.inputmethod.BaseInputConnection; -import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.ExtractedText; -import android.view.inputmethod.ExtractedTextRequest; -import android.view.inputmethod.InputConnection; -import android.view.inputmethod.InputMethodManager; -import com.codename1.ui.Component; -import com.codename1.ui.Display; -import com.codename1.ui.TextField; - -/** - * - */ -public class CodenameOneInputConnection extends BaseInputConnection { - - private String composingText = ""; - private Editable edit = new SpannableStringBuilder(); - private ExtractedTextRequest request; - private View view; - - public CodenameOneInputConnection(View view) { - super(view, true); - this.view = view; - } - - @Override - public boolean performEditorAction(int actionCode) { - if (Display.isInitialized() && Display.getInstance().getCurrent() != null) { - Component txtCmp = Display.getInstance().getCurrent().getFocused(); - if (txtCmp != null && txtCmp instanceof TextField) { - TextField t = (TextField) txtCmp; - if (actionCode == EditorInfo.IME_ACTION_DONE) { - Display.getInstance().setShowVirtualKeyboard(false); - } else if (actionCode == EditorInfo.IME_ACTION_NEXT) { - Display.getInstance().setShowVirtualKeyboard(false); - txtCmp.getNextFocusDown().requestFocus(); - } - } - } - - return super.performEditorAction(actionCode); - } - - public Editable getEditable() { - if (Display.isInitialized() && Display.getInstance().getCurrent() != null) { - Component txtCmp = Display.getInstance().getCurrent().getFocused(); - if (txtCmp != null && txtCmp instanceof TextField) { - TextField t = (TextField) txtCmp; - String textFieldText = t.getText(); - edit.clear(); - edit.append(textFieldText); - return edit; - } - } - return super.getEditable(); - } - - @Override - public boolean commitText(CharSequence text, int newCursorPosition) { - - if (Display.isInitialized() && Display.getInstance().getCurrent() != null) { - Component txtCmp = Display.getInstance().getCurrent().getFocused(); - if (txtCmp != null && txtCmp instanceof TextField) { - TextField t = (TextField) txtCmp; - String textFieldText = t.getText(); - int cursorPosition = t.getCursorPosition(); - StringBuilder sb = new StringBuilder(textFieldText); - if (text.equals("\n")) { - //System.out.println("hello backslash"); - } - - if (composingText.length() > 0) { - if (text.equals(" ")) { - return commitText(composingText + " ", newCursorPosition); - } - sb.replace(sb.length() - composingText.length(), sb.length(), text.toString()); - composingText = ""; - } else { - sb.insert(cursorPosition, text); - } - - t.setText(sb.toString()); - t.setCursorPosition(cursorPosition + text.length()); - - updateExtractedText(); - } - } - return super.commitText(text, newCursorPosition); - } - - @Override - public boolean setComposingText(CharSequence text, int newCursorPosition) { - if (Display.isInitialized() && Display.getInstance().getCurrent() != null) { - Component txtCmp = Display.getInstance().getCurrent().getFocused(); - if (txtCmp != null && txtCmp instanceof TextField) { - TextField t = (TextField) txtCmp; - String textFieldText = t.getText(); - StringBuilder sb = new StringBuilder(textFieldText); - sb.replace(sb.length() - composingText.length(), sb.length(), text.toString()); - int cursorPosition = t.getCursorPosition(); - composingText = text.toString(); - t.setText(sb.toString()); - t.setCursorPosition(cursorPosition + text.length()); - - updateExtractedText(); - return true; - } - } - return false; - } - - @Override - public CharSequence getTextBeforeCursor(int length, int flags) { - if (Display.isInitialized() && Display.getInstance().getCurrent() != null) { - Component txtCmp = Display.getInstance().getCurrent().getFocused(); - if (txtCmp != null && txtCmp instanceof TextField) { - String txt = ((TextField) txtCmp).getText(); - int position = ((TextField) txtCmp).getCursorPosition(); - int start; - if (position > 0) { - start = txt.subSequence(0, position).toString().lastIndexOf(" "); - if (start > 0) { - return txt.subSequence(start, position); - } else { - return txt.subSequence(0, position); - } - } - } - } - return ""; - } - - @Override - public CharSequence getTextAfterCursor(int length, int flags) { - if (Display.isInitialized() && Display.getInstance().getCurrent() != null) { - Component txtCmp = Display.getInstance().getCurrent().getFocused(); - if (txtCmp != null && txtCmp instanceof TextField) { - String txt = ((TextField) txtCmp).getText(); - int position = ((TextField) txtCmp).getCursorPosition(); - if (position > -1 && position < txt.length()) { - return txt.subSequence(position, txt.length() - 1); - } - } - } - return ""; - } - - private void updateExtractedText() { - - if (request != null) { - InputMethodManager manager = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); - ExtractedText et = new ExtractedText(); - extractText(request, et); - manager.updateExtractedText(view, request.token, et); - } - - } - - @Override - public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) { - if (Display.isInitialized() && Display.getInstance().getCurrent() != null) { - this.request = request; - ExtractedText et = new ExtractedText(); - if (extractText(request, et)) { - return et; - } - } - return null; - } - - public boolean extractText(ExtractedTextRequest request, - ExtractedText outText) { - return extractTextInternal(request, outText); - } - - boolean extractTextInternal(ExtractedTextRequest request, ExtractedText outText) { - - Component txtCmp = Display.getInstance().getCurrent().getFocused(); - if (txtCmp != null && txtCmp instanceof TextField) { - String txt = ((TextField) txtCmp).getText(); - int partialStartOffset = -1; - int partialEndOffset = -1; - final CharSequence content = txt; - if (content != null) { - final int N = content.length(); - outText.partialStartOffset = outText.partialEndOffset = -1; - partialStartOffset = 0; - partialEndOffset = N; - - if ((request.flags & InputConnection.GET_TEXT_WITH_STYLES) != 0) { - outText.text = content.subSequence(partialStartOffset, - partialEndOffset); - } else { - outText.text = TextUtils.substring(content, partialStartOffset, - partialEndOffset); - } - - outText.flags = 0; - outText.flags |= ExtractedText.FLAG_SINGLE_LINE; - outText.startOffset = 0; - outText.selectionStart = Selection.getSelectionStart(content); - outText.selectionEnd = Selection.getSelectionEnd(content); - return true; - } - - } - return false; - } -}