18123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes/* 28123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * Copyright (C) 2013 The Android Open Source Project 38123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * 48123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * Licensed under the Apache License, Version 2.0 (the "License"); 58123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * you may not use this file except in compliance with the License. 68123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * You may obtain a copy of the License at 78123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * 88123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * http://www.apache.org/licenses/LICENSE-2.0 98123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * 108123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * Unless required by applicable law or agreed to in writing, software 118123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * distributed under the License is distributed on an "AS IS" BASIS, 128123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * See the License for the specific language governing permissions and 148123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes * limitations under the License. 158123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes */ 168123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes 178123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banespackage android.support.v7.app; 188123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes 1949c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.annotation.TargetApi; 204c2a95906254748cb9a843b061288265d6e185a9Chris Banesimport android.content.Context; 2149c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.os.Build; 224c2a95906254748cb9a843b061288265d6e185a9Chris Banesimport android.support.v7.internal.view.SupportActionModeWrapper; 2349c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.support.v7.internal.widget.NativeActionModeAwareLayout; 2449c78900da0d43140fb602431fb93212bd7f6c70Chris Banesimport android.view.ActionMode; 25dea1122145ed85590d298a3a9d88ba9f9e2f5f46Chris Banesimport android.view.KeyEvent; 264c2a95906254748cb9a843b061288265d6e185a9Chris Banesimport android.view.View; 2749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 2849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes@TargetApi(Build.VERSION_CODES.HONEYCOMB) 2949c78900da0d43140fb602431fb93212bd7f6c70Chris Banesclass ActionBarActivityDelegateHC extends ActionBarActivityDelegateBase 3049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes implements NativeActionModeAwareLayout.OnActionModeForChildListener { 3149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 3249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes private NativeActionModeAwareLayout mNativeActionModeAwareLayout; 338123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes 348123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes ActionBarActivityDelegateHC(ActionBarActivity activity) { 358123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes super(activity); 368123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes } 378123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes 388123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes @Override 3949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes void onSubDecorInstalled() { 404c2a95906254748cb9a843b061288265d6e185a9Chris Banes // NativeActionModeAwareLayout is used to notify us when a native Action Mode is started 4149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes mNativeActionModeAwareLayout = (NativeActionModeAwareLayout) mActivity 42de9f38cc4a30b33ac46b105edf470fbc4a044e99Chris Banes .findViewById(android.R.id.content); 4349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 4449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes // Can be null when using FEATURE_ACTION_BAR_OVERLAY 4549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes if (mNativeActionModeAwareLayout != null) { 4649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes mNativeActionModeAwareLayout.setActionModeForChildListener(this); 4749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 4849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 4949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 5049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes // From NativeActionModeAwareLayout.OnActionModeForChildListener 5149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 524c2a95906254748cb9a843b061288265d6e185a9Chris Banes public ActionMode startActionModeForChild(View originalView, ActionMode.Callback callback) { 534c2a95906254748cb9a843b061288265d6e185a9Chris Banes Context context = originalView.getContext(); 540bf48858279237f95d6aad565a074490745491cdChris Banes 550bf48858279237f95d6aad565a074490745491cdChris Banes // Try and start a support action mode, wrapping the callback 560bf48858279237f95d6aad565a074490745491cdChris Banes final android.support.v7.view.ActionMode supportActionMode = startSupportActionMode( 570bf48858279237f95d6aad565a074490745491cdChris Banes new SupportActionModeWrapper.CallbackWrapper(context, callback)); 580bf48858279237f95d6aad565a074490745491cdChris Banes 590bf48858279237f95d6aad565a074490745491cdChris Banes if (supportActionMode != null) { 600bf48858279237f95d6aad565a074490745491cdChris Banes // If we received a support action mode, wrap and return it 610bf48858279237f95d6aad565a074490745491cdChris Banes return new SupportActionModeWrapper(mActivity, supportActionMode); 620bf48858279237f95d6aad565a074490745491cdChris Banes } 630bf48858279237f95d6aad565a074490745491cdChris Banes return null; 648123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes } 658123e4b3d19031e34a60c0db202f0b3d100eb9d8Chris Banes} 66