android.text.method.QwertyKeyListener Java Examples

The following examples show how to use android.text.method.QwertyKeyListener. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: RecipientEditTextView.java    From talk-android with MIT License 6 votes vote down vote up
private void handleEdit(int start, int end) {
    if (start == -1 || end == -1) {
        // This chip no longer exists in the field.
        dismissDropDown();
        return;
    }
    // This is in the middle of a chip, so select out the whole chip
    // and commit it.
    Editable editable = getText();
    setSelection(end);
    String text = getText().toString().substring(start, end);
    if (!TextUtils.isEmpty(text)) {
        RecipientEntry entry = RecipientEntry.constructFakeEntry(text, isValid(text));
        QwertyKeyListener.markAsReplaced(editable, start, end, "");
        CharSequence chipText = createChip(entry, false);
        int selEnd = getSelectionEnd();
        if (chipText != null && start > -1 && selEnd > -1) {
            editable.replace(start, selEnd, chipText);
        }
    }
    dismissDropDown();
}
 
Example #2
Source File: RecipientEditTextView.java    From talk-android with MIT License 6 votes vote down vote up
private void submitItem(RecipientEntry entry) {
    if (entry == null) {
        return;
    }
    clearComposingText();

    int end = getSelectionEnd();
    int start = mTokenizer.findTokenStart(getText(), end);

    Editable editable = getText();
    QwertyKeyListener.markAsReplaced(editable, start, end, "");
    CharSequence chip = createChip(entry, false);
    if (chip != null && start >= 0 && end >= 0) {
        editable.replace(start, end, chip);
    }
    sanitizeBetween();
}
 
Example #3
Source File: TextChipsEditView.java    From talk-android with MIT License 6 votes vote down vote up
private void handleEdit(int start, int end) {
    if (start == -1 || end == -1) {
        // This chip no longer exists in the field.
        dismissDropDown();
        return;
    }
    // This is in the middle of a chip, so select out the whole chip
    // and commit it.
    Editable editable = getText();
    setSelection(end);
    String text = getText().toString().substring(start, end);
    if (!TextUtils.isEmpty(text)) {
        RecipientEntry entry = RecipientEntry.constructFakeEntry(text, isValid(text));
        QwertyKeyListener.markAsReplaced(editable, start, end, "");
        CharSequence chipText = createChip(entry, false);
        int selEnd = getSelectionEnd();
        if (chipText != null && start > -1 && selEnd > -1) {
            editable.replace(start, selEnd, chipText);
        }
    }
    dismissDropDown();
}
 
Example #4
Source File: TextChipsEditView.java    From talk-android with MIT License 6 votes vote down vote up
private void submitItem(RecipientEntry entry) {
    if (entry == null) {
        return;
    }
    clearComposingText();

    int end = getSelectionEnd();
    int start = mTokenizer.findTokenStart(getText(), end);

    Editable editable = getText();
    QwertyKeyListener.markAsReplaced(editable, start, end, "");
    CharSequence chip = createChip(entry, false);
    if (chip != null && start >= 0 && end >= 0) {
        editable.replace(start, end, chip);
    }
    sanitizeBetween();
}
 
Example #5
Source File: TextChipsEditView.java    From talk-android with MIT License 6 votes vote down vote up
/**
 * Remove selection from this chip. Unselecting a RecipientChip will render
 * the chip without a delete icon and with an unfocused background. This is
 * called when the RecipientChip no longer has focus.
 */
private void unselectChip(DrawableRecipientChip chip) {
    int start = getChipStart(chip);
    int end = getChipEnd(chip);
    Editable editable = getText();
    mSelectedChip = null;
    if (start == -1 || end == -1) {
        Log.w(TAG, "The chip doesn't exist or may be a chip a user was editing");
        setSelection(editable.length());
        commitDefault();
    } else {
        getSpannable().removeSpan(chip);
        QwertyKeyListener.markAsReplaced(editable, start, end, "");
        editable.removeSpan(chip);
        try {
            if (!mNoChips) {
                editable.setSpan(constructChipSpan(chip.getEntry(), false, false),
                        start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        } catch (NullPointerException e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }
    setCursorVisible(true);
    setSelection(editable.length());
}
 
Example #6
Source File: RecipientEditTextView.java    From ChipsLibrary with Apache License 2.0 6 votes vote down vote up
private void handleEdit(final int start,final int end)
{
if(start==-1||end==-1)
  {
  // This chip no longer exists in the field.
  dismissDropDown();
  return;
  }
// This is in the middle of a chip, so select out the whole chip
// and commit it.
final Editable editable=getText();
setSelection(end);
final String text=getText().toString().substring(start,end);
if(!TextUtils.isEmpty(text))
  {
  final RecipientEntry entry=RecipientEntry.constructFakeEntry(text,isValid(text));
  QwertyKeyListener.markAsReplaced(editable,start,end,"");
  final CharSequence chipText=createChip(entry,false);
  final int selEnd=getSelectionEnd();
  if(chipText!=null&&start>-1&&selEnd>-1)
    editable.replace(start,selEnd,chipText);
  }
dismissDropDown();
}
 
Example #7
Source File: RecipientEditTextView.java    From ChipsLibrary with Apache License 2.0 6 votes vote down vote up
private void submitItemAtPosition(final int position)
{
final RecipientEntry entry=createValidatedEntry(getAdapter().getItem(position));
if(entry==null)
  return;
clearComposingText();
final int end=getSelectionEnd();
final int start=mTokenizer.findTokenStart(getText(),end);
final Editable editable=getText();
QwertyKeyListener.markAsReplaced(editable,start,end,"");
final CharSequence chip=createChip(entry,false);
if(chip!=null&&start>=0&&end>=0)
  editable.replace(start,end,chip);
sanitizeBetween();
if(mChipListener!=null)
  mChipListener.onDataChanged();
}
 
Example #8
Source File: MultiAutoCompleteTextView.java    From android_9.0.0_r45 with Apache License 2.0 5 votes vote down vote up
/**
 * <p>Performs the text completion by replacing the range from
 * {@link Tokenizer#findTokenStart} to {@link #getSelectionEnd} by the
 * the result of passing <code>text</code> through
 * {@link Tokenizer#terminateToken}.
 * In addition, the replaced region will be marked as an AutoText
 * substition so that if the user immediately presses DEL, the
 * completion will be undone.
 * Subclasses may override this method to do some different
 * insertion of the content into the edit box.</p>
 *
 * @param text the selected suggestion in the drop down list
 */
@Override
protected void replaceText(CharSequence text) {
    clearComposingText();

    int end = getSelectionEnd();
    int start = mTokenizer.findTokenStart(getText(), end);

    Editable editable = getText();
    String original = TextUtils.substring(editable, start, end);

    QwertyKeyListener.markAsReplaced(editable, start, end, original);
    editable.replace(start, end, mTokenizer.terminateToken(text));
}
 
Example #9
Source File: RecipientEditTextView.java    From talk-android with MIT License 5 votes vote down vote up
private boolean commitChip(int start, int end, Editable editable) {
    ListAdapter adapter = getAdapter();
    if (adapter != null && adapter.getCount() > 0 && enoughToFilter()
            && end == getSelectionEnd() && !isPhoneQuery()) {
        // choose the first entry.
        submitItemAtPosition(0);
        dismissDropDown();
        return true;
    } else {
        int tokenEnd = mTokenizer.findTokenEnd(editable, start);
        if (editable.length() > tokenEnd + 1) {
            char charAt = editable.charAt(tokenEnd + 1);
            if (charAt == COMMIT_CHAR_COMMA || charAt == COMMIT_CHAR_SEMICOLON) {
                tokenEnd++;
            }
        }
        String text = editable.toString().substring(start, tokenEnd).trim();
        clearComposingText();
        if (text != null && text.length() > 0 && !text.equals(" ")) {
            RecipientEntry entry = createTokenizedEntry(text);
            if (entry != null) {
                QwertyKeyListener.markAsReplaced(editable, start, end, "");
                CharSequence chipText = createChip(entry, false);
                if (chipText != null && start > -1 && end > -1) {
                    editable.replace(start, end, chipText);
                }
            }
            // Only dismiss the dropdown if it is related to the text we
            // just committed.
            // For paste, it may not be as there are possibly multiple
            // tokens being added.
            if (end == getSelectionEnd()) {
                dismissDropDown();
            }
            sanitizeBetween();
            return true;
        }
    }
    return false;
}
 
Example #10
Source File: RecipientEditTextView.java    From talk-android with MIT License 5 votes vote down vote up
/**
 * Remove selection from this chip. Unselecting a RecipientChip will render
 * the chip without a delete icon and with an unfocused background. This is
 * called when the RecipientChip no longer has focus.
 */
private void unselectChip(DrawableRecipientChip chip) {
    int start = getChipStart(chip);
    int end = getChipEnd(chip);
    Editable editable = getText();
    mSelectedChip = null;
    if (start == -1 || end == -1) {
        Log.w(TAG, "The chip doesn't exist or may be a chip a user was editing");
        setSelection(editable.length());
        commitDefault();
    } else {
        getSpannable().removeSpan(chip);
        QwertyKeyListener.markAsReplaced(editable, start, end, "");
        editable.removeSpan(chip);
        try {
            if (!mNoChips) {
                editable.setSpan(constructChipSpan(chip.getEntry(), false, false),
                        start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        } catch (NullPointerException e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }
    setCursorVisible(true);
    setSelection(editable.length());
    if (mAlternatesPopup != null && mAlternatesPopup.isShowing()) {
        mAlternatesPopup.dismiss();
    }
}
 
Example #11
Source File: TextChipsEditView.java    From talk-android with MIT License 5 votes vote down vote up
private boolean commitChip(int start, int end, Editable editable) {
    ListAdapter adapter = getAdapter();
    if (adapter != null && adapter.getCount() > 0 && enoughToFilter()
            && end == getSelectionEnd() && !isPhoneQuery()) {
        // choose the first entry.
        submitItemAtPosition(0);
        dismissDropDown();
        return true;
    } else {
        int tokenEnd = mTokenizer.findTokenEnd(editable, start);
        if (editable.length() > tokenEnd + 1) {
            char charAt = editable.charAt(tokenEnd + 1);
            if (charAt == COMMIT_CHAR_COMMA || charAt == COMMIT_CHAR_SEMICOLON) {
                tokenEnd++;
            }
        }
        String text = editable.toString().substring(start, tokenEnd).trim();
        clearComposingText();
        if (text != null && text.length() > 0 && !text.equals(" ")) {
            RecipientEntry entry = createTokenizedEntry(text);
            if (entry != null) {
                QwertyKeyListener.markAsReplaced(editable, start, end, "");
                CharSequence chipText = createChip(entry, false);
                if (chipText != null && start > -1 && end > -1) {
                    editable.replace(start, end, chipText);
                }
            }
            // Only dismiss the dropdown if it is related to the text we
            // just committed.
            // For paste, it may not be as there are possibly multiple
            // tokens being added.
            if (end == getSelectionEnd()) {
                dismissDropDown();
            }
            sanitizeBetween();
            return true;
        }
    }
    return false;
}
 
Example #12
Source File: RecipientEditTextView.java    From ChipsLibrary with Apache License 2.0 5 votes vote down vote up
/**
 * Remove selection from this chip. Unselecting a RecipientChip will render the chip without a delete icon and with
 * an unfocused background. This is called when the RecipientChip no longer has focus.
 */
private void unselectChip(final DrawableRecipientChip chip)
  {
  final int start=getChipStart(chip);
  final int end=getChipEnd(chip);
  final Editable editable=getText();
  mSelectedChip=null;
  if(start==-1||end==-1)
    {
    Log.w(TAG,"The chip doesn't exist or may be a chip a user was editing");
    setSelection(editable.length());
    commitDefault();
    }
  else
    {
    getSpannable().removeSpan(chip);
    QwertyKeyListener.markAsReplaced(editable,start,end,"");
    editable.removeSpan(chip);
    try
      {
      if(!mNoChips)
        editable.setSpan(constructChipSpan(chip.getEntry(),false,false),start,end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
      }
    catch(final NullPointerException e)
      {
      Log.e(TAG,e.getMessage(),e);
      }
    }
  setCursorVisible(true);
  setSelection(editable.length());
  if(mAlternatesPopup!=null&&mAlternatesPopup.isShowing())
    mAlternatesPopup.dismiss();
  }
 
Example #13
Source File: TokenCompleteTextView.java    From SocialTokenAutoComplete with Apache License 2.0 5 votes vote down vote up
@Override
protected void replaceText(CharSequence text) {
    clearComposingText();
    SpannableStringBuilder ssb = buildSpannableForText(text);
    TokenImageSpan tokenSpan = buildSpanForObject(selectedObject);

    Editable editable = getText();
    int end = getSelectionEnd();
    int start = tokenizer.findTokenStart(editable, end);
    if (start < prefix.length()) {
        start = prefix.length();
    }
    
    start = beforeReplacingText(editable,start,end);
    
    String original = TextUtils.substring(editable, start, end);

    if (editable != null) {
        if (tokenSpan == null) {
            editable.replace(start, end, " ");
        } else if (!allowDuplicates && objects.contains(tokenSpan.getToken())) {
            editable.replace(start, end, " ");
        } else {
            QwertyKeyListener.markAsReplaced(editable, start, end, original);
            editable.replace(start, end, ssb);
            editable.setSpan(tokenSpan, start, start + ssb.length() - 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }
    
    afterReplacingText(editable);
}
 
Example #14
Source File: RecipientEditTextView.java    From ChipsLibrary with Apache License 2.0 4 votes vote down vote up
private boolean commitChip(final int start,final int end,final Editable editable)
{
final ListAdapter adapter=getAdapter();
if(adapter!=null&&adapter.getCount()>0&&enoughToFilter()&&end==getSelectionEnd()&&!isPhoneQuery())
  {
  // choose the first entry.
  submitItemAtPosition(0);
  dismissDropDown();
  return true;
  }
else
  {
  int tokenEnd=mTokenizer.findTokenEnd(editable,start);
  if(editable.length()>tokenEnd+1)
    {
    final char charAt=editable.charAt(tokenEnd+1);
    if(charAt==COMMIT_CHAR_COMMA||charAt==COMMIT_CHAR_SEMICOLON)
      tokenEnd++;
    }
  final String text=editable.toString().substring(start,tokenEnd).trim();
  clearComposingText();
  if(text!=null&&text.length()>0&&!text.equals(" "))
    {
    final RecipientEntry entry=createTokenizedEntry(text);
    if(entry!=null)
      {
      QwertyKeyListener.markAsReplaced(editable,start,end,"");
      final CharSequence chipText=createChip(entry,false);
      if(chipText!=null&&start>-1&&end>-1)
        editable.replace(start,end,chipText);
      }
    // Only dismiss the dropdown if it is related to the text we
    // just committed.
    // For paste, it may not be as there are possibly multiple
    // tokens being added.
    if(end==getSelectionEnd())
      dismissDropDown();
    sanitizeBetween();
    return true;
    }
  }
return false;
}