16142a54baae3289f734947c6b5375b12eb0fb722Chris Banes/*
26142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * Copyright (C) 2016 The Android Open Source Project
36142a54baae3289f734947c6b5375b12eb0fb722Chris Banes *
46142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * Licensed under the Apache License, Version 2.0 (the "License");
56142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * you may not use this file except in compliance with the License.
66142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * You may obtain a copy of the License at
76142a54baae3289f734947c6b5375b12eb0fb722Chris Banes *
86142a54baae3289f734947c6b5375b12eb0fb722Chris Banes *      http://www.apache.org/licenses/LICENSE-2.0
96142a54baae3289f734947c6b5375b12eb0fb722Chris Banes *
106142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * Unless required by applicable law or agreed to in writing, software
116142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * distributed under the License is distributed on an "AS IS" BASIS,
126142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * See the License for the specific language governing permissions and
146142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * limitations under the License
156142a54baae3289f734947c6b5375b12eb0fb722Chris Banes */
166142a54baae3289f734947c6b5375b12eb0fb722Chris Banes
17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.appcompat.widget;
186142a54baae3289f734947c6b5375b12eb0fb722Chris Banes
19ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;
208e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas
213de8a4e8305507475d7890205184946a25cf45e7Aurimas Liutikasimport android.view.MenuItem;
223de8a4e8305507475d7890205184946a25cf45e7Aurimas Liutikas
23ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.annotation.NonNull;
24ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.annotation.RestrictTo;
25ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.appcompat.view.menu.MenuBuilder;
266142a54baae3289f734947c6b5375b12eb0fb722Chris Banes
276142a54baae3289f734947c6b5375b12eb0fb722Chris Banes/**
286142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * An interface notified when a menu item is hovered. Useful for cases when hover should trigger
296142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * some behavior at a higher level, like managing the opening and closing of submenus.
306142a54baae3289f734947c6b5375b12eb0fb722Chris Banes *
316142a54baae3289f734947c6b5375b12eb0fb722Chris Banes * @hide
326142a54baae3289f734947c6b5375b12eb0fb722Chris Banes */
338e10080c914d1ad0784394fa3026b85535535847Aurimas Liutikas@RestrictTo(LIBRARY_GROUP)
346142a54baae3289f734947c6b5375b12eb0fb722Chris Banespublic interface MenuItemHoverListener {
356142a54baae3289f734947c6b5375b12eb0fb722Chris Banes    /**
366142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     * Called when hover exits a menu item.
376142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     * <p>
386142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     * If hover is moving to another item, this method will be called before
396142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     * {@link #onItemHoverEnter(MenuBuilder, MenuItem)} for the newly-hovered item.
406142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     *
416142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     * @param menu the item's parent menu
426142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     * @param item the hovered menu item
436142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     */
446142a54baae3289f734947c6b5375b12eb0fb722Chris Banes    void onItemHoverExit(@NonNull MenuBuilder menu, @NonNull MenuItem item);
456142a54baae3289f734947c6b5375b12eb0fb722Chris Banes
466142a54baae3289f734947c6b5375b12eb0fb722Chris Banes    /**
476142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     * Called when hover enters a menu item.
486142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     *
496142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     * @param menu the item's parent menu
506142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     * @param item the hovered menu item
516142a54baae3289f734947c6b5375b12eb0fb722Chris Banes     */
526142a54baae3289f734947c6b5375b12eb0fb722Chris Banes    void onItemHoverEnter(@NonNull MenuBuilder menu, @NonNull MenuItem item);
536142a54baae3289f734947c6b5375b12eb0fb722Chris Banes}