diff options
| author | Leon Scroggins <scroggo@google.com> | 2010-08-24 14:16:09 -0400 |
|---|---|---|
| committer | Leon Scroggins <scroggo@google.com> | 2010-09-01 11:48:05 -0400 |
| commit | fe026bdd3c0fd7543ceaf0732aeb824cfddb5b23 (patch) | |
| tree | 6932b960661cd888cefee97ed95eb0614a981c30 /core/java/android/webkit/SelectActionModeCallback.java | |
| parent | e1ab2228e27fc216d52426f13ae30ae244c64140 (diff) | |
Move Find on page and Select ActionModes to framework.
Bug: 2938052
Requires a change to packages/apps/Browser
Change-Id: I1bb1a47610b06c4bb02ef08647c02cc1dcaddb15
Diffstat (limited to 'core/java/android/webkit/SelectActionModeCallback.java')
| -rw-r--r-- | core/java/android/webkit/SelectActionModeCallback.java | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/core/java/android/webkit/SelectActionModeCallback.java b/core/java/android/webkit/SelectActionModeCallback.java new file mode 100644 index 000000000000..cf919022d022 --- /dev/null +++ b/core/java/android/webkit/SelectActionModeCallback.java @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.webkit; + +import android.provider.Browser; +import android.webkit.WebView; +import android.view.ActionMode; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; + +class SelectActionModeCallback implements ActionMode.Callback { + private WebView mWebView; + private View mTitleBar; + private ActionMode mActionMode; + + void setWebView(WebView webView) { + mWebView = webView; + } + + void setTitleBar(View v) { mTitleBar = v; } + + void finish() { + mActionMode.finish(); + } + + // ActionMode.Callback implementation + + @Override + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + mode.getMenuInflater().inflate(com.android.internal.R.menu.webview_copy, + menu); + mode.setTitle(com.android.internal.R.string.textSelectionCABTitle); + mActionMode = mode; + return true; + } + + @Override + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + return true; + } + + @Override + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + switch(item.getItemId()) { + case android.R.id.copy: + mWebView.copySelection(); + mode.finish(); + break; + + case com.android.internal.R.id.share: + String selection = mWebView.getSelection(); + Browser.sendString(mWebView.getContext(), selection); + mode.finish(); + break; + + case com.android.internal.R.id.select_all: + mWebView.selectAll(); + break; + + case com.android.internal.R.id.find: + String sel= mWebView.getSelection(); + mode.finish(); + mWebView.showFindDialog(sel); + break; + + default: + return false; + } + return true; + } + + @Override + public void onDestroyActionMode(ActionMode mode) { + if (mTitleBar != null) mWebView.setEmbeddedTitleBar(mTitleBar); + mWebView.selectionDone(); + } +} |
