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