|
|
|
@ -38,6 +38,10 @@ import net.micode.notes.ui.activities.NoteEditActivity;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 笔记编辑控件
|
|
|
|
|
* 扩展了默认控件的一些基础功能
|
|
|
|
|
*/
|
|
|
|
|
public class NoteEditText extends EditText {
|
|
|
|
|
private static final String TAG = "NoteEditText";
|
|
|
|
|
private int mIndex;
|
|
|
|
@ -47,8 +51,8 @@ public class NoteEditText extends EditText {
|
|
|
|
|
private static final String SCHEME_HTTP = "http:";
|
|
|
|
|
private static final String SCHEME_EMAIL = "mailto:";
|
|
|
|
|
|
|
|
|
|
private static final Map<String, Integer> sSchemaActionResMap = new HashMap<String, Integer>();
|
|
|
|
|
|
|
|
|
|
private static final Map<String, Integer> sSchemaActionResMap = new HashMap<>();
|
|
|
|
|
// 静态初始化
|
|
|
|
|
static {
|
|
|
|
|
sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel);
|
|
|
|
|
sSchemaActionResMap.put(SCHEME_HTTP, R.string.note_link_web);
|
|
|
|
@ -76,22 +80,32 @@ public class NoteEditText extends EditText {
|
|
|
|
|
*/
|
|
|
|
|
void onTextChange(int index, boolean hasText);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 文本视图改变事件监听器
|
|
|
|
|
*/
|
|
|
|
|
private OnTextViewChangeListener mOnTextViewChangeListener;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构造器
|
|
|
|
|
*/
|
|
|
|
|
public NoteEditText(Context context) {
|
|
|
|
|
super(context, null);
|
|
|
|
|
mIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置索引值
|
|
|
|
|
*/
|
|
|
|
|
public void setIndex(int index) {
|
|
|
|
|
mIndex = index;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 绑定 文本视图改变事件监听器
|
|
|
|
|
*/
|
|
|
|
|
public void setOnTextViewChangeListener(OnTextViewChangeListener listener) {
|
|
|
|
|
mOnTextViewChangeListener = listener;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构造器
|
|
|
|
|
*/
|
|
|
|
|
public NoteEditText(Context context, AttributeSet attrs) {
|
|
|
|
|
super(context, attrs, android.R.attr.editTextStyle);
|
|
|
|
|
}
|
|
|
|
@ -101,6 +115,9 @@ public class NoteEditText extends EditText {
|
|
|
|
|
// TODO Auto-generated constructor stub
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 点击事件
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onTouchEvent(MotionEvent event) {
|
|
|
|
|
switch (event.getAction()) {
|
|
|
|
@ -123,6 +140,12 @@ public class NoteEditText extends EditText {
|
|
|
|
|
return super.onTouchEvent(event);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 按下键
|
|
|
|
|
* @param keyCode 按键对应编码
|
|
|
|
|
* @param event 键盘事件
|
|
|
|
|
* @return boolean 是否成功处理
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
|
|
|
|
switch (keyCode) {
|
|
|
|
@ -140,6 +163,12 @@ public class NoteEditText extends EditText {
|
|
|
|
|
return super.onKeyDown(keyCode, event);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 松开键
|
|
|
|
|
* @param keyCode 键对应编码
|
|
|
|
|
* @param event 键盘事件
|
|
|
|
|
* @return 是否处理成功
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
|
|
|
|
switch (keyCode) {
|
|
|
|
@ -169,6 +198,12 @@ public class NoteEditText extends EditText {
|
|
|
|
|
return super.onKeyUp(keyCode, event);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 焦点事件改变
|
|
|
|
|
* @param focused 改变的结果是对焦还是失焦
|
|
|
|
|
* @param direction 方向
|
|
|
|
|
* @param previouslyFocusedRect 上一个聚焦的区域
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
|
|
|
|
|
if (mOnTextViewChangeListener != null) {
|
|
|
|
@ -181,6 +216,10 @@ public class NoteEditText extends EditText {
|
|
|
|
|
super.onFocusChanged(focused, direction, previouslyFocusedRect);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 菜单内容初始化
|
|
|
|
|
* @param menu 菜单
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
protected void onCreateContextMenu(ContextMenu menu) {
|
|
|
|
|
if (getText() instanceof Spanned) {
|
|
|
|
|