use of net.osmand.plus.widgets.EditTextEx in project Osmand by osmandapp.
the class CoordinateInputDialogFragment method setupEditTextEx.
private void setupEditTextEx(@IdRes int etId, int symbols, boolean lat) {
EditTextEx et = (EditTextEx) mainView.findViewById(etId);
et.setMaxSymbolsCount(symbols);
et.setHint(createString(symbols, lat ? 'x' : 'y'));
((LinearLayout.LayoutParams) et.getLayoutParams()).weight = symbols;
et.requestLayout();
}
use of net.osmand.plus.widgets.EditTextEx in project Osmand by osmandapp.
the class CoordinateInputDialogFragment method registerInputs.
private void registerInputs() {
TextWatcher textWatcher = new TextWatcher() {
private int strLength;
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
strLength = charSequence.length();
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
View focusedView = getDialog().getCurrentFocus();
if (focusedView != null && focusedView instanceof EditTextEx) {
EditTextEx et = (EditTextEx) focusedView;
int currentLength = et.getText().length();
if (et.getId() == R.id.lon_first_input_et) {
String lonFirstInput = et.getText().toString();
if (currentLength == 2) {
if (lonFirstInput.charAt(0) != '1' && lonFirstInput.charAt(0) != '0') {
switchEditText(et.getId(), true);
}
}
}
if (et.getMaxSymbolsCount() > 0 && currentLength > strLength && currentLength >= et.getMaxSymbolsCount()) {
switchEditText(et.getId(), true);
}
}
}
};
final GestureDetector gestureDetector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
return true;
}
});
View.OnTouchListener inputEditTextOnTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (isOsmandKeyboardOn()) {
if (!isOsmandKeyboardCurrentlyVisible()) {
if (softKeyboardShown) {
if (view.getId() != R.id.point_name_et) {
AndroidUtils.hideSoftKeyboard(getActivity(), view);
shouldShowOsmandKeyboard = true;
} else {
return false;
}
} else {
changeOsmandKeyboardVisibility(true);
}
}
EditText editText = (EditText) view;
int inputType = editText.getInputType();
editText.setInputType(InputType.TYPE_NULL);
boolean doubleTap = gestureDetector.onTouchEvent(motionEvent);
if (!doubleTap) {
editText.onTouchEvent(motionEvent);
editText.setSelection(editText.getText().length());
}
editText.setInputType(inputType);
return true;
} else {
if (isOsmandKeyboardCurrentlyVisible()) {
changeOsmandKeyboardVisibility(false);
}
return false;
}
}
};
View.OnLongClickListener inputEditTextOnLongClickListener = new View.OnLongClickListener() {
@Override
public boolean onLongClick(final View view) {
if (isOsmandKeyboardOn()) {
final EditText inputEditText = (EditText) view;
PopupMenu popupMenu = new PopupMenu(getContext(), inputEditText);
Menu menu = popupMenu.getMenu();
popupMenu.getMenuInflater().inflate(R.menu.copy_paste_menu, menu);
final ClipboardManager clipboardManager = ((ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE));
MenuItem pasteMenuItem = menu.findItem(R.id.action_paste);
if (clipboardManager == null || !clipboardManager.hasPrimaryClip() || !clipboardManager.getPrimaryClipDescription().hasMimeType(MIMETYPE_TEXT_PLAIN)) {
pasteMenuItem.setEnabled(false);
} else {
pasteMenuItem.setEnabled(true);
}
if (clipboardManager != null) {
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int i = item.getItemId();
if (i == R.id.action_copy) {
ClipData clip = ClipData.newPlainText("", inputEditText.getText().toString());
clipboardManager.setPrimaryClip(clip);
return true;
} else if (i == R.id.action_paste) {
ClipData.Item pasteItem = clipboardManager.getPrimaryClip().getItemAt(0);
CharSequence pasteData = pasteItem.getText();
if (pasteData != null) {
String str = inputEditText.getText().toString();
inputEditText.setText(str + pasteData.toString());
inputEditText.setSelection(inputEditText.getText().length());
}
return true;
}
return false;
}
});
popupMenu.show();
}
return true;
} else {
return false;
}
}
};
TextView.OnEditorActionListener inputTextViewOnEditorActionListener = new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
if (i == EditorInfo.IME_ACTION_NEXT) {
switchEditText(textView.getId(), true);
} else if (i == EditorInfo.IME_ACTION_DONE) {
addWptPt();
hasUnsavedChanges = true;
}
return false;
}
};
clearInputs();
Format format = getMyApplication().getSettings().COORDS_INPUT_FORMAT.get();
boolean useTwoDigitsLongtitude = getMyApplication().getSettings().COORDS_INPUT_TWO_DIGITS_LONGTITUDE.get();
setupEditTextEx(R.id.lat_first_input_et, format.getFirstPartSymbolsCount(true, useTwoDigitsLongtitude), true);
setupEditTextEx(R.id.lon_first_input_et, format.getFirstPartSymbolsCount(false, useTwoDigitsLongtitude), false);
String firstSeparator = format.getFirstSeparator();
((TextView) mainView.findViewById(R.id.lat_first_separator_tv)).setText(firstSeparator);
((TextView) mainView.findViewById(R.id.lon_first_separator_tv)).setText(firstSeparator);
int secondPartSymbols = format.getSecondPartSymbolsCount();
setupEditTextEx(R.id.lat_second_input_et, secondPartSymbols, true);
setupEditTextEx(R.id.lon_second_input_et, secondPartSymbols, false);
boolean containsThirdPart = format.isContainsThirdPart();
int visibility = containsThirdPart ? View.VISIBLE : View.GONE;
mainView.findViewById(R.id.lat_second_separator_tv).setVisibility(visibility);
mainView.findViewById(R.id.lon_second_separator_tv).setVisibility(visibility);
mainView.findViewById(R.id.lat_third_input_et).setVisibility(visibility);
mainView.findViewById(R.id.lon_third_input_et).setVisibility(visibility);
if (containsThirdPart) {
String secondSeparator = format.getSecondSeparator();
((TextView) mainView.findViewById(R.id.lat_second_separator_tv)).setText(secondSeparator);
((TextView) mainView.findViewById(R.id.lon_second_separator_tv)).setText(secondSeparator);
int thirdPartSymbols = format.getThirdPartSymbolsCount();
setupEditTextEx(R.id.lat_third_input_et, thirdPartSymbols, true);
setupEditTextEx(R.id.lon_third_input_et, thirdPartSymbols, false);
}
addEditTexts(R.id.lat_first_input_et, R.id.lat_second_input_et, R.id.lat_third_input_et, R.id.lon_first_input_et, R.id.lon_second_input_et, R.id.lon_third_input_et, R.id.point_name_et);
for (EditText et : editTexts) {
if (et.getId() == R.id.lon_first_input_et) {
((LinearLayout.LayoutParams) et.getLayoutParams()).weight = editTexts.get(0).getMaxSymbolsCount();
et.requestLayout();
}
if (et.getId() != R.id.point_name_et) {
et.addTextChangedListener(textWatcher);
} else {
et.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus && isOsmandKeyboardOn() && (isOsmandKeyboardCurrentlyVisible() || softKeyboardShown)) {
AndroidUtils.hideSoftKeyboard(getActivity(), v);
}
}
});
}
et.setOnTouchListener(inputEditTextOnTouchListener);
et.setOnLongClickListener(inputEditTextOnLongClickListener);
et.setOnEditorActionListener(inputTextViewOnEditorActionListener);
}
changeEditTextSelections();
editTexts.get(0).requestFocus();
}
Aggregations