Repository: incubator-weex Updated Branches: refs/heads/master a7bfb9a5f -> c20aad50a
*[feature] feature to copy text value Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/94ee706e Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/94ee706e Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/94ee706e Branch: refs/heads/master Commit: 94ee706e997c1e5dc17b10454f9a4497bf8ab609 Parents: 95e16d8 Author: misakuo <misa...@apache.org> Authored: Sat Feb 24 10:55:33 2018 +0800 Committer: misakuo <misa...@apache.org> Committed: Sat Feb 24 10:55:33 2018 +0800 ---------------------------------------------------------------------- .../java/com/taobao/weex/common/Constants.java | 1 + .../com/taobao/weex/ui/component/WXText.java | 17 ++++---- .../com/taobao/weex/ui/view/WXTextView.java | 43 ++++++++++++++++++++ 3 files changed, 51 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/94ee706e/android/sdk/src/main/java/com/taobao/weex/common/Constants.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java index 64b59c8..86ef336 100644 --- a/android/sdk/src/main/java/com/taobao/weex/common/Constants.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/Constants.java @@ -201,6 +201,7 @@ public class Constants { String STRATEGY = "strategy"; String ALLOW_COPY_PASTE = "allowCopyPaste"; + String ENABLE_COPY = "enableCopy"; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/94ee706e/android/sdk/src/main/java/com/taobao/weex/ui/component/WXText.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXText.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXText.java index 6a9a99a..bb1bd4b 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXText.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXText.java @@ -18,28 +18,19 @@ */ package com.taobao.weex.ui.component; -import android.content.BroadcastReceiver; import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.support.annotation.NonNull; -import android.support.v4.content.LocalBroadcastManager; import android.text.Layout; -import com.taobao.weex.WXEnvironment; import com.taobao.weex.WXSDKInstance; -import com.taobao.weex.WXSDKManager; import com.taobao.weex.annotation.Component; import com.taobao.weex.common.Constants; -import com.taobao.weex.dom.DOMActionContext; -import com.taobao.weex.dom.WXDomHandler; import com.taobao.weex.dom.WXDomObject; import com.taobao.weex.ui.ComponentCreator; import com.taobao.weex.ui.flat.FlatComponent; import com.taobao.weex.ui.flat.widget.TextWidget; import com.taobao.weex.ui.view.WXTextView; -import com.taobao.weex.utils.TypefaceUtil; -import com.taobao.weex.utils.WXLogUtils; +import com.taobao.weex.utils.WXUtils; import java.lang.reflect.InvocationTargetException; @@ -144,6 +135,12 @@ public class WXText extends WXComponent<WXTextView> implements FlatComponent<Tex return true; case Constants.Name.FONT_FAMILY: return true; + case Constants.Name.ENABLE_COPY: + boolean enabled = WXUtils.getBoolean(param, false); + if (getHostView() != null) { + getHostView().enableCopy(enabled); + } + return true; default: return super.setProperty(key, param); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/94ee706e/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java index a98be22..914171f 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXTextView.java @@ -18,11 +18,15 @@ */ package com.taobao.weex.ui.view; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.graphics.Canvas; import android.support.annotation.Nullable; +import android.support.v7.widget.PopupMenu; import android.text.Layout; import android.text.TextUtils; +import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; @@ -31,6 +35,7 @@ import com.taobao.weex.ui.view.gesture.WXGesture; import com.taobao.weex.ui.view.gesture.WXGestureObservable; import java.lang.ref.WeakReference; +import java.util.Locale; /** * TextView wrapper @@ -118,4 +123,42 @@ public class WXTextView extends View implements WXGestureObservable, IWXTextView public WXText getComponent() { return null != mWeakReference ? mWeakReference.get() : null; } + + public void enableCopy(boolean enable) { + if (enable) { + setOnLongClickListener(new OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + PopupMenu popupMenu = new PopupMenu(getContext(), WXTextView.this); + boolean isCN = false; + try { + isCN = Locale.getDefault().toString().startsWith("zh_CN"); + } catch (Throwable t) { + //ignore + } + final String title = isCN ? "å¤å¶" : "Copy"; + popupMenu.getMenu().add(title); + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + if (title.equals(item.getTitle())) { + String data = getText().toString(); + ClipboardManager clipboardManager = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE); + if (clipboardManager != null) { + ClipData clipData = ClipData.newPlainText(data, data); + clipboardManager.setPrimaryClip(clipData); + } + return true; + } + return false; + } + }); + popupMenu.show(); + return true; + } + }); + } else { + setOnLongClickListener(null); + } + } }